【精编】参考基于stm32的信号发生器.pdf
《【精编】参考基于stm32的信号发生器.pdf》由会员分享,可在线阅读,更多相关《【精编】参考基于stm32的信号发生器.pdf(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.课程设计报告设计课题:基于 STM32 的信号发生器设计专业班级:电气与信息工程通信二班学生姓名:马晓琪指导教师:赵浩宇设计时间:信号发生器一实验概述本系统以低功耗单片机stm32为主控器件,分为微控制器、FPGA、DA转换器、功率放大等模块,实现了一个能产生任意波形的波形发生器。本设计利用单片机生成各种波形的数据,将数据传输给RAM 存储器,通过后级的DA转换器实现波形的产生。系统采用触摸屏方式输入波形参数和手绘波形,频率1HZ步进可调,峰-峰值可在 0到10V之间任意调节。电路设计条理清晰,人机交互界面友好,控制方便,很好地完
2、成了题目的所有基本和发挥要求。二实验要求与目的实验要求:设计简易函数信号发生器系统实验目的:掌握应用嵌入式系统生成函数信号的方法三实验内容与实验设备实验内容:a)设计程控放大器电路b)设计嵌入式系统电路及程序,实现信号发生器基本功能,可以产生三种标准波形:正玄波、三角波和方波;c)编写嵌入式系统程序,实现函数信号发生器功能,可以对标准波形设计频率、周期、最大值、最小值、峰峰值、偏移量文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.和方波占空比。d)编写嵌入式系统程序,实现随机信号发生器功能,输出在手写板上描绘的波形。e)编写嵌入式系统程序,实现通讯功能,可以通过RS232接口设
3、置输出信号。实验设备:a)示波器、信号发生器、万用表b)STC单片机开发板、C8051F开发板、STM32 开发板实验器件:STM32F103ZET6、ADUC7026 四方案比较1.1 波形生成方案方案一:采用锁相式频率合成方案这种方案利用锁相环将压控振荡器VCO 的输出频率锁定在所需频率上。这种方案具有很好的窄带跟踪特性,很好的选择所需频率。但由于模拟方法合成的正弦波参数(如:幅度,频率,相位)都很难被控制,难以满足实现任意波形的要求。方案二:采用 STM32 单片机生成波形,由于是软件滤波,所以不会有寄生的高次谐波分量,生成的波形比较纯净。它的特点是价格低、性能高,在低频范围内稳定性好、
4、操作方便、体积小、耗电少。经比较,方案二既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制,性价比高,所以采用该方案1.2 任意波形的生成原理方案一:触摸屏绘制波形以触摸屏作为操作界面,用户可在触摸屏上输入波形参数及绘制波形。此方法操作简易,并且可绘制任意波形,但是对编程者要求较高,故选择相对简单的用键盘输入数据。方案二:用键盘输入数据采用键盘输入,这是最基本的方法。优点是输入值精确。但用户自定义输入时无法自由输入想要的特殊波形,而且输入数据繁琐,操作麻烦,由于实现相对文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.简单,故本实验采用该方案。五系统设计分析(A)硬件
5、部分(B)微控制器软件实现:微控制器主要用于完成数据的采集,显示以及处理,生成各种波形数据,本系统采样 256 个数据,采用 8 位 DA 转换器,因此 RAM 地址位设置为 8 位,数据位设置为 8 位。微控制器先进行数据收集处理,生成各种波形的归一化数据,然后存储在 256 位的数组里,根据幅值要求乘以相应的系数,最终生成可以存放在 RAM 里的数据。本系统采用 12 位 DA 转换器,最大输出电压为5Vpp,功率放大为 2 倍,所以系统最大的输出电压可以达到10Vpp,可计算出最小电压分辨率为:电压分辨率:K=10/4096(V)(A)是波形发生器的主流图,由系统初始化和人机交互模块组成
6、,其中液晶显示子模块和键盘输入处理子模块占用单片机主要处理时间,单片机反复运行该模块程序人机交互模块相当于系统的监控程序;(B)是定时中断服务流程图,波形发生模块放置在定时中断服务程序中,系统每隔一定时间,产生一个定时中断,暂停主流程运行,转到定时中断服务程序起始处,执行波形发生模块,该模块输出一个样值后,结束此次中断服务,返回主流程断点处继续运行。反复多次定时中断服务,从而完成波形生成。(C)键盘输入处理子模块在具体实现时,键值识别部分作为主程序,键功能处理部分作为子程序,它们之间的关系是主程序调用子程序。键盘的工作过程:(1)扫描键盘,获得列扫描码和行状态码,从而确定被按下的按键的键值;(
7、2)根据键值,通过散转表,跳转到相应的键功能处理部分;(3)进入键处理部分,完成键功能;(4)完成一次键输入工作。STM32 液晶屏D/A 运放键盘输入控制主流程初始化液晶显示键盘输入处理判断波形方波正弦波三角波锯齿波中断返回定时中断开始示波器文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.通过键盘对单片机系统进行设置,每按一次键,键盘都会有上述的处理过程,每次仅能完成一个键功能。在实际设置波形参数时,一个参数需要多个键功能来实现,那么相应的键盘也要多次完成键值识别,跳转键处理的工作过程。(D)函数参数设置(1)正弦波归一化数据生成函数 S(t)=sin(t)/(2K)(2)三
8、角波归一化数据生成函数T(t)=t/(63*2K)(t64)T(t)=(127-t)/(63*2K)(64t128)T(t)=(t-128)/(63*2K)(128t192)T(t)=(255-t)/(63*2K)(192t256)(3)方波归一化数据生成函数根据电压分辨率可以得出方波归一化数据生成函数为:F(t)=1/(2k)(0t128)F(t)=-1/(2k)(128t256)(4)5 次谐波数据的生成函数 W(t)=a*sin(t)+b*sin(2t+m)+c*sin(3t+n)+d*sin(4t+p)+e*sin(5t+q)此函数要求幅值和相位参数:(5)正弦波、方波、三角波线性组合
9、波数据生成函数 D(t)=a*S(t)+b*F(t+m)+c*T(t+n)(E)实验参考程序/*-*功能:STM32 DAC 数模转换(正弦波/矩形波/三角波)输出实验*说明:按SW5 输出正弦波/按 SW4 输出矩形波/按 SW3 输出三角波,输出端口 PA4*-*/#include#include /STM32F10 x Library Definitions#include STM32_Reg.h/STM32 register and bit Definitions#include STM32_Init.h/STM32 Initialization 文档来源为:从网络收集整理.word
10、版本可编辑.欢迎下载支持.#include common.h#include sine_wave_1024.h/输出端口:PA4#define SINE_W AVE 1/sine 正弦波#define RECT_W AVE 2/rectangular 矩形波#define HACKLE_WA VE 3/hackle 三角波UINT8 flag=0;UINT8 func=SINE_W AVE;/*-MAIN function*-*/int main(void)UINT16 i=0;UINT32*pDAC_BASE=(UINT32*)DAC_BASE;stm32_Init();/STM32 set
11、up LED_Init();/打开 DAC 时钟使能RCC-APB1ENR|=(UINT32)(1 29);/设置 DAC 控制参数*(pDAC_BASE+0 x00)=(0 x01 0)|(0 x00 2)|(0 x04 3)|(0 x03 6)|(0 x0b 8);*(pDAC_BASE+0 x04)=0 x01 printf(-Program start-rn);while(TRUE)/Loop forever if(!Get_SW5()func=SINE_WA VE;else if(!Get_SW4()文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.func=RECT_
12、W AVE;else if(!Get_SW3()func=HACKLE_WA VE;switch(func)case SINE_WAVE:/-#ifdef SINE_W AVE if(i 1024)i+=2;else i=0;*(pDAC_BASE+0 x08)=Sine_WAVEi 4;#endif/-break;case RECT_WAVE:#ifdef RECT_W AVE for(i=0;i2000;i+)*(pDAC_BASE+0 x08)=0 x0fff;for(i=0;i2000;i+)*(pDAC_BASE+0 x08)=0;#endif/-break;case HACKLE_
13、WA VE:#ifdef HACKLE_WA VE if(flag)文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.flag=0;while(TRUE)if(i 0)i-=1;else break;*(pDAC_BASE+0 x08)=i;#endif break;default:break;/-/end while /end main/*-*设置方向*-*/文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.void Set_IO_direction(UINT8 PORT,UINT8 GPIO,UINT8 Value)RCC-APB2ENR|=RCC_APB2EN
14、R_IOPAEN;if(PORT=PORT_A)if(GPIO CRL&=(0 x0f CRL|=(Value CRH&=(0 x0f CRH|=(Value (GPIO*4-8*4);/Set used bit if(PORT=PORT_B)if(GPIO CRL&=(0 x0f CRL|=(Value CRH&=(0 x0f CRH|=(Value (GPIO*4-8*4);/Set used bit if(PORT=PORT_C)文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.if(GPIO CRL&=(0 x0f CRL|=(Value CRH&=(0 x0f CRH|
15、=(Value (GPIO*4-8*4);/Set used bit if(PORT=PORT_D)if(GPIO CRL&=(0 x0f CRL|=(Value CRH&=(0 x0f CRH|=(Value (GPIO*4-8*4);/Set used bit if(PORT=PORT_E)if(GPIO CRL&=(0 x0f CRL|=(Value CRH&=(0 x0f CRH|=(Value SR&USART_FLAG_TXE);USART2-DR=(ch&0 x1FF);return(ch);/*-GetKey Read character to Serial Port.*-*/
16、int GetKey(void)while(!(USART2-SR&USART_FLAG_RXNE);return(int)(USART2-DR&0 x1FF);void LED_Init(void)Set_IO_direction(PORT_E,LED1,OUTPUT);Set_IO_direction(PORT_E,LED2,OUTPUT);文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.Set_IO_direction(PORT_E,LED3,OUTPUT);Set_IO_direction(PORT_E,LED4,OUTPUT);Set_IO_direction(POR
17、T_B,SW2,INPUT);Set_IO_direction(PORT_B,SW3,INPUT);Set_IO_direction(PORT_E,SW4,INPUT);Set_IO_direction(PORT_E,SW5,INPUT);Turn_OFF_LED1();Turn_OFF_LED2();Turn_OFF_LED3();Turn_OFF_LED4();/*-insert a delay time.*-*/void delay(unsigned int nCount)for(;nCount!=0;nCount-);正弦波归一化程序:tosin256=0 x80,0 x83,0 x8
18、6,0 x89,0 x8d,0 x90,0 x93,0 x96,0 x99,0 x9c,0 x9f,0 xa2,0 xa5,0 xa8,0 xab,0 xae,0 xb1,0 xb4,0 xb7,0 xba,0 xbc,0 xbf,0 xc2,0 xc5,0 xc7,0 xca,0 xcc,0 xcf,0 xd1,0 xd4,0 xd6,0 xd8,0 xda,0 xdd,0 xdf,0 xe1,0 xe3,0 xe5,0 xe7,0 xe9,0 xea,0 xec,0 xee,0 xef,0 xf1,0 xf2,0 xf4,0 xf5,0 xf6,0 xf7,0 xf8,0 xf9,0 xf
19、a,0 xfb,0 xfc,0 xfd,0 xfd,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xfe,0 xfd,0 xfd,0 xfc,0 xfb,0 xfa,0 xf9,0 xf8,0 xf7,0 xf6,0 xf5,0 xf4,0 xf2,0 xf1,0 xef,0 xee,0 xec,0 xea,0 xe9,0 xe7,0 xe5,0 xe3,0 xe1,0 xde,0 xdd,0 xda,0 xd8,0 xd6,0 xd4,0 xd1,0 xcf,0 xcc,0 xc
20、a,0 xc7,0 xc5,0 xc2,0 xbf,0 xbc,0 xba,0 xb7,0 xb4,0 xb1,0 xae,0 xab,0 xa8,0 xa5,0 xa2,0 x9f,0 x9c,0 x99 文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.,0 x96,0 x93,0 x90,0 x8d,0 x89,0 x86,0 x83,0 x80,0 x80,0 x7c,0 x79,0 x76,0 x72,0 x6f,0 x6c,0 x69,0 x66,0 x63,0 x60,0 x5d,0 x5a,0 x57,0 x55,0 x51,0 x4e,0 x4c,0 x48,0
21、 x45,0 x43,0 x40,0 x3d,0 x3a,0 x38,0 x35,0 x33,0 x30,0 x2e,0 x2b,0 x29,0 x27,0 x25,0 x22,0 x20,0 x1e,0 x1c,0 x1a,0 x18,0 x16,0 x15,0 x13,0 x11,0 x10,0 x0e,0 x0d,0 x0b,0 x0a,0 x09,0 x08,0 x07,0 x06,0 x05,0 x04,0 x03,0 x02,0 x02,0 x01,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0
22、 x00,0 x01,0 x02,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x09,0 x0a,0 x0b,0 x0d,0 x0e,0 x10,0 x11,0 x13,0 x15,0 x16,0 x18,0 x1a,0 x1c,0 x1e,0 x20,0 x22,0 x25,0 x27,0 x29,0 x2b,0 x2e,0 x30,0 x33,0 x35,0 x38,0 x3a,0 x3d,0 x40,0 x43,0 x45,0 x48,0 x4c,0 x4e,0 x51,0 x55,0 x57,0 x5a,0 x5d,0 x60,0 x63,0
23、 x66,0 x69,0 x6c,0 x6f,0 x72,0 x76,0 x79,0 x7c,0 x80;六数据测试与测试分析(1)输出波形频率范围测试测试数据见下表:条件:峰峰值为 5V。表 1 频率测量预置频率/Hz 方波正弦波三角波1 1.01 1.01 1.01 100 99.99 99.99 99.99 200 199.98 199.98 199.98 500 500.02 500.02 500.02 1000 1000.1 1000.0 1000.1 2000 2000.2 2000.3 2000.3 5000 5000.8 5000.8 5000.9 10,000 10005 1
24、0005 10005 20,000 20,008 20009 20009 50,000 50003 50003 50004 100,000 100005 100005 100006 200,000 200007 200007 200007(2)输出波形的幅度测量测试数据见下表:条件:频率为 100Hz。表 2 波形幅测量预置峰峰值/v 方波/v 正弦波/v 三角波/v 0.1 0.2 0.22 0.26 0.32 0.5 0.51 0.54 0.56 文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.1 1.01 1.05 1.1 2 2.00 2.08 2.1 5 5.01 5
25、.02 5.08 10 10.0 10.0 10.1 结果分析总结:1 从表中可以看出频率可以实现1HZ 步进可调,而且精度比较高。2 从表中我们可以看出,幅度可调,步进为0.1V。但输出峰峰值为0.1V时效果不佳,无法测量。当峰峰值大于0.5V 时精度比较高。文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.毕业设计(论文)管理规定及相关表格汇编目录本科生毕业设计(论文)管理规定 1 毕业论文(设计)工作实施细则(草案)2 优秀毕业论文评选办法7 毕业论文的写作与排版规范 10 毕业设计(论文)写作模板 14 毕业设计(论文)答辩提问记录表 21 毕业设计第周 工作总结 22毕
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精编 参考 基于 stm32 信号发生器
限制150内