【《某便携式数字示波器的硬件和软件系统设计案例分析》7800字(论文)】_第1页
【《某便携式数字示波器的硬件和软件系统设计案例分析》7800字(论文)】_第2页
【《某便携式数字示波器的硬件和软件系统设计案例分析》7800字(论文)】_第3页
【《某便携式数字示波器的硬件和软件系统设计案例分析》7800字(论文)】_第4页
【《某便携式数字示波器的硬件和软件系统设计案例分析》7800字(论文)】_第5页
已阅读5页,还剩16页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

某便携式数字示波器的硬件和软件系统设计案例分析目录TOC\o"1-3"\h\u4456某便携式数字示波器的硬件和软件系统设计案例分析 1253041便携式数字示波器硬件设计与实现 1235391.1核心控制器及其外设设计与实现 1266361.1.1STM32F103ZET6 1241751.1.2A/D转换器(ADC) 2267341.1.3FSMC与TFTLCD 229251.1.4DMA 415851.1.5定时器 4139651.2前级调理电路设计 581111.3便携式数字示波器的硬件最终方案 784771.4便携式数字示波器的硬件接口的实现 892242.便携式数字示波器软件设计与实现 1232232.1便携式数字示波器软件设计 12107892.1.1操作系统的任务分配与调度 1226122.1.2emWin图形库 13175472.1.3各次谐波赋值计算与快速傅里叶变换 14143162.2便携式数字示波器的开发环境搭建 1583962.3便携式数字示波器软件实现及程序流程 16242133系统性能测试 18142503.1便携式数字示波器的运行测试 18169113.2便携式数字示波器的性能测试 19151383.2.1便携式数字示波器的性能测试 19152503.2.2便携式数字示波器的功能测试 211便携式数字示波器硬件设计与实现1.1核心控制器及其外设设计与实现1.1.1STM32F103ZET6STM32是嵌入式系统开发中最受欢迎的一款单片机。在本次设计中所选取的是其F1系列,工作频率为72MHz,由2.0-1.6V的直流电源供电。片上集成有Flash和SRAM存储器,芯片内部拥有3个可以结合DMA使用的12位精度ADC,这是设计便携式数字示波器是最为关键的外设。同时STM32F1还拥有普通定时器、高级定时器和看门狗定时器的外设。在本次设计中,由定时器产生的时间脉冲来使ADC进行规律采集,并可以通过特定的脉冲来使DAC产生测试波形,形成自测试功能。本次设计硬件平台正点原子精英版STM32开发板,如图3-1:图3-1STM32F103ZET6开发板1.1.2A/D转换器(ADC)STM32F103系列有3个精度为12位的模数转换器。在本次设计过程中所采用的ADC1拥有16个外部通道,各通道可以根据设计需求选择单次、连续、扫描或间断执行的工作方式,最终可以选择左对齐或者右对齐的方式将结果储存至Flash。在STM32F1的时钟树里,ADC的时钟频率由PCLK2分频产生,最大工作时钟频率不得超过14MHz,频率过高会导致采样精度严重下降。ADC输入范围为0-1.3V,采集幅值大于该值的信号可能会造成击穿,在使用中应当特别注意。与通信协议类似,ADC也有其触发信号。一是修改控制寄存器CR2的ADON位的电平来触发信号采集的启停。在STM32所提供的官方库中有关于该寄存器的API函数,直接调用即可进行开启或关闭。二是通过中断触发,可以使用定时器或者外部中断来发送触发信号。在本次设计中即采用定时器中断来让ADC进行周期性的转换。在ADC采集过程中,还需要注意的参数时输入时钟、采样周期和转换时间,他们之间的关系为转换时间=采样时间+12.5个周期,其中12.5个周期为常量不可更改。采集时钟周期设置是完全建立在输入时钟周期之上进行的,在初始化了输入时钟后才可确定采样周期的数值。同时该系列单片机有一大特色是每个ADC通道可以配置不同的采样周期,数值越小精度越高。在本次设计过程中,采用的是单通道单次采集的工作方式,ADC被分配的时钟为是12M(该值已经是最大值),采样周期的值设置为239.5。1.1.3FSMC与TFTLCD(1)FSMCFlexiblestaticmemorycontroller(FSMC),即灵活的静态存储控制器。主要用途是在AHB总线和外设之间进行数据通信事务转换,并满足不同设备访问的时序要求,经常用于Flash的数据交互。在本次设计中,TFTLCD屏幕将通过FSMC的接口与STM32相连。但是FSMC有一个很明显的缺点是一次只能访问一个外部器件,主要原因在于由于各个设备有属于自己的片选信号,一次只能选择一个片选信号进行交互[11]。图3-2FSMC框图及其寄存器(2)TFTLCD屏幕TFT(ThinFilmTransistor)即薄膜场效应晶体管,属于有源矩阵液晶显示器。其工作原理是通过电信号来驱动晶体管,每个晶体管为1个像素点,最终通过软件编程来将像素点组合成想要的画面。该设备具备可靠性提高、环保特性好、适用范围宽、制造技术简单、成本低的优点,广泛用于各类嵌入式设备的屏幕显示。在本次设计过程中,采用2.3寸的TFTLCD屏幕来进行最终的波形显示[12]。图3-3TFTLCD显示屏1.1.4DMADMA(DirectMemoryAccess,直接存储器访问)是单片机中一个用于节省CPU资源使用的外设。单片机在进行工作时,数据经常需要在不同地址之间搬运。正常情况下这个操作由CPU来完成,但是这会使CPU出现大量中断负载,严重降低工作效率。而DMA存在的意义就是协助CPU完成不同地址间数据的传输。这样的操作可以避免CPU将资源倾斜在无意义的数据搬运上,从而有更多的精力去处理其他工作,这个功能对于高效能嵌入式系统算法和网络是很重要的。正常情况下总线的控制权在CPU手上,但在使用DMA来传输数据时,DMA会暂时获得总线是使用权。因此在DMA传输过程中先要向CPU发起请求,得到CPU同意后DMA开始响应,并开始数据的传输。当数据传输结束后会自动将总线控制权归还给CPU。整个传输作业大致分为请求、响应、传输、结束4个步骤。在本次设计中,我们使用DMA2的4通道来响应ADC或DAC的请求。1.1.5定时器STM32F1系列单片机的标准定时器挂载在APB1总线上,具备16位的向上、向下以及向上/下三种计数方式,拥有自动装载的功能;每个标准定时器都有4个独立通道,可以通过设置预分频值、自动重装载值的参数以及定时器中断服务程序来完成不同的任务。标准定时器的工作过程图如下:图3-4标准定时器工作过程在本次设计中,使用了TIM2和TIM3两个定时器。TIM2负责为ADC定时采集提供服务。TIM3为DAC产出测试波形服务。1.2前级调理电路设计(1)阻容衰减电路阻容衰减电路在本次设计过程中属于前级调理电路最开始的电路,其主要功能是完成对信号的补偿。该电路的原理是利用电容在不同频率交流信号下会产生不同的容抗,通过容抗之间的搭配来完成对最大工作电压的限制和信号的补偿。电容在本级电路中主要承担的责任是限制电流和动态分配电容器和负载两端电压。在本次设计过程中,必须首先确定负载最大工作电流,然后来计算电容值的取值。具体电路实现如图:图3-5阻容衰减电路设计(2)程控增益电路在实际应用过程中待测信号也可能存在幅值过小的问题,此时需要采用放大电路将信号放大至合理幅值内后才可供单片机采集。在本次设计中,采用了的CD4051BC芯片来实现程控增益的功能。该芯片性能强,性价比高。但是,该芯片带宽不足,待测信号频率过高可能导致失真。所以在进行测试时要对信号带宽以及增益系数等参数,需要多加注意。CD4051BC引脚如图:图3-6CD4051BC引脚图(3)阻抗变换电路阻抗变换电路的作用是为了防止信号通过电压跟随器后出现波形的失真,在本次设计过程中,选取了OPA656芯片来完成设计。该芯片具有频带宽、增益稳定的优点。同时原理简单、性价比高,十分吻合本次设计的需求。阻抗变换芯片及其外围电路设计如图:图3-6电平移位电路设计(4)低通滤波电路被测信号在传入单片机采集时,难免会因为外部影响而产生噪声。不合理的噪声会严重影响信号波形的显示。因此本研究在所有前级调理电路的最后需要加装一个有源滤波电路来过滤到这个过程中产生的噪声。在本次设计过程中,选用了UAF42有源滤波器模块。该款滤波器通用性强,具备高通、低通、带通、带阻的输出,不同输出端有独立的引脚,用户可以根据需求选择不同引脚作为输出端。片内集成有1000pF的电容,可以有效提高滤波效率。有源滤波电路的负载不影响滤波特性,一般由RC网络组成,拥有一定的电压放大与缓冲作用。尽管有源滤波器信号处理能力较强,但相应的对电源要求也比较高,在使用过程中应当注意电源质量,否则可能会影响滤波质量。模块内部结构图如下:图3-7UAF42滤波器模块内部结构图根据芯片手册,本次设计过程中该模块使用IN2来作为输入端口,使用Low-passVo作为低通输出端。1.3便携式数字示波器的硬件最终方案本次设计最终采用STM32F103单片机作为系统的核心控制器,并通过ADC和DMA来采集经过前级调理电路后的待测信号,最终通过软件算法来使最终信号波形显示在TFT-LCD显示屏上,该显示屏通过FSMC接口与STM32连接。下图3-4为本次设计的硬件系统实现框图。图3-8硬件系统实现框图1.4便携式数字示波器的硬件接口的实现在前文中已经确认了硬件的选用了下面我们将从STM32F103ZET6开始搭建我们的实物。如下图3-5所示,ZET6拥144个独立IO,庞大的硬件资源非常繁多,本文仅就对使用的硬件资源进行说明。图3-9STM32F103ZET6引脚图(1)电源:电源和接地引脚用于为外部电路供电。STM32系列单片机可以直接使用2.0-1.6V的直流电供电,引脚可以兼容5V。本次设计所使用的开发板既可以直接使用直流电源,也可以USB接口来为整个系统供电。两种供电方式的详细电路图如下:图3-10直流电源直接供电电路图3-11USB接口供电电路(2)ADC:本次设计直接使用STM32自身携带的外设ADC1通道1(PA1)来负责采集待检测信号。在使用时直接将被测信号接入该引脚即可。FSMC本次设计所使用的FSMC接口总共有34个引脚,包括3个VDD引脚、3个GND引脚、16个总线数据线引脚、接口背光控制脚、NOE总线引脚,NWE总线引脚、接口触摸屏时钟信号引脚、触摸屏MOSI信号引脚、触摸屏PEN信号引脚和触摸屏CS信号引脚。该接口与TFT-LCD显示屏连接原理图如图3-8:图3-12FSMC接口与TFT-LCD连接原理图2.便携式数字示波器软件设计与实现2.1便携式数字示波器软件设计在单片机ADC检测到被测信号后,需要通过单片机中的程序进行处理。本章将会从系统任务调度,波形采集算法和波形显示算法等方面的软件实现作出讨论。2.1.1操作系统的任务分配与调度嵌入式实时操作系统(RTOS)给嵌入式开发所带来的的便利无疑是至关重要的。在裸机操作过程中,所有的任务通过一个反复循环的线性操作实现,然而程序运行时常常会因为一些中断或者变量出现了异常导致整个系统宕机。而由于操作系统使用时间片轮转算法,合理的安排多个任务的运行时间,互不干扰。即使某一个任务出现了异常,也不会影响整个系统的正常工作。(1)时间片轮转调度算法时间片轮转算法是一种简单、公平的任务调度算法,被各类嵌入式实时操作系统广泛应用[13]。在操作系统中,时间片即每个任务得到的可以运行的时间。当前任务运行的时间达到时间片长度后,系统会强制将该任务挂起,开始执行下一个任务。当最后一个任务执行完毕后,从第一个任务开始继续执行,形成一个“轮转”。该算法本质上将操作系统是将原本裸机的线性运行方式赋予了更加智能化的切换。尽管在真正的任务调度过程中,真正的任务调度情况要比简单的时间片轮转复杂得多,但是任何调度算法他都是以时间片轮转调度算法为基本原理。需要注意的是,时间片的长度设置需要谨慎一些,时间片太短会导致CPU将更多资源用于任务切换使工作效率降低;时间片太长会使得交互感变差,延迟很高。具体时间片的长度设置要根据芯片性能及任务需求来制定,在大多数项目开发中将其设置为5ms至80ms。时间片轮转算法的原理如图4-1:图4-1时间片轮转算法原理在程序设计过程中,该算法由以下函数实现:OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);在本次设计过程中,为了提高显示效率,所以将时间片设置仅为一个时钟节拍,即5ms。任务的分配得益于操作系统自动分配任务的特点,在进行便携式数字示波器的设计时,应当将多个任务分为多个进程,互不干扰。而根据设计所需的功能,程序在设计过程应当分为采集、显示、功能切换和运行提示四个板块,为每个版块再去进行程序任务的设计。在本次设计过程中显示使用了emWin图形库,因此最重要的就是emWin界面显示任务,为了提高采集与显示之间的效率,所以将采集任务和显示任务进行了结合,形成一个任务。其次,在本次设计中有波形的切换、暂停与保存的功能,这一部分内容需要通过按键来实现,因此应当将按键也设置为一个任务来随时获取使用者所下达的命令,并完成任务所需的程序。最后,在嵌入式开发过程中,为了直观的表明硬件是否通电及工作状态,需要添加指示灯的功能。所以单独创建一个LED灯任务来显示便携式数字示波器的工作状态,一旦程序出现错误或者硬件出现问题,指示灯的闪烁状态可以为使用者提供信息。2.1.2emWin图形库emWin是当下一款非常实用的的嵌入式开发图形库,由来自德国的Segger公司进行开发。该款图形库非常适合LCD屏幕上的显示开发,用户可以通过调用图形库所提供的各式各样API函数来完成自己的设计,包括各种图片或文字。该款图形库通常搭配操作系统进行开发,使得开发嵌入式UI变得非常方便高校快捷。在本次设计中所使用的STemWin是Segger公司为ST公司量身定制的emWin,专门为STM32单片机做出了独特的优化以供使用,为了称呼简洁所以本文依旧称之为emWin。emWin一些基础的图像绘制和传统绘制图像的用法是完全一致的,例如绘制线条、矩形、圆形等,也可以进行填充颜色和简单的文字显示。但是emWin的强大之处在于,其支持绘制更多的图形,比如线图和饼图。同时emWin支持Alpha混合,可以通过三个初始色之间的相互混合组成更多色彩,并且可以根据混合比例来达到不同的色彩效果。同时最重要的是,emWin支持绘制流位图,即无法预计绘制出来的图像究竟是什么形状时,可以选择使用流位图。本质上绘制流位图就是将数据流以图像的方式会指出来,这对示波器显示波形来说简直太方便了!尽管我们示波器的波形绘制相对来说比较简单,但是该功能会大量占据CPU资源导致flash爆满,尤其是对于ST32F1这种内存较小系列的系列来说,这是一个不得不关注的问题。最后,使用LCD屏幕显示波形也要注意界面UI的问题。在这一部分可以参考一些比较成熟的emWin界面直接调用即可。而且作为一款GUI绘制的库,其也支持按键的功能。直接使用按键来切换示波器的横坐标或者用于测试的信号频率,非常的方便。2.1.3各次谐波赋值计算与快速傅里叶变换高次谐波对于电子设备的影响的严重程度是不言而喻的。而想要消除谐波的影响得到正确的幅值,必须将周期性非正弦交流量通过傅里叶级数分解。分解后得到的基波频率整数倍的各次分量,即是谐波。谐波的产生主要有三个源头,分别是电源端、输送设备和系统非线性负载。在本次设计中,除去本身的待检测系统中存在的谐波,由于输送设备采用的是最普通杜邦线,且前级调理电路存在整流、降压等操作,因此也可能存在便携式示波器系统内部的谐波。所以不单单要靠模拟电路来处理信号,还需要软件算法来实现信号处理功能。而软件上处理信号最好的手段,就是快速傅里叶变换(FFT)。FFT其实是一系列方法的一个统称,本质是基于离散傅里叶变换(DFT)的,只是通过不同算法提高了其变换的效率。基本原理是将原始序列分解为多个子序列,最后再将各个子序列按照逻辑进行组合,在组合的过程中要利用到对称性和周期性。FFT的实现方法其实有很多种,但都可以实现去除冗余运算的功能,大幅提高信号处理效率。在本次设计中,FFT的主要功能由STM32官方所发布的DSP库实现,所以首先要完成DSP库的移植,该库总共由4个文件组成,分别是两个头文件dsp.h、fft.h,以及256点和1024个点运算的汇编文件,如图4-2。图4-2FFT文件移植值得注意的是,点数多少和采样频率没有本质上的联系,点数只影响测量的分辨率。同时FFT有一个非常优秀的点在于其可以测量幅值很低的信号,单片机的IO口在进行电平判定是,幅值必须高于2V才可被判断识别到上升沿,而使用FFT后可以将检测下限幅值降到20mV,这是直接使用ADC采集信号所做不到的。但是,FFT并不是完美无缺的。首先,在采样率较高的情况下,FFT运算会非常占用CPU资源的,且由于使用了DMA的数据输送方式,单片机总线里至少二分之一带宽会被占用。当采样频率到达一定频率后,定时器中断会频繁触发导致主循环几乎无法正常运转。因此在需要大量数据计算的场景下,往往不会去使用CPU来进行浮点运算,而是使用专门的DSP芯片来进行数字信号的处理。其次,FFT测量超低频信号非常耗时间,因为FFT运算在数值较小时效率提升并不明显。在本次设计需求中,需要采样缓冲区为1024,因此选择1024的函数作为实现FFT的方法,函数名如下:voidcr4_fft_1024_stm32(void*pssOUT,void*pssIN,u16Nbin);该函数的共有三个参数,*pssOUT是FFT之后输出频域的数组,*pssIN为输入的时域采样信号数组,Nbin为FFT点数。根据官方的开发手册,输入与输出数组虽然是32位数据类型,但是被分为了两个16位的区域,分别储存实部和虚部。但要注意的是,此函数进行最基础的FFT运算,其结果也不是真正的幅值。所以想要得到被测信号的参数还需计算各次谐波的幅值。而这一部分的计算就需要运用到输出数组的实部和虚部,通过计算实部与虚部的平方根即可得到正确的结果。2.2便携式数字示波器的开发环境搭建在前述部分完成了硬件部分的搭建,下面将着重展示软件环境的搭建与实现。(1)UCOS-III操作系统移植根据设计要求,首先需要做的是在STM32单片机上完成UCOS-III操作系统的移植。UCOS-III操作系统总共包含6个文件夹,分别是板级支持包(BSP)、CPU、代码库(LIB)、内核(CORE)、端口(PORT)和配置文件(CONFIG),移植完成之后,编译项目,没有警告和报错,说明UCOS操作系统移植成功。图4-3编译结果(2)emWin图形库移植在完成了UCOS操作系统的移植后,还需要进行emWin图形库的移植,才可以真正进行最后的软件开发。emWin图形库总共分为三个文件夹,分别是配置文件(CONFIG)、图形库文件(LIB)和示例文件(DEMO)。移植完成后将程序烧录至开发板,会直接运行emWin自带的Demo程序如图4-2,证明移植成功。图4-4emWin图形库示例至此完成了软件开发环境的搭建,待开发的工程文件目录如下图4-3所示:图4-5开发环境工程目录2.3便携式数字示波器软件实现及程序流程在主程序启动后会首先进行操作系统、图形库及外设初始化操作,然后根据功能分别建立采集及显示、功能切换和按键功能三个任务。下图4-6即为软件设计流程图:图4-6软件设计流程图3.系统性能测试3.1便携式数字示波器的运行测试首先,将STM32开发板通过ST-LINK仿真器与开发机进行连接,随后将编译好的便携示波器的程序烧录至开发板的Flash中。打开电源开关上电后,可以看到开机画面如图5-1,证明系统可以正常工作。同时在开机画面上标注了便携式数字示波器工程名称(MiniOCSTEST)和设计者的姓名、班级和年级。图5-1开机画面开机画面大概持续2秒,随后结束画面并进入示波器工作状态,显示出工作界面,开始准备采集。由于现在还没有接入波形,因此显示区域没有波形。在显示区域的右侧是波形的参数显示,从上至下分别是工作状态、幅值、峰峰值、最大电压、最小电压、波形频率和采样率。图5-2工作界面

3.2便携式数字示波器的性能测试3.2.1便携式数字示波器的性能测试(1)不同波形的显示测试在所有初始化完成之后,我们将信号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论