ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:48.37KB ,
资源ID:5906183      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5906183.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于stm32的信号发生器.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于stm32的信号发生器.docx

1、基于stm32的信号发生器课程设计报告设计课题:基于STM32的信号发生器设计 专业班级: 电气与信息工程通信二班* * * * 设计时间: 2013.9.202013.10.7 信号发生器一实验概述本系统以低功耗单片机stm32为主控器件,分为微控制器、FPGA、DA转换器、功率放大等模块,实现了一个能产生任意波形的波形发生器。本设计利用单片机生成各种波形的数据,将数据传输给RAM存储器,通过后级的DA转换器实现波形的产生。系统采用触摸屏方式输入波形参数和手绘波形,频率1HZ步进可调,峰-峰值可在0到10V之间任意调节。电路设计条理清晰,人机交互界面友好,控制方便,很好地完成了题目的所有基本

2、和发挥要求。二实验要求与目的实验要求: 设计简易函数信号发生器系统实验目的: 掌握应用嵌入式系统生成函数信号的方法三实验内容与实验设备实验内容: a)设计程控放大器电路b)设计嵌入式系统电路及程序,实现信号发生器基本功能,可以产生三种标准波形:正玄波、三角波和方波;c)编写嵌入式系统程序,实现函数信号发生器功能,可以对标准波形设计频率、周期、最大值、最小值、峰峰值、偏移量和方波占空比。d)编写嵌入式系统程序,实现随机信号发生器功能,输出在手写板上描绘的波形。e)编写嵌入式系统程序,实现通讯功能,可以通过RS232接口设置输出信号。实验设备:a)示波器、信号发生器、万用表b)STC单片机开发板、

3、C8051F开发板、STM32开发板实验器件: STM32F103ZET6、ADUC7026四方案比较1.1波形生成方案 方案一:采用锁相式频率合成方案 这种方案利用锁相环将压控振荡器VCO的输出频率锁定在所需频率上。这种方案具有很好的窄带跟踪特性,很好的选择所需频率。但由于模拟方法合成的正弦波参数(如:幅度,频率,相位)都很难被控制,难以满足实现任意波形的要求。方案二:采用STM32单片机生成波形,由于是软件滤波,所以不会有寄生的高次谐波分量,生成的波形比较纯净。它的特点是价格低、性能高,在低频范围内稳定性好、操作方便、体积小、耗电少。经比较,方案二既可满足课程设计的基本要求又能充分发挥其优

4、势,电路简单,易控制,性价比高,所以采用该方案1.2任意波形的生成原理 方案一:触摸屏绘制波形 以触摸屏作为操作界面,用户可在触摸屏上输入波形参数及绘制波形。此方法操作简易,并且可绘制任意波形,但是对编程者要求较高,故选择相对简单的用键盘输入数据。方案二:用键盘输入数据采用键盘输入,这是最基本的方法。优点是输入值精确。但用户自定义输入时无法自由输入想要的特殊波形,而且输入数据繁琐,操作麻烦,由于实现相对简单,故本实验采用该方案。五系统设计分析(A)硬件部分 (B) 微控制器软件实现: 微控制器主要用于完成数据的采集,显示以及处理,生成各种波形数据,本系统采样256个数据,采用8位DA转换器,因

5、此RAM地址位设置为8位,数据位设置为8位。微控制器先进行数据收集处理,生成各种波形的归一化数据,然后存储在256位的数组里,根据幅值要求乘以相应的系数,最终生成可以存放在RAM里的数据。 本系统采用12位DA转换器,最大输出电压为5Vpp,功率放大为2倍,所以系统最大的输出电压可以达到10Vpp,可计算出最小电压分辨率为:电压分辨率:K=10/4096(V) (A)是波形发生器的主流图,由系统初始化和人机交互模块组成,其中液晶显示子模块和键盘输入处理子模块占用单片机主要处理时间,单片机反复运行该模块程序人机交互模块相当于系统的监控程序;(B)是定时中断服务流程图,波形发生模块放置在定时中断服

6、务程序中,系统每隔一定时间,产生一个定时中断,暂停主流程运行,转到定时中断服务程序起始处,执行波形发生模块,该模块输出一个样值后,结束此次中断服务,返回主流程断点处继续运行。反复多次定时中断服务,从而完成波形生成。(C)键盘输入处理子模块在具体实现时,键值识别部分作为主程序,键功能处理部分作为子程序,它们之间的关系是主程序调用子程序。键盘的工作过程:(1)扫描键盘,获得列扫描码和行状态码,从而确定被按下的按键的键值;(2)根据键值,通过散转表,跳转到相应的键功能处理部分;(3)进入键处理部分,完成键功能;(4)完成一次键输入工作。通过键盘对单片机系统进行设置,每按一次键,键盘都会有上述的处理过

7、程,每次仅能完成一个键功能。在实际设置波形参数时,一个参数需要多个键功能来实现,那么相应的键盘也要多次完成键值识别,跳转键处理的工作过程。(D)函数参数设置(1)正弦波归一化数据生成函数 S(t)=sin(t) /(2K) (2)三角波归一化数据生成函数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

