APP下载

基于STM32的便携式多功能数字示波器设计

2015-06-05张浩然浙江师范大学数理与信息工程学院浙江金华321004

网络安全与数据管理 2015年15期
关键词:示波器调用波形

刘 帅,张浩然(浙江师范大学 数理与信息工程学院,浙江 金华321004)

基于STM32的便携式多功能数字示波器设计

刘 帅,张浩然
(浙江师范大学 数理与信息工程学院,浙江 金华321004)

本设计是基于STM32平台,移植μC/OS-Ⅱ嵌入式操作系统和μCGUI嵌入式应用图形支持系统,形成一个完善的有人机接口的实时嵌入式系统,在这个平台上设计制作一个便携式多功能数字示波器,采用STM32高性能ARM处理器作为核心控制芯片,显示器选用TFT真彩液晶。实时性高,人机界面友好,具有很好的推广使用价值,可广泛应用于信号采集、工程实践等领域。

嵌入式系统;数字示波器;μC/OS-Ⅱ;μCGUI;STM32

0 引言

目前平台化、集成化成为示波器发展的重要趋势。市场上存在的示波器,一般把目标定位在产品的高性能和强大功能的竞争上,造成市场上的模拟及数字示波器一般价格高昂、体积较大且很多专业功能并不实用。更便宜、更小巧、更方便使用的示波器成为当今市场的主流需求,使用者们需要借助具有各种功能的、方便携带的、小巧灵活的测试工具,来验证和解决越来越多的高复杂性问题。

1 系统设计理念

随着嵌入式处理器的快速发展,STM32系列针对高性能、低成本、低功耗需求的嵌入式应用专门设计的ARM芯片,系统时钟频率高达72 MHz,内部外设丰富,STM32功耗36 mA,是32位市场上功耗最低的产品。基于STM32嵌入式平台设计的便携式多功能数字示波器,移植μC/OS-II实时多任务操作系统[1]和μCGUI图形支持系统,形成一个完善的有人机接口的实时嵌入式精密测量仪器,通过数字插值算法和快速傅里叶算法处理[2],可以进行频谱分析。通过STM32内部自带高速AD模块,实现高速采样,采样速度可以达到3 MHz。具有边沿触发模式选择、自动捕捉波形、复位、暂停、波形存储、频率和幅值拉伸缩小、波形整体平移、峰-峰值、有效值、频率、周期、占空比显示、频谱分析等功能。由于采用高速集成处理器,外设资源丰富,简化了电路板的设计制作,更加便携,功能多样。

2 系统硬件设计

基于STM32的便携式多功能数字示波器的设计原理如图1所示。其中,阻抗匹配电路3采用电压跟随器电路,增大输入阻抗和减小输出阻抗,实现对微弱信号的无衰减的传输;程控放大电路5采用高带宽运放和模拟开关串联实现;数模转换器[3]10采用主控芯片内部集成的高速AD模块,转换速度可达1 MHz,充分利用STM32内部自带的3个AD模块,采用交叉互补采样模式,可以实现3 MHz的采样速率。由于STM32内部自带的AD无法对负电压进行采集,通过设计加法器6将负压抬高到零电平以上,过压保护电路7防止高电压对处理器造成损害。为了使示波器工作在触发模式,系统中需要有个触发电平,这里的触发电平由斯密特触发器电路8产生,同时用来对频率进行计数。波形存储模块11采用通用的SD卡,STM32有专属的SPI和SD接口协议与其通信,SPI串行通信接口读写速度可达18 MHz。液晶显示模块13采用TFT真彩液晶;触摸屏模块12采用电阻式触摸屏,其抗干扰能力强于电容屏,两个模块都集成在一块屏幕上,采用并行数据总线,读写方便,速度快。

图1 基于STM32的便携式多功能数字示波器原理框图

信号调理电路[4]如图 2所示,考虑到对处理器的保护作用,特别在信号的输入端和输出端加上过压保护二极管进行钳压保护,输入钳制在-5.0 V~+5.0 V之间,防止信号调理电路的烧毁,输出钳制在0~3.3 V之间,防止主控芯片因超出额定电源电压而损坏。

