绍兴文理学院数理信息学院课程设计报告书题目基于STM32的简易信号发生器电子信息工程专业1班姓名xxx指导教师xxx时间2014年7月12日I课程设计任务书班级电信111姓名xx题目基于STM32的简易信号发生器技术参数、设计要求、检测数据等要求采用DDS方法:(1)该信号发生器应能产生三角波、正弦波、方波、锯齿波(2)该信号发生器为单极性输出,0V~3.3V(3)该信号发生器发生信号的基本频率1KHZ,频率可调(1KHZ~5KHZ,步进10HZ)(4)该信号发生器信号初始相位可调(0-360度,步进1度)(5)功能选择由按键完成设计进度安排或工作计划2014.7.3~2014.7.5:教师布置课题,学生查询相关资料,完成方案选择、确定验证方案。2014.7.6~2014.7.7:设计模块划分、实现及各模块仿真图设计。2014.7.8~2014.7.10:设计整体实现、调试及验证,并开始撰写报告。2014.7.11~2014.7.12:课程设计报告撰写并定稿,上交。其它认真阅读智能仪器仪表课程设计报告撰写规范;课题小组经协商好要指定组长并明确分工,形成良好团队工作氛围;基于课题基本要求,各小组与指导老师讨论,再将课题细化、增加要求;课题小组每成员均需各自撰写一份课程设计报告。II基于STM32的简易波形发生器摘要函数信号发生器是一种能够产生多种波形,如正弦波、方波、三角波、锯齿波等的电路。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。通过对函数波形发生器的原理以及构成分析,可设计一个能变换出以上波形的波形发生器。本课题采用STM32[1]为控制芯片,采用DDS[2]的设计方法,可将采样点经D/A[3]转换后输出任意波形,可通过调节D/A转换的频率来调节输出波形的频率,也可通过改变取点的起始位置来调节波形的初始相位。关键词信号发生器STM32DDS目录课程设计任务书..............................................................................................................................I摘要……………………………………………………………………………………………….II1设计概述..................................................................................................................................12设计方案..................................................................................................................................23设计实现..................................................................................................................................33.1设计框图及流程图.......................................................................................................33.2MCU控制模块.............................................................................................................53.3按键控制模块...............................................................................................................53.4信号输出模块...............................................................................................................63.5LCD显示模块..............................................................................................................84设计验证..................................................................................................................................85总结........................................................................................................................................1111设计概述信号发生器作为一种历史悠久的测量仪器,早在20年代电子设备刚出现时就产生了。随着通信和雷达技术的发展,40年代出现了主要用于测试各种接收机的标准信号发生器,使得信号发生器从定性分析的测试仪器发展成定量分析的测量仪器。同时还出现了可用来测量脉冲电路或作脉冲调制器的脉冲信号发生器。自60年代以来信号发生器有了迅速的发展,出现了函数发生器。这个时期的信号发生器多采用模拟电子技术,由分立元件或模拟集成电路构成,其电路结构复杂,且仅能产生正弦波、方波、锯齿波和三角波等几种简单波形。自从70年代微处理器出现以后,利用微处理器、模数转换器和数模转换器,硬件和软件使信号发生器的功能扩大,产生比较复杂的波形。这时期的信号发生器多以软件为主,实质是采用微处理器对D/A的程序控制,就可以得到各种简单的波形。在80年代以后,数字技术日益成熟,信号发生器绝大部分不再使用机械驱动而采用数字电路,从一个频率基准有数字合成电路产生可变频率信号。90年代末出现了集中真正高性能的函数信号发生器,HP公司推出了型号为HP770S的信号模拟装置系统,它是由HP8770A任意波形数字化和HP1770A波形发生软件组成。信号发生器技术发展至今,引导技术潮流的仍是国外的几大仪器公司,如日本横河、Agilent、Tektronix等。美国的FLUKE公司的FLUKE-25型函数发生器是现有的测试仪器中最具多样性功能的几种仪器之一,它和频率计数器组合在一起,在任何条件下都可以给出很高的波形质量,能给出低失真的正弦波和三角波,还能给出过冲很小的快沿方波,其最高频率可达到5MHz,最大输出幅度可达到10Vpp。国内也有不少公司已经有了类似的仪器。如南京盛普仪器科技有限公司的SPF120DDS信号发生器,华高仪器生产的HG1600H型数字合成函数\任意波形信号发生器。国内信号发生器起步晚,但发展至今,已经渐渐跟上国际的脚步,能够利用高新技术开发出达到国际水平的高性能多功能信号发生器。信号发生器在生产实践和科技领域中有着广泛的应用,各种波形曲线均可用三角函数方程式来表达。函数信号发生器是各种测试和实验过程中不可缺少的工具,在通信、测量雷达、控制教学等领域应用十分广泛。不论是在生产、科研还是在教学上,信号发生器都是电子工程师信号仿真实验的最佳工具。而且,信号发生器的设计2方法多,设计技术也越来越先进,随着我国经济和科技的发展,对对应的测试仪器和测试手段也提出了更高的要求,信号发生器已成为测试仪器中至关重要的一类,因此,开发信号发生器具有重大意义。2设计方案方案一:模数结合实现,一般是在模拟电路上产生函数信号波形,而用数字方式改变信号的频率和幅度。如采用D/A装换器与压控电路改变信号频率,用数控放大器或数控衰减器改变信号幅度等。方案二:模拟电路实现,全采用模拟电路,可用正弦波发生器产生正弦波信号,然后过零比较产生方波,再经积分电路产生三角波。这种方法电路简单,并具有良好的正弦波和方波信号。但要通过积分器电路产生同步的三角波信号,存在较大难度。原因是积分电路的积分时间常数通常不变,而随着方波频率改变,积分器输出的三角波幅度将同时改变。若要保持三角波幅度,就得同时改变积分时间长度的大小,要实现这点会很难。方案三:数字电路实现,采用DDS方法,任何频率的波形都可看做由一系列的取样点所组成,可事先将各波形的数据点存储在ROM中,再通过时钟的控制顺序从ROM中读出,再经D/A转化器进行逐点恢复。这种方案的波形精度主要取决于函数信号波形的存储点数、D/A转换器的转换速度、以及整个电路的时序处理等。设取样时钟频率为cf,一个正弦波由N个取样点构成,频率控制字为K,则输出正弦波信号的频率为coKffN公式2-1其信号频率的高低,是通过改变D/A转换器输入数字量的速率或是取点数量来实现的。这种方案在信号频率较低时,具有较好的波形质量。随着信号频率提高,需要提高输入数字量的速率,或减少波形点数。波形点数的减少,将直接影响函数型号波形的质量,而数字量的输入速率的提高也是有限。因此,该方案比较适合低频信号,而较难产生高频(如1MHz以上)信号。经上各方案比较,为切合本次课题,故采用方案三。33设计实现本课题硬件原理图较为简单,仅有一单片机STM32F103ZET6及相应的一些外围器件,每种波形在ROM中都存了360个点,在保持波形失真不太明显的条件下,最高频率时可取点40个,此时需要外加RC低通滤波器,使得输出波形较为平滑。系统时钟频率为72MHz,理论上取40个点的输出波形频率为1.8MHz,但在不同频率下,经过RC低通滤波后的波形会有幅值上的衰减,衰减程度在不同频率下也各不相同,此时可在RC滤波后加入放大器提高幅值,由于此次设计不对5KHz以上频率的波形有过多要求,所以幅值的变化不做太多的关注,仅尝试提高频率。显示部分采用LCD12864,此LCD与MCU连接较易,仅需片选线、电源线、时钟线及串行数据线,用法也较简单,内置中文字库,4*16点阵完全够实现本次课题所需显示。本设计原理图见附录。3.1设计框图及流程图本设计由四个模块组成:MCU控制模块、按键模块、信号输出模块和LCD显示模块。如图3-1所示:图3-1系统框图本设计的流程图如图3-2,主要需要完成的任务有:按键扫描、LCD的显示和D/A转换。因此在主程序中对各个模块进行初始化。4图3-2主函数流程图程序主函数包括时钟树、GPIO口、中断的初始化。本设计利用定时器触发DAC转换器的DMA传输,事先将各波形的取样点存在ROM中,在定时器作用下,将点取出,由DMA传输至D/A转换,输出,由于DMA传输不受主程序控制,因此主程序无需保持其运行。按键控制信号的变换,每个按键对应一个IO口,当按键按下时电平触发外部中断,此时打开定时器,产生一个20ms的延时去抖动,进入定时器中断后判断IO口的电平是否与记录的键值相同,若相同则说明确有按键按下。相同的按键有有着不同的键值,不同的键值搭配在程序内对应不同的状态。此时根据不同的键值所对应的不同的状态选择将要执行的操作。在波形结构体中保存了“波形”、“幅值”、“频率”和“相位”四个参数信息,利用按键更改其中的值,按下“完成”键后确定修改状态,接着将目前状态的各个参数信息显示在LCD上,由此可完成对波形的自由修改。通过LCD显示波形信息,可提高操作的可视性和便捷性。STM32F103ZET6硬件资源丰富,具有512KB的FLASHROM和64KB的SRAM,具有144个引脚和105个GPIO口,因此采用独立按键边沿触发的方法来检测按键。LCD12864采用串行方式传输数