版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
绪论1.1研究目的及意义1.1.1研究目的示波器以来都是伴随着每一位电子工程师身边的测量三件套之一,他具有协助研究不同电现象的变化过程的功能。示波器的工作原理是通过高速电子束以打点的方式,将被采集到的电信号幅值以时间为坐标绘制出来。部分功能较为齐全的示波器也会对被测量信号的电流、电压、频率、相位差、调幅度等参数进行检测。示波器大致分为普通、多用、多线、多踪、取样、记忆和数字7类。本次研究主要目的是将示波器的前级调理电路与单片机相结合,制作出一款简易便携的波形显示装置。其工作原理是将经过前级调理的被测信号由模数(A/D)转换器进行捕获,随后送入数据存储器,最后通过软件算法完成信号的处理与波形的绘制。传统数字示波器功能非常强大,其不仅精度高,且可以直接对被测信号进行加、减、乘、除、求平均值、求平方根和求均方根等操作。便携式数字示波器得益于其体积较小,重量较轻,便于随身携带的特点,可以随时使用,对于检测环境的要求不高。但是相对的,传统示波器的大体积、高集成的优点,在采样频率、模拟带宽、采集精度和缓冲器深度上远强于便携式示波器,同时一些后期的一些赋值计算、信号处理等功能也是便携式示波器做不到的。因此便携式示波器在保证其小巧的特点外,应当尽可能的提升其精度,拓展其功能。1.1.2研究意义传统的示波器由于其工作原理的限制,体积较大,不便于携带。电子工程师在进行测试时不一定具备类似于实验室的良好测量条件。甚至可能会需要随时各地奔波或者狭小空间内进行测试,在这种环境下,传统示波器的弊端就会显现出来。于是,为了解决这一难题,便携式示波器存在的意义就显得至关重要。1.2国内外研究现状1.2.1国外研究现状早在2012年,美国福禄克公司推出Fluke@190II系列500MHzScopeMeter测试工具,该款测试工具采样速率达到了5GS/S,最大采用频率为500KHz。该测量工具在工艺上也颇具优点,在设计之处就设定了较高的安全标准,因此具坚固可靠和待机时间长等特色。在当下,专业型电子排障工具具备高性能的带宽和分辨率范围,工作范围越来越广泛,工作场景要求越来越低[1]。2014年,来自美国的作者DanzerPaul[2]在QST:Devotedentirelytoamateurradio杂志上刊登了一篇关于Oscium发布的一款基于iMSO-204x的便携式示波器。该款示波器体积很小,没有显示屏,但是可以通过Lighting接口来连接ipad和iPhone来达成显示效果。硬件系统拥有采样率为50Msps的两个模拟通道和四个数字通道,具有5MHz的带宽,并在200ns/DIV到10s/DIV的范围内进行缩放。其对应的应用软件名为imso2,可在AppStore免费下载。但是该款示波器最大输入数字电压仅为-0.5V-7V,超出幅值则无法测量,存在一定缺陷。1.2.2国内研究现状在我国早在2006年就已经有学者提出了基于ARM的数字示波器,但是由于当时单片机行业还在发展阶段,低成本芯片性能不足,高成本芯片得不偿失,因此研究一直处于一个构思与展望的阶段,之后的十年里一直有新的便携式示波器思路提出并发表。之后随着ST公司32系列的高性能产品逐步上市,便携式示波器便开启了属于它的时代。2019年,徐建和唐胤两位学者设计了以STM32微处理器作为控制核心,加入外部信号处理单元,利用DMA技术进行采样数据输送,FSMC接口来驱动LCD,并移植μ/COS-Ⅱ实时操作系统,该研究在功能上、体积上、成本上有着很大的优势。通过YB1605多用信号发生器测试的结果表明,这次研究的产品性价比高,使用方便而且可以实现波形的存储,以及断电重启后的波形重现功能,具有广阔的应用前景[3]。同样在2019年,肖军,涂强,林月桦等几位学者也利用STM32处理器加Qt上位机结合的开发方式,研究了一款主要以教学展示为目的的便携式混合信号示波器。该示波器不仅具备示波器的功能,还有逻辑分析仪的功能。该系统由下位机采集被测信号,可以通过用户指令来切换工作方式,最终利用USB-TTL接口将数据发送至上位机并完成波形的绘制。同时上位机具备自动和手动两种工作方式来显示的周期,幅值等参数[4]。2020年,丁磊、董标、韩磊等几位学者进行了更加大胆的研究,在基于STM32的便携式示波器上加入了太阳能充电的功能。在前人的研究基础上解决了需要随时供电的缺陷,具备自充电功能使得户外信号研究的方法逐渐多样化。也使得便携式示波器具备艰苦环境下的检测的能力[5]。1.3研究内容及方法1.3.1研究内容本设计的研究目标是以单片机和外围电路的基础上搭建一个完整的便携式数字示波器系统,以及结合嵌入式实时操作系统来完成系统程序的编写、系统处理程序的编写。本次便携式数字示波器包含以下几项功能指标:(1)通过在STM32上移植μ/COS-Ⅱ实时操作系统在保证系统稳定性;(2)完成前级调理电路的设计,主要包括阻容衰减电路、阻抗变换电路、电平移位电路、程控增益电路以及低通滤波电路;(3)实时采样频率为1Msps,模拟频带宽度0—200KHz,精度为12Bit,取样缓冲器深度1024字节;(4)垂直灵敏度范围要求10Mv/Div-5V/Div,水平时基范围要求10us/Div-50s/Div;(5)要求可观测触发之前的波形(负延迟),可随时冻结波形的显示(HOLD功能);(6)频率测量误差不超过5%;1.3.2研究方法(1)调查法调查法即通过问卷、谈话、测验、案例探究等方式来搜集相关信息,并通过综合、比较、归纳等方式得出结论。在本次研究中,我采访了多位电子工程师以及大学教师,了解到了便携式示波器的设计意义、设计需求和设计方式等。便携式的数字示波器深受经常在野外环境下工作的电子工程师青睐。同时大学教师也表示在教学过程中很多时候无需使用体积庞大的示波器,相对来说便携式更适合课堂环境。(2)文献研究法文献研究法即根据固定课题,寻找文献的方式来研究。文献研究法的概念较为广泛,其科学性、体系性和适配性稍差。但随着数字数据库和信息整合技术的成熟,根植于文献研究的文献计量、文献社会网络分析、文献数字化研究,已经纳入社会科学研究范畴,逐步成为人文社科主要研究方法之一。[6](3)实验法实验法是理工类学科最为常用的研究方法。通过不断的实验、记录数据和对比归纳的方式[7],来研究便携式示波器程序最为高校、最为科学的编写方法。同时外围电路的器件参数需要通过多次实验来寻找最为合适的值。2便携式数字示波器总体设计方案2.1便携式数字示波器整体设计方案系统框图如下图2-1所示:图2-1整体设计框图整个系统分为四大部分,分别是前级调理电路模块、核心控制模块、液晶屏模块、电源模块组成。对于数字示波器而言,单片机的AD直接对输入信号进行采集是十分危险的行为。因为待测信号存在很强的不确定性,且其电压值可能远远大于单片机引脚的工作电压,导致击穿。因此必须要对待测信号的相位和幅度做出线性处理[8]。其中前级调理电路分为阻容衰减、电平移位、程控增益和低通滤波四个部分。核心控制模块主要有STM32单片机内部的定时器、A/D采集和DMA构成,作用在于采集信号并进行处理,最终通过FSMC接口驱动液晶屏显示波形。2.2便携式数字示波器硬件的选择与论证2.2.1前级调理电路的论证与选择在使用一款数字示波器对信号检测时,被测信号肯定是不能直接交由ADC来进行采集。初始的被测信号必须要通过前级调理电路来对其相位和幅度等参数进行一定线性处理后方可交由ADC采集。根据本次设计要求,前级信号调理电路作用有很多,一是对信号进行补偿,所以需要选择阻容衰减电路。二需要防止信号出现失真,所以需要选择OPA656集成运放器来完成该功能,该芯片频带宽且增益稳定,十分吻合本次设计需求。三是需要对微弱信号进行程控增益,所以选择了CD4051BC芯片来完成程控增益电路的设计。而信号最后的滤波处理,选取了UAF42滤波模块,该模块可以自主选择低通、高通、带通和带阻的输出方式来供使用者选择,这样被处理的信号即可交由ADC采集。2.2.2核心控制模块的论证与选择(1)STM32系列单片机STM32是当下一款的热门的主流单片机,由意法半导体公司设计与开发。其具有高性能、功耗低、成本低的特点。本次设计选取的STM32F103系列使用ARM公司的CortexM3架构,提供一流的外设来让开发者使用。尽管F1系列存在内存较小,性能较弱的缺点,且外围电路需要自行设计,但是得益于其优秀的性价比和简单上手的难度,非常适合本次设计。Zynq系列可扩展平台ZYNQ系列是当下炙手可热的一款可扩展处理平台,由赛灵思公司(Xilinx)推出。可编程逻辑基于赛灵思的FPGA架构来设计,并且板上集合一块ARM核芯片,是一款片上系统(SOC)。FPGA和ARM之间的连线也是在芯片内部完成,做一些嵌入式异构计算的嵌入式系统,不需要再去设计单片机和FPGA之间的数据总线。由于其片上系统的特点,ZYNQ系列平台可拓展性非常强,可以先通过PS端对硬件上进行逻辑设计,再通过PL端的软件设计完成最终产品。尽管该系列平台性能强大,拓展性强,但是成本较高且设计较为复杂,对于便携式数字示波器来说显得有些性能过剩,得不偿失。同时FPGA可扩展平台虽然方便好用但是不符合前级调理电路的要求。STM32F1系列单片机尽管性能有所欠缺,但是足以胜任本次研究。2.3系统软件开发环境简介2.3.1KeilMDK5在当今所有的嵌入式开发软件中,德国-美国联合的Keil公司下KeilSoftware部门所推出的KeilMDK5绝对是最为热门的一款。该款开发系统使用C/C++作为开发语言,结构性强,灵活度高。Keil提供了不仅包括C语言所应有的编译器与链接器,还具备强大的实时仿真调试功能及库管理功能。最终,将所有功能汇聚在一起并与μVision集成开发环境结合,成为KeilMDK[9]。KeilMDK5是该公司于2013年推出的最新一款开发系统,它摈弃了传统的将芯片资料嵌入到开发环境的做法,而是直接以资料包的形式安装进开发环境中。这样的好处是有效的节省了存储空间的占用,并给开发者提供了很大的便利性。同时,ST公司在近些年还推出了STM32CubeMx开发工具,该款开发工具覆盖了STM32全系列芯片,支持MDK、IAR等多款开发环境,主要以HAL库开发为基础。开发者在使用过程中可以进行根据用户需求来进行图形化外设配置,并自动生成C语言项目程序,使用时可以将更多精力放在软件算法的设计上,而不是在驱动外设配置程序上花费大量的时间。在本次设计中,我们采用了KeilMDK5加上CubeMx的组合。2.3.2C语言C语言1976年诞生于贝尔实验室,是面向过程,可直接操作内存的一款高级语言。尽管作为一个高级语言但是其兼顾了汇编语言的特点,可以直接对内存或寄存器进行操作,效率很高。通过有关测试证明,C语言西横须仅仅比汇编语言的程序效率低大概10%~20%[10]。不过随着计算机语言技术的突飞猛进,根据使用需求发展出来了更多偏向与软件设计的语言。因此C语言现在的应用场景更多的放在了底层,比如嵌入式、操作系统等。2.3.3UCOS-III嵌入式实时操作系统在最早的嵌入式开发中是直接对裸机进行操作,没有其他程序的介入。这种开发方式会通过将程序分为前台和后台,分别指中断服务程序和主循环。但随着单片机的发展,裸机的操作方式会难以处理较为复杂的程序。同时单循环程序局限性非常大,不同功能直接回相互影响,因此才会有人开发了嵌入式实时操作系统来解决该问题。实时操作系统(RTOS)强调的是实时性,它将不同的任务划分成一个个的线程,分开运行。通过时间片轮转调度算法,给每个线程赋予固定的运行时间,各个线程之间互不干扰,从而达到多任务运行的结果。在本次设计中,也需要通过单片机来处理多个系统任务,所以选择了UCOS-III操作系统来完成设计。UCOS由Micrium公司出品的,目前有II和III两个版本。它具备操作系统应有的资源管理、同步、任务通信等功能。UCOS是采用以C语言为主体,汇编语言辅助的架构,即可向上便于开发,又可向下操作处理器,结构相对简介,可读性强,非常便于开发,出现问题时可以直接查阅底层,从根源寻找问题。值得注意的是,和传统的Windows或者Linux操作系统不同的是,嵌入式实时操作系统属于将系统代码嵌入到程序之中,对于单片机来说还是裸机运行,但是通过软件来实现任务调度。3便携式数字示波器硬件设计与实现3.1核心控制器及其外设设计与实现3.1.1STM32F103ZET6STM32是嵌入式系统开发中最受欢迎的一款单片机。在本次设计中所选取的是其F1系列,工作频率为72MHz,由2.0-3.6V的直流电源供电。片上集成有Flash和SRAM存储器,芯片内部拥有3个可以结合DMA使用的12位精度ADC,这是设计便携式数字示波器是最为关键的外设。同时STM32F1还拥有普通定时器、高级定时器和看门狗定时器的外设。在本次设计中,由定时器产生的时间脉冲来使ADC进行规律采集,并可以通过特定的脉冲来使DAC产生测试波形,形成自测试功能。本次设计硬件平台正点原子精英版STM32开发板,如图3-1:图3-1STM32F103ZET6开发板3.1.2A/D转换器(ADC)STM32F103系列有3个精度为12位的模数转换器。在本次设计过程中所采用的ADC1拥有16个外部通道,各通道可以根据设计需求选择单次、连续、扫描或间断执行的工作方式,最终可以选择左对齐或者右对齐的方式将结果储存至Flash。在STM32F1的时钟树里,ADC的时钟频率由PCLK2分频产生,最大工作时钟频率不得超过14MHz,频率过高会导致采样精度严重下降。ADC输入范围为0-3.3V,采集幅值大于该值的信号可能会造成击穿,在使用中应当特别注意。与通信协议类似,ADC也有其触发信号。一是修改控制寄存器CR2的ADON位的电平来触发信号采集的启停。在STM32所提供的官方库中有关于该寄存器的API函数,直接调用即可进行开启或关闭。二是通过中断触发,可以使用定时器或者外部中断来发送触发信号。在本次设计中即采用定时器中断来让ADC进行周期性的转换。在ADC采集过程中,还需要注意的参数时输入时钟、采样周期和转换时间,他们之间的关系为转换时间=采样时间+12.5个周期,其中12.5个周期为常量不可更改。采集时钟周期设置是完全建立在输入时钟周期之上进行的,在初始化了输入时钟后才可确定采样周期的数值。同时该系列单片机有一大特色是每个ADC通道可以配置不同的采样周期,数值越小精度越高。在本次设计过程中,采用的是单通道单次采集的工作方式,ADC被分配的时钟为是12M(该值已经是最大值),采样周期的值设置为239.5。3.1.3FSMC与TFTLCD(1)FSMCFlexiblestaticmemorycontroller(FSMC),即灵活的静态存储控制器。主要用途是在AHB总线和外设之间进行数据通信事务转换,并满足不同设备访问的时序要求,经常用于Flash的数据交互。在本次设计中,TFTLCD屏幕将通过FSMC的接口与STM32相连。但是FSMC有一个很明显的缺点是一次只能访问一个外部器件,主要原因在于由于各个设备有属于自己的片选信号,一次只能选择一个片选信号进行交互[11]。图3-2FSMC框图及其寄存器(2)TFTLCD屏幕TFT(ThinFilmTransistor)即薄膜场效应晶体管,属于有源矩阵液晶显示器。其工作原理是通过电信号来驱动晶体管,每个晶体管为1个像素点,最终通过软件编程来将像素点组合成想要的画面。该设备具备可靠性提高、环保特性好、适用范围宽、制造技术简单、成本低的优点,广泛用于各类嵌入式设备的屏幕显示。在本次设计过程中,采用4.3寸的TFTLCD屏幕来进行最终的波形显示[12]。图3-3TFTLCD显示屏3.1.4DMADMA(DirectMemoryAccess,直接存储器访问)是单片机中一个用于节省CPU资源使用的外设。单片机在进行工作时,数据经常需要在不同地址之间搬运。正常情况下这个操作由CPU来完成,但是这会使CPU出现大量中断负载,严重降低工作效率。而DMA存在的意义就是协助CPU完成不同地址间数据的传输。这样的操作可以避免CPU将资源倾斜在无意义的数据搬运上,从而有更多的精力去处理其他工作,这个功能对于高效能嵌入式系统算法和网络是很重要的。正常情况下总线的控制权在CPU手上,但在使用DMA来传输数据时,DMA会暂时获得总线是使用权。因此在DMA传输过程中先要向CPU发起请求,得到CPU同意后DMA开始响应,并开始数据的传输。当数据传输结束后会自动将总线控制权归还给CPU。整个传输作业大致分为请求、响应、传输、结束4个步骤。在本次设计中,我们使用DMA2的4通道来响应ADC或DAC的请求。3.1.5定时器STM32F1系列单片机的标准定时器挂载在APB1总线上,具备16位的向上、向下以及向上/下三种计数方式,拥有自动装载的功能;每个标准定时器都有4个独立通道,可以通过设置预分频值、自动重装载值的参数以及定时器中断服务程序来完成不同的任务。标准定时器的工作过程图如下:图3-4标准定时器工作过程在本次设计中,使用了TIM2和TIM3两个定时器。TIM2负责为ADC定时采集提供服务。TIM3为DAC产出测试波形服务。3.2前级调理电路设计(1)阻容衰减电路阻容衰减电路在本次设计过程中属于前级调理电路最开始的电路,其主要功能是完成对信号的补偿。该电路的原理是利用电容在不同频率交流信号下会产生不同的容抗,通过容抗之间的搭配来完成对最大工作电压的限制和信号的补偿。电容在本级电路中主要承担的责任是限制电流和动态分配电容器和负载两端电压。在本次设计过程中,必须首先确定负载最大工作电流,然后来计算电容值的取值。具体电路实现如图:图3-5阻容衰减电路设计(2)程控增益电路在实际应用过程中待测信号也可能存在幅值过小的问题,此时需要采用放大电路将信号放大至合理幅值内后才可供单片机采集。在本次设计中,采用了的CD4051BC芯片来实现程控增益的功能。该芯片性能强,性价比高。但是,该芯片带宽不足,待测信号频率过高可能导致失真。所以在进行测试时要对信号带宽以及增益系数等参数,需要多加注意。CD4051BC引脚如图:图3-6CD4051BC引脚图(3)阻抗变换电路阻抗变换电路的作用是为了防止信号通过电压跟随器后出现波形的失真,在本次设计过程中,选取了OPA656芯片来完成设计。该芯片具有频带宽、增益稳定的优点。同时原理简单、性价比高,十分吻合本次设计的需求。阻抗变换芯片及其外围电路设计如图:图3-6电平移位电路设计(4)低通滤波电路被测信号在传入单片机采集时,难免会因为外部影响而产生噪声。不合理的噪声会严重影响信号波形的显示。因此本研究在所有前级调理电路的最后需要加装一个有源滤波电路来过滤到这个过程中产生的噪声。在本次设计过程中,选用了UAF42有源滤波器模块。该款滤波器通用性强,具备高通、低通、带通、带阻的输出,不同输出端有独立的引脚,用户可以根据需求选择不同引脚作为输出端。片内集成有1000pF的电容,可以有效提高滤波效率。有源滤波电路的负载不影响滤波特性,一般由RC网络组成,拥有一定的电压放大与缓冲作用。尽管有源滤波器信号处理能力较强,但相应的对电源要求也比较高,在使用过程中应当注意电源质量,否则可能会影响滤波质量。模块内部结构图如下:图3-7UAF42滤波器模块内部结构图根据芯片手册,本次设计过程中该模块使用IN2来作为输入端口,使用Low-passVo作为低通输出端。3.3便携式数字示波器的硬件最终方案本次设计最终采用STM32F103单片机作为系统的核心控制器,并通过ADC和DMA来采集经过前级调理电路后的待测信号,最终通过软件算法来使最终信号波形显示在TFT-LCD显示屏上,该显示屏通过FSMC接口与STM32连接。下图3-4为本次设计的硬件系统实现框图。图3-8硬件系统实现框图3.4便携式数字示波器的硬件接口的实现在前文中已经确认了硬件的选用了下面我们将从STM32F103ZET6开始搭建我们的实物。如下图3-5所示,ZET6拥144个独立IO,庞大的硬件资源非常繁多,本文仅就对使用的硬件资源进行说明。图3-9STM32F103ZET6引脚图(1)电源:电源和接地引脚用于为外部电路供电。STM32系列单片机可以直接使用2.0-3.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连接原理图4.便携式数字示波器软件设计与实现4.1便携式数字示波器软件设计在单片机ADC检测到被测信号后,需要通过单片机中的程序进行处理。本章将会从系统任务调度,波形采集算法和波形显示算法等方面的软件实现作出讨论。4.1.1操作系统的任务分配与调度嵌入式实时操作系统(RTOS)给嵌入式开发所带来的的便利无疑是至关重要的。在裸机操作过程中,所有的任务通过一个反复循环的线性操作实现,然而程序运行时常常会因为一些中断或者变量出现了异常导致整个系统宕机。而由于操作系统使用时间片轮转算法,合理的安排多个任务的运行时间,互不干扰。即使某一个任务出现了异常,也不会影响整个系统的正常工作。(1)时间片轮转调度算法时间片轮转算法是一种简单、公平的任务调度算法,被各类嵌入式实时操作系统广泛应用[13]。在操作系统中,时间片即每个任务得到的可以运行的时间。当前任务运行的时间达到时间片长度后,系统会强制将该任务挂起,开始执行下一个任务。当最后一个任务执行完毕后,从第一个任务开始继续执行,形成一个“轮转”。该算法本质上将操作系统是将原本裸机的线性运行方式赋予了更加智能化的切换。尽管在真正的任务调度过程中,真正的任务调度情况要比简单的时间片轮转复杂得多,但是任何调度算法他都是以时间片轮转调度算法为基本原理。需要注意的是,时间片的长度设置需要谨慎一些,时间片太短会导致CPU将更多资源用于任务切换使工作效率降低;时间片太长会使得交互感变差,延迟很高。具体时间片的长度设置要根据芯片性能及任务需求来制定,在大多数项目开发中将其设置为5ms至80ms。时间片轮转算法的原理如图4-1:图4-1时间片轮转算法原理在程序设计过程中,该算法由以下函数实现:OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);在本次设计过程中,为了提高显示效率,所以将时间片设置仅为一个时钟节拍,即5ms。任务的分配得益于操作系统自动分配任务的特点,在进行便携式数字示波器的设计时,应当将多个任务分为多个进程,互不干扰。而根据设计所需的功能,程序在设计过程应当分为采集、显示、功能切换和运行提示四个板块,为每个版块再去进行程序任务的设计。在本次设计过程中显示使用了emWin图形库,因此最重要的就是emWin界面显示任务,为了提高采集与显示之间的效率,所以将采集任务和显示任务进行了结合,形成一个任务。其次,在本次设计中有波形的切换、暂停与保存的功能,这一部分内容需要通过按键来实现,因此应当将按键也设置为一个任务来随时获取使用者所下达的命令,并完成任务所需的程序。最后,在嵌入式开发过程中,为了直观的表明硬件是否通电及工作状态,需要添加指示灯的功能。所以单独创建一个LED灯任务来显示便携式数字示波器的工作状态,一旦程序出现错误或者硬件出现问题,指示灯的闪烁状态可以为使用者提供信息。4.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绘制的库,其也支持按键的功能。直接使用按键来切换示波器的横坐标或者用于测试的信号频率,非常的方便。4.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运算,其结果也不是真正的幅值。所以想要得到被测信号的参数还需计算各次谐波的幅值。而这一部分的计算就需要运用到输出数组的实部和虚部,通过计算实部与虚部的平方根即可得到正确的结果。4.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开发环境工程目录4.3便携式数字示波器软件实现及程序流程在主程序启动后会首先进行操作系统、图形库及外设初始化操作,然后根据功能分别建立采集及显示、功能切换和按键功能三个任务。下图4-6即为软件设计流程图:图4-6软件设计流程图5.系统性能测试5.1便携式数字示波器的运行测试首先,将STM32开发板通过ST-LINK仿真器与开发机进行连接,随后将编译好的便携示波器的程序烧录至开发板的Flash中。打开电源开关上电后,可以看到开机画面如图5-1,证明系统可以正常工作。同时在开机画面上标注了便携式数字示波器工程名称(MiniOCSTEST)和设计者的姓名、班级和年级。图5-1开机画面开机画面大概持续2秒,随后结束画面并进入示波器工作状态,显示出工作界面,开始准备采集。由于现在还没有接入波形,因此显示区域没有波形。在显示区域的右侧是波形的参数显示,从上至下分别是工作状态、幅值、峰峰值、最大电压、最小电压、波形频率和采样率。图5-2工作界面
5.2便携式数字示波器的性能测试5.2.1便携式数字示波器的性能测试(1)不同波形的显示测试在所有初始化完成之后,我们将信号发生器接在ADC引脚上并输入100Hz的正弦波,并设置采样频率为10kHz。采样结果如图5-3所示:图5-3正弦波测试可以看到波形被正常采集到的了,信号完整度较高。图中信号断裂处为示波器刷新线。为了验证示波器的采样符合要求,还使用了三角波、和方波来测试,结果如图5-4和图5-5.图5-4三角波测试图5-5方波测试根据上述三张图来看,示波器最基础的波形显示功能是完全没有问题的。(2)示波器精度测试根据奈奎斯特采样定理可知,被测信号频率最大值要小于或等于采样频率的二分之一。本次设计的便携式示波器的最大采样频率为500KHz,因此理论上讲可以测试频率为250KHz以下的波形。首先我们随机设置一个波形频率为41KHz的方波,选取100KHz的采样频率,通过Debug来查看波形数组结果如图5-6:图5-6幅值数组可以看到,数组下标为420的数据为该波形的最大值,通过信号频率的计算公式算得频率:f=(100K/1024)*420=41015Hz误差为:(41015-41000)/41000*100%=0.03%误差为0.03%,远小于设计需求中所要求的5%。尽管符合设计要求,但是还是有必要探究误差来源的可能性。一是在FFT中,精度的计算公式为Fs(采样频率)/N(采样点数),可以通过增大分母,即增大N的值来提高精度,因此在本次设计中N取值1024而非256。同时分子越大,即采样频率越大,也会导致误差值边打。因此在测量低频信号时,需要在保证奈奎斯特采样定理的情况下,尽可能的降低采样频率。二是ADC采集也是需要消耗时间的,而非瞬间采集。从定时器发出ADC触发信号到ADC完成采集是有一个过程时间,这样采样频率就不是理想状态下的采样频率,因此可能造成误差。5.2.2便携式数字示波器的功能测试在设计需求中,需要添加的一个功能为波形的暂停功能。在示波器的使用过程中,往往需要暂停波形来观察分析当前波形的情况。因此本设计加入了使用按键来暂停波形,同样以上一个测试的100Hz正弦波信号为例,按下按键后如图5-6:图5-6波形暂停
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动法劳动合同法测试题题库(+答案)
- 健康教育学试卷及答案
- 2025年青海省养老护理员职业资格技师预测题(包含答案)
- 2025安全生产法试题及答案
- 疫情交规考试题及答案
- BIM工程师招聘面试题及答案
- 从业资格考试题目及答案
- 乌兰县公安局2025年面向社会公开招聘警务辅助人员备考题库附答案
- 兴国县2025年招聘城市社区专职网格员笔试 考试备考题库必考题
- 南城县2025年公开招聘城市社区工作者(专职网格员)【53人】考试备考题库附答案
- GB/T 36935-2025鞋类鞋号对照表
- 北京化工集团招聘笔试题库2025
- 食品中标后的合同范本
- 博物馆讲解员礼仪培训
- 高阶老年人能力评估实践案例分析
- 2025年全国职业院校技能大赛高职组(研学旅行赛项)考试题库(含答案)
- 创意文案写作技巧与实战案例
- 糖尿病足康复疗法及护理措施
- 生猪屠宰溯源信息化管理系统建设方案书
- 厂区景观设计合同范本
- 颅内压增高患者的观察与护理
评论
0/150
提交评论