运算放大器采用高带宽、共模抑制比大的单片集成双运放的AD827,其原本是为视频电路设计的,增益带宽达50 MHz,SR达到 300 V/μs,是目前市场上电压反馈型双运放的顶级产品,其高频特性非常优越,在±5 V的供电下仍有优异的性能,放大3 MHz的高频信号没有衰减和相位偏移现象出现。所有的集成电路的电源管脚都相应地加上10 μF和0.1 μF去耦滤波电容。

模拟开关采用 CD4052,CD4052是一个差分 4通道数字控制模拟开关,有A、B两个二进制控制输入端和INH输入,具有低导通阻抗和很低的截止漏电流。0~5.0 V的数字信号可控制-13.5~+5.0 V的模拟信号,幅值为4.5~20 V的数字信号可控制峰峰值至 20 V的模拟信号。

3 软件设计

在整个设计中,核心部分是软件设计,包括 μC/OS多任务操作系统和μCGUI图形界面系统的移植、波形的检测、处理、显示等。

3.1任务的建立

操作系统μC/OS-II移植好了之后,需要建立四个任务,分别为:

任务一:static void APP_TaskStart(void*pdata),主要作用是建立任务二、三、四并执行它们,运行结束后便将其挂起,挂起函数用 OSTaskSuspend(OS_PRIO_SELF)来实现,之后由int main(void)进行建立和执行。

任务二:static void Task_TouchScreen(void*pdata),主要作用是连续地监视和刷新触摸板,该触摸屏驱动程序通过调用函数GUI_TOUCH_Exec()实现,该函数在它辨认出一个动作已经执行或者情况有所变化时,调用μCGUI提供的触摸屏API函数,大约每秒调用100次。

任务三:static void Task_GUIExce(void*pdata),主要作用是执行回调函数(一般是重绘窗口),通过调用函数GUI_Exec()实现,该函数会自动重复调用 GUI_Exec1()直到它完成全部工作。通常该函数不需要被用户应用程序调用,它自动地被GUI_Delay()所调用。

任务四:static void Task_MainTask(void*pdata),它是整个应用程序的核心,包括液晶界面的显示、触摸板信号的处理、波形信号的采集、计算、显示等操作。

3.2图形界面设计

人机界面显示采用 TFT液晶,分辨率为320×240,触摸板采用电阻式的触摸屏。驱动库采用μCGUI,支持液晶和触摸板的应用,并且功能强大。界面采用的是比较绚丽的坐标网格形式,主要调用下列函数。

(1)void GuiMainTask(void),该函数中调用了三个函数,GUI_CreateDialogBox()创建对话框,内部包含多个按钮控件和滑动条控件,用于实现人机交换。WM_CreateWindow()创建一个窗口函数,用来显示版本的基本信息,包括产品名称、编号。WM_CreateWindow()创建一个窗口函数,用来显示所测波形的频率、周期、占空比、幅值等信息。

(2)void WaveTaskCreat(void),该函数中主要调用GRAPH的一些控件,用来创建一个波形显示的网格窗口,可以实现波形的显示,波形的X、Y轴的拉伸、平移功能。

此外还包括上升沿触发、下降沿触发、单次触发(毛刺触发)、自动、复位的触发响应和后台处理程序。通过事件响应机制以及回调函数 GUI_Exec()进行图像的重画,运行后的显示界面如图3所示。

图3 人机界面

3.3波形检测与处理程序设计

波形检测和处理部分[5]采用单片机内部自带的高速A/D和强大的TIM实现。A/D单元的作用是将连续的模拟信号转变为离散的数字序列,然后按照数字序列的先后顺序重建波形。定时器TIM既要为A/D提供可变的采样时基,也要实时捕捉由斯密特触发器整形好的脉冲信号上升沿、下降沿的触发时间,为后期信号的频率、周期、占空比、幅值计算做准备。

3.3.1波形检测程序