8、) 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) 此函数要求幅值和相位参数:a.b.c.d.e.m.n.p.q (5)正弦波、方波、三角波线性组合波数据生成函数 D(t)=a*S(t)+ b*F(t+m)+ c*T(t+n)(E)实验参考程序/*-* 功 能 :STM32 DAC 数模转换(正弦波/矩形波/三角波)输出实验 * 说 明 :按 SW5 输出正弦波 / 按 SW4 输出矩形波 / 按 SW3 输出三角波, 输出端口 PA

9、4 *-*/#include #include / STM32F10x Library Definitions#include STM32_Reg.h / STM32 register and bit Definitions#include STM32_Init.h / STM32 Initialization#include common.h#include sine_wave_1024.h/ 输出端口 : PA4#define SINE_WAVE 1/sine 正弦波 #define RECT_WAVE 2/rectangular 矩形波#define HACKLE_WAVE 3/hack

10、le 三角波UINT8 flag = 0;UINT8 func = SINE_WAVE;/*- MAIN function *-*/int main (void) UINT16 i = 0; UINT32 *pDAC_BASE = (UINT32 *)DAC_BASE; stm32_Init(); / STM32 setup LED_Init(); /打开DAC时钟使能 RCC-APB1ENR |= (UINT32)(1 29); /设置DAC控制参数 *(pDAC_BASE + 0x00) = (0x01 0)| (0x00 2) | (0x04 3) | (0x03 6) | (0x0b

11、8); *(pDAC_BASE + 0x04) = 0x01 printf( - Program start - rn); while (TRUE) / Loop forever if(!Get_SW5() func = SINE_WAVE; else if(!Get_SW4() func = RECT_WAVE; else if(!Get_SW3() func = HACKLE_WAVE; switch(func) case SINE_WAVE: /- #ifdef SINE_WAVE if(i 1024) i+=2; else i = 0; *(pDAC_BASE + 0x08) = Si

12、ne_WAVEi 4; #endif /- break; case RECT_WAVE: #ifdef RECT_WAVE for(i=0;i2000;i+) *(pDAC_BASE + 0x08) = 0x0fff; for(i=0;i2000;i+) *(pDAC_BASE + 0x08) = 0; #endif /- break; case HACKLE_WAVE: #ifdef HACKLE_WAVE if(flag) flag = 0; while(TRUE) if(i 0) i -= 1; else break; *(pDAC_BASE + 0x08) = i; #endif br

13、eak; default: break; /- / end while / end main/*- * 设置方向 *-*/void Set_IO_direction(UINT8 PORT, UINT8 GPIO, UINT8 Value) RCC-APB2ENR |= RCC_APB2ENR_IOPAEN; if(PORT = PORT_A) if(GPIO CRL &= (0x0f CRL |= (Value CRH &= (0x0f CRH |= (Value (GPIO * 4 - 8 * 4);/Set used bit if(PORT = PORT_B) if(GPIO CRL &=

14、 (0x0f CRL |= (Value CRH &= (0x0f CRH |= (Value (GPIO * 4 - 8 * 4);/Set used bit if(PORT = PORT_C) if(GPIO CRL &= (0x0f CRL |= (Value CRH &= (0x0f CRH |= (Value (GPIO * 4 - 8 * 4);/Set used bit if(PORT = PORT_D) if(GPIO CRL &= (0x0f CRL |= (Value CRH &= (0x0f CRH |= (Value (GPIO * 4 - 8 * 4);/Set us

15、ed bit if(PORT = PORT_E) if(GPIO CRL &= (0x0f CRL |= (Value CRH &= (0x0f CRH |= (Value SR & USART_FLAG_TXE); USART2-DR = (ch & 0x1FF); return (ch);/*- GetKey Read character to Serial Port. *-*/int GetKey (void) while (!(USART2-SR & USART_FLAG_RXNE); return (int)(USART2-DR & 0x1FF);void LED_Init(void

16、) Set_IO_direction(PORT_E,LED1,OUTPUT); Set_IO_direction(PORT_E,LED2,OUTPUT); Set_IO_direction(PORT_E,LED3,OUTPUT); Set_IO_direction(PORT_E,LED4,OUTPUT); Set_IO_direction(PORT_B,SW2,INPUT); Set_IO_direction(PORT_B,SW3,INPUT); Set_IO_direction(PORT_E,SW4,INPUT); Set_IO_direction(PORT_E,SW5,INPUT); Tu

17、rn_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=0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5 ,0xc7,0x

18、ca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5 ,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd ,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,

19、0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda ,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51 ,0x

20、4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05

21、,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 ; 六数据测试与测试分析(1)输出波形频率范围测试 测试数据见下表:条件

22、:峰峰值为5V。 表1 频率测量预置频率/Hz 方波正弦波三角波1 1.011.011.0110099.9999.9999.99200199.98199.98199.98500500.02500.02500.0210001000.11000.01000.120002000.22000.32000.350005000.85000.85000.910,00010005100051000520,00020,008200092000950,000500035000350004100,000100005100005100006200,000200007200007200007(2)输出波形的幅度测量 测试数据见下表:条件:频率为100Hz。 表2 波形幅测量预置峰峰值/v 方波/v正弦波/v三角波/v0.10.20.220.260.320.50.510.540.5611.01

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1