A/D转换:STM32增强型芯片内置3个独立A/D,可以有21个通道,并且3个A/D可以并行地同步采样,触发方式很灵活,可以通过TIM以及外部电平等方式触发,并行方式下AD3、AD2自动同步于AD1;A/D在最高速采样时需要1.5+12.5个时钟周期,在14 MHz的AC时钟下达到1 MS/s的速度。

采样频率控制:由于STM32内部的4个TIM非常强大,每个TIM又有4个通道,再加上独立的预分配器,实际上可以实现任意分频,因此用TIM2 CC2来产生指定频率的时钟,用来触发A/D连续采样。

采样数据传输及每次采样深度控制:A/D产生的转换数据通过高速DMA通道1、2、3来传输到指定的内部RAM中,并且将DMA中断优先级设置成最高优先级,以保证数据读取准确,用DMA每次传输的个数来控制采样的深度,例如要采集100个,那么就设置DMA传输100次,每次从 16位A/D转换寄存器传输一个16位数据到RAM中,等完成了100次传输后,DMA通道自动停止 (实际上A/D是一直按照要求的采样频率在后台连续采样,只是未去取数据而已),下次采集时只要再设置采样的个数就行了。

采用外中断的形式,外面波形数据先不采集,先让它通过一个比较器,比如比较器的基准电压是 1.0 V,也就是每次都与1.0 V比较。当波形电压大于 1.0 V时,比较器输出高电平,高电平接到单片机外中断口,外中断就被触发。然后开始采集,这样就能保证每帧数据的起始点都相同。定时器的捕捉模式设置成双沿捕捉,从而可以捕捉波形的上升沿和下降沿。

3.3.2处理程序

对采集好的数据,首先要将数据中最大的和最小的找出来,并根据放大倍数计算出波形的峰峰值,通过读取缓存中的数据计算,转换成真实电压值。通过定时器捕捉到的波形连续的上升沿、下降沿和上升沿三次时间T1、T2、T3,从而计算出待测波形的周期=T3-T1和占空比=(T2-T1)/(T3-T1)。将数据一次性放到液晶上进行显示,通过调用 μCGUI内部自带的 GRAPH_DATA_ YT_AddValue()函数,可以实现多浮点处理数据并显示,其功能非常强大,程序流程如图4所示。

4 系统测试

不同频率下测量占空比为50%、峰峰值为 1.25 V的方波的检测波形图如5所示,方波测试数据如表1。

图5 方波测试图

表1 方波测试数据

不同频率下测量占空比为 50%、峰峰值为 1.25 V的正弦波的检测波形图如6所示,正弦波数据如表2。

图6 正弦波测试图

表2 正弦波数据

不同频率下测量占空比为 50%、峰峰值为 1.25 V的三角波的检测波形图如7所示,三角波数据如表3。

Design of portable multi-function digital oscilloscope based on STM32

Liu Shuai,Zhang Haoran
(School of Mathematics,Physics and Information Engineering,Zhejiang Normal University,Jinhua 321004,China)

The design is based on the STM32 platform,transplanting μC/OS-Ⅱembedded operating system and μCGUI graphics support system for embedded applications,forming a perfect real-time embedded system with man-machine interface.A portable multifunction digital oscilloscope is designed on this platform.The high-performance STM32 ARM processor is used as the core control chip,and TFT color LCD monitor is used as displayer.It is with high real-time,friendly interface.It can be widely used to promote the use of signal acquisition,engineering and other areas of practice.It has a good value.

embedded systems;digital oscilloscope;μC/OS-II;μCGUI;STM32

TH89

A

1674-7720(2015)15-0037-03

刘帅,张浩然.基于STM32的便携式多功能数字示波器设计[J].微型机与应用,2015,34(15):37-39,43.

猜你喜欢

示波器调用波形
核电项目物项调用管理的应用研究
用于SAR与通信一体化系统的滤波器组多载波波形
一款教学示波器的Y通道设计与实现
可携带式虚拟双踪示波器
基于系统调用的恶意软件检测技术研究
基于TEGRA K1的实时信号处理示波器的设计
Pareto最优稀疏频率雷达波形设计
基于ARM的任意波形电源设计
双丝双正弦电流脉冲波形控制
利用RFC技术实现SAP系统接口通信