基于MSP430G2211实现的简易信号发生器.doc_第1页
基于MSP430G2211实现的简易信号发生器.doc_第2页
基于MSP430G2211实现的简易信号发生器.doc_第3页
基于MSP430G2211实现的简易信号发生器.doc_第4页
基于MSP430G2211实现的简易信号发生器.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

msp430g2系列launchpad开发板应用实例作品基于msp430g2211实现的简易信号发生器景振华美国德州仪器半导体技术上海(有限)公司西安电子科技大学msp430单片机联合实验室2011年12月目 录第一章 作品概述3第一节 作品基本情况介绍3第二节系统硬件和软件框图3第二章 作品硬件系统设计5第一节 msp430g2系列launchpad开发板介绍5第二节 方案论证、比较与选择6第三节 主要模块电路7第四节 系统组成原理图及元器件清单10第五节 pcb板的设计12第六节 硬件的安装调试14第三章 作品软件系统设计16第一节 dds原理及在作品中的实现16第二节 程序流程图进行介绍17第三节 子程序api介绍19第四节 各功能子程序在ccs环境下的设计与调试27第四章 总结与思考29第一章 作品概述第一节 作品基本情况介绍本作品基于ti的launchpad设计了一款简易信号发生器。选用ti的msp430g2211这款单片机。作品采用dds原理来实现信号的产生,使用pwm波模拟dac,外围使用一些基本的滤波和放大电路,实现了可产生正弦波、三角波、锯齿波的简易信号发生器。相关技术参数请见表1.1.波形种类正弦波三角波锯齿波频率范围(hz)1100频率步进间隔(hz)1最大幅值vp-p(v)8输出阻抗()50其他功能幅度连续可调、频率按键可调、输出使能控制、led指示表1.1 简易信号发生器的技术参数整个作品可以分成三个主要方面介绍:信号产生与处理方面。首先,在msp430g2211上建立一个正弦波相位和幅值的量化表,利用定时器产生占空比可调的pwm波,再结合外围的低通滤波器电路来模拟dac,实现dds的功能。信号产生后通过高通滤波器滤除波形中的直流成分。然后通过一个由运算放大器和精密可调电位器组成的运算放大电路,以实现信号的增益控制。最后信号通过sma头输出。人机交互方面。本作品使用四个菜单按键和三个led。四个菜单按键的功能分别是:波形切换、频率加、频率减、输出使能。三个led灯,分别是红灯,代表输出的正弦波;绿灯,代表输出的是三角波;黄灯,代表输出的是锯齿波。电源方面。ti的launchpad上带有电源,本可以直接使用,但是由于信号发生器对电源噪声的要求比较高,所以本作品自己设计了电源电路。第二节 系统硬件和软件框图(1) 系统硬件框图整个系统硬件主要由ti的launchpad、滤波器电路模块、增益控制模块、按键菜单及led指示灯模块和电源模块组成。系统硬件框图如图1.1所示。图1.1 系统硬件框图(2) 系统软件框图整个系统的软件主要有主函数、定时器ta中断函数、按键中断函数三个大的模块组成。系统软件框图如图1.2所示。图1.2 系统软件款图各函数的作用和相互关系:在主函数中首先对系统的时钟、i/o口、定时器ta进行了初始化。初始化完毕,开启总中断。接着进入while(1)循环。在while(1)中对输入信号频率的几个相关参数进行计算。在定时器ta的中断服务程序中会利用这几个参数产生对应频率的pwm波。按键中断函数主要对四个菜单按键的动作进行处理。这四个菜单按键可以实现波形的切换,频率的加减,信号的使能输出。在按键中断函数中修改的信号频率大小和波形的种类这两个参数会被主函数和定时器ta中断函数调用。第二章 作品硬件系统设计第一节 msp430g2系列launchpad开发板介绍ti的msp430g2系列launchpad开发板是一款适用于ti 最新msp430g2xx 系列产品的完整开发解决方案。其基于usb 的集成型仿真器可提供为全系列msp430g2xx 器件开发应用所必需的所有软、硬件。launchpad 具有集成的dip目标插座,可支持多达20 个引脚,从而使msp430 value line器件能够简便地插入launchpad电路板中。此外,其还可提供板上flash 仿真工具,以直接连接至pc 轻松进行编程、调试和评估。此外,它还提供了从msp430g2xx 器件到主机pc 或相连目标板的9600 波特uart 串行连接。其实物图如图2.1所示。图2.1 msp430g2系列launchpad开发板实物图msp430g2系列launchpad开发板的特性:l usb 调试与编程接口无需驱动即可安装使用,且具备高达9600 波特的uart 串行通信速度 l 支持所有采用pdip14 或pdip20 封装的msp430g2xx 和msp430f20xx 器件 l 分别连接至绿光和红光led 的两个通用数字i/o 引脚可提供视觉反馈 l 两个按钮可实现用户反馈和芯片复位l 器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板 l 高质量的20引脚dip插座,可轻松简便地插入目标器件或将其移除本作品中所使用的msp430g2211单片机的资源和功能:u 16位risc指令集处理器u 128字节ram(数据)+2k字节flash存储器(代码)u 一个16位ta定时器u 内置数控振荡器(dco),最高频率可达21mhzu 9个双向i/o口,每个i/o口都可以作为中断源u 自带bor检测电路,能自动避开上电瞬间的毛刺并产生可靠的复位信号u 内置低功耗低频振荡器(vlo)u 可通过软件配置的8通道比较器第二节 方案论证、比较与选择方案一:控制部分由msp430g2211实现,波形产生采用低温漂、低失真、高线性单片压控函数发生器(如icl8038、max038等)。它们可同时产生频率可控可变的三角波、正弦波、脉冲波等。用d/a转换器的输出来改变调节电压,也可以实现频率的数控调整。优缺点:方法简单易行,采用单片专用芯片,系统体积大大减小。但由于压控的非线性,频率步进的步长控制困难。而且整个设计中msp430g2211仅仅完成简单的控制功能,资源得不到充分的利用。方案二:控制部分由msp430g2211实现,波形产生部分使用fpga或cpld芯片采用波形查找表结合高速的dac产生。优缺点:此方案自由度大,符合现在的发展趋势。但是,fpga或cpld芯片价格相对比较高,加上高速的dac芯片,使设计成本大大提高。而且整个设计中msp430g2211仅仅完成简单的控制功能,资源得不到充分的利用。方案三:由msp430g2211实现对专门的dds芯片(如ad9850、ad9833)的控制,来产生各种波形。优缺点:利用此方案产生波形的频率稳定度高,易于程控。但是,专门的dds芯片价格高,系统成本高。方案四:由msp430g2211结合低通滤波器电路来模拟实现dds芯片的功能,进而产生各种波形。优缺点:利用此方案可以充分利用msp430g2211上资源,使系统成本大大降低。但是此方案只能产生低频率的波形。综上,方案四可以充分利用msp430g2211的资源,外围电路简单、系统成本低,可以满足简易信号发生器的要求。所以本作品最终采用方案四。第三节 主要模块电路(1) 电源模块本作品中总共使用了三种电源:5v、3.6v、-5v。其中3.6v的产生是在1117-3.3的参考端加了一个二极管1n5819。由于1n5819的导通电压大约为0.3v,可将1117-3.3的输出电压太高0.3v,变为3.6v。-5v由负压产生芯片icl7660产生。电源模块电路如图2.2所示。图2.2 电源模块电路(2) 滤波电路模块滤波电路模块主要有低通滤波器和高通滤波器(隔直电路)组成。前面的r15、r16、r17、c10、c11和c12组成三阶低通滤波器。3db点为600hz,可以有效的将信号中的高频成分滤除。高通滤波器电路。c9和r19组成高通滤波电路,3db点为362mhz,可以将信号中的直流成分有效的滤除。滤波电路如图2.3所示。图2.3 滤波电路模块(3) 幅度调节及信号输出模块幅度调节电路是由运算放大器lm358和一些电阻电容组成的反相放大电路。其中r10是精密可调电位器,方便用户对信号的幅度进行调节。信号输出电路有一个50的电阻和sma头组成。50的电阻可以保证整个信号发生器的输出阻抗为50。信号幅度调节和输出部分电路如图2.4所示。图2.4 信号幅度调节和输出电路(4) 菜单按键和指示模块作品设计了四个菜单按键,如下图所示。各自的功能见表2.1。按键s3s4s5s6功能信号输出使能键频率-频率+信号选择键表2.1 菜单按键功能系统开机启动后,默认输出的波形是10hz的正弦波。通过点按s5和s4可以实现频率的加1减1,长按可以实现频率的快速加减。通过点按s6,可以切换波形,同时相应的led灯会亮(各led灯代表的波形见表二)。切换波形时,为了保护用户电路,禁止信号输出。当用户切换到需要的波形时,可以点按s3,使能信号输出。灯亮代表输出波形如表2.2所示。led灯d3 黄色led灯d4 绿色led灯d5 红色led灯输出波形锯齿波三角波正弦波表2.2 led指示灯代表波形菜单按键和led信号指示灯的电路见图2.5。图2.5 菜单按键和信号指示灯电路第四节 系统组成原理图及元器件清单系统组成的原理图请见图2.6。图2.6 系统原理图元器件清单列表见表2.3。commentdescriptiondesignatorfootprintquantity10uf/10vc1, c2,c3, c6, c14c12065104capacitorc4, c5, c7, c8, c10, c11, c12, c1308058106capacitorc912061in4007d1d1206-ak1yellowd3d08051greend4d08051redd2,d5d080525819d7d1206-ak1msp430jtagmsp340 jtagj1idc14-z15vdc_jk5v电源插头j2pwrjk01relay-spdtsingle-pole dual-throw relayk1relay-hrb2-?1header 7x2launchpad在底板上的插座p1, p2hdr2x721pin安装孔p3, p4, p5, p6pad4smasma头p7bnc_ra con19013pnp bipolar transistorq1sot-23t13k3r1, r3, r4, r5, r8, r22080564k7r208051100r608051330r708051resr9, r12, r14, r15, r16, r17, r18, r19, r2108059res adj2可调精密电位器r10vr_precise1sw-spdt继电器s1sw_1h1sw-pbs2,s3, s4, s5, s6keysb15tlv1117-33cdcyu1sot-2231icl7660u2so-81lm358addual operational amplifieru3so-81xtal1crystaly1xtal11表2.3 系统元器件清单列表第五节 pcb板的设计系统pcb板的顶层如图2.7所示。 图2.7 系统pcb版顶层系统pcb板的底层如图2.8所示图2.8 系统pcb板底层pcb设计的注意事项:l 电源线尽量粗一点。比如主电源线可以选30mil,分支电源线可以选用15mil。l 芯片的退耦电容应尽量靠近芯片。并且退耦电容的连接线尽量粗一点。l 由于本作品是信号发生器,所以尽量保证地平面的完整性。l 注意大型元器件的安装位置,不要影响launchpad的安装。比如本作品中的精密电位器体积比较大,应注意安装位置。l 与用户交互功能的器件应注意安装位置。比如,四个菜单按键的位置,应该便于用户操作;信号指示灯的位置,应便于用户观察;精密电位器的位置,应便于用户调节;sma信号输出头的位置,应便于用户连线。第六节 硬件的安装调试本作品的硬件系统是由信号产生模块、低通滤波器模块、高通滤波器模块、增益控制模块、菜单按键及指示模块和电源模块组成。用户在安装调试的过程中,应该按照模块的先后顺序逐个调试。确保整个系统安装完成后,各个模块工作正常,整个系统板可以正常工作。避免没有调试各个模块的情况下,直接安装完整个系统,而系统不能正常工作,却不知道是哪个模块出现了故障。安装调试的顺序:1. 安装电源模块。安装完成后测试各个电压输出是否正常。整个系统的电压有:+5v,+3.6v,-5v。2. 安装低通滤波器模块。可以先在launchpad板子上先写一个简单的信号测试程序,当低通滤波器安装完成后,测试输出波形是否正常。3. 安装高通滤波器模块。安装完成后测试波形中的低频(直流)成分是否滤除。4. 安装增益控制模块。安装完成后测试精密电位器是否能控制信号的增益。如果正常,说明信号处理电路部分已经可以正常工作。5. 安装菜单按键和指示模块。安装完成后写一个简单的程序进行调试,测试各个器件都可以正常工作。如果以上步骤都正确完成,那么整个硬件电路已经成功安装完成。接下来就可以对系统的软件进行调试了。整个系统安装完毕后实物图如2.9所示。图2.9 系统实物图注意:本系统采用自己设计的电源模块。为使launchpad正常工作,需将launchpad中j3的跳线帽全部去掉。第三章 作品软件系统设计第一节 dds原理及在作品中的实现(1) dds原理dds是直接数字式频率合成器(direct digital synthesizer)的缩写。与传统的频率合成器相比,dds具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。下面对dds的原理进行介绍。对于一个频率为的正弦信号,可以用下式来描述:.1其相位为:.2现将正弦信号的相位和幅值均进行数字化,使用频率为的基准时钟对正弦信号进行抽样.3将2切割成2n等份作为最小量化单位,从而得到的数字量为:.4.5当m取1时,可以得到输出信号的最小频率步进为.67由于正弦函数为非线性函数,很难实时计算,一般通过查表的方法来快速获得函数值。(2) dds在作品中的实现下面以正弦波为例对dds在作品中是如何实现的进行介绍,三角波和锯齿波同理。首先,对正弦波的幅值进行量化,公式1中的a为256。之所以选择256,是由于本作品中生成的1024个点的正弦波相位和幅值量化表中的数值使用的是8位的char型。1024个点占用1k字节的存储空间。在正弦波相位和幅值量化表中存储的数值相对于是以256个时钟为总周期的pwm调制波的高电平值。pwm调制的本质是改变波形中高电平的比例,实际是波形在一个周期内的“面积”。如果将pwm调制波进行低通滤波,取出其直流成分(平均值),滤除后的输出电压将线性正比于pwm的占空比。根据这个原理可以利用pwm输出作为低速dac使用。在软件中,dco的时钟被配置为15.25mhz,但实际测试为15.802368mhz。smclk的时钟源为dcoclk。定时器ta的时钟源为smclk。定时器ta的ccr0为256,而且为了得到稳定的幅值,让正弦波的一个点持续输出占空比相同的60个pwm波形。相当于采样频率为:则由公式6得:当m=2时,相当于在1029hz的采样率下,一个波形只取了512个点,输出波形为2hz。所以可得。利用此原理本作品实现了1到100hz正弦波的产生。以上对dds原理和如何在软件中实现进行了介绍,下面软件具体内容进行介绍。第二节 程序流程图进行介绍(1) 主程序流程图开机后,主程序首先关闭看门狗,接着对相应的i/o口、系统时钟、定时器ta进行初始化,完成后开总中断。然后,执行main函数。主程序流程图如图3.1所示。图3.1 主程序流程图(2) 定时器中断服务程序流程图定时器ta的中断服务程序中主要处理将相应频率的波转化成对应的pwm波输出。定时器中断服务程序流程图如图3.2所示。图3.2 定时器中断服务程序流程图(3) 按键中断服务程序流程图按键中断服务程序中主要处理波形的选择、频率的加减、信号输出使能等功能。按键中断服务程序流程图见图3.3。图3.3 按键中断服务程序流程图第三节 子程序api介绍(1) 函数名:void port_init(void) 输入输出变量:无 功能:io口初始化void port_init(void) p1sel|=bit2;/ta0.1 p1dir|=bit2; p1dir|=(bit3+bit4+bit5); p1out|=bit5;/初始为sine,点亮相应指示灯 p1out&=(bit3+bit4); /四个按键 p1dir&=(bit6+bit7); p1ies|=bit6+bit7; p1ie|=bit6+bit7; p2dir&=(bit6+bit7);/设为输入 p2sel&=(bit6+bit7);/关闭第二功能 p2ies|=bit6+bit7;/下降沿触发 p2ie|=bit6+bit7;/开中断(2) 函数名:void sys_clock_init(void) 输入输出变量:无 功能:系统时钟配置void sys_clock_init(void) dcoctl = 0x60;/dc0=3 bcsctl1= 0x8f;/0x88-rsel=8 dcoclk=1.6mhz 0x8f-rsel=15 dcoclk=15.25mhz for(unsigned int i=0;isin_line) taccr1=sinm; m+=delt_m; if(m=1024) m=m-1024; count_line=0; if(waveselect=10)/triangle count_line+; if(count_line3) if(count1405) count=2810-count; rise=0; taccr1=count; count_line=0; return; if(rise=0)/三角波下降 if(count=f_out)count-=f_out; else count=f_out-count; rise=1; taccr1=count; count_line=0; if(waveselect=15)/sawtooth count_line+; if(count_line6) count+=f_out; if(count=1405)count-=1405; taccr1=count; count_line=0; (5) 函数名:_interrupt void p1_isr_keys(void) 输入输出变量:无 功能:p1口按键中断服务程序#pragma vector=port1_vector_interrupt void p1_isr_keys(void) unsigned int i,keytime1=0,keytime2=0; unsigned char pushkey; pushkey=p1ifg&(bit6+bit7); for(i=0;i60000) keytime2+; keytime1=0; if(keytime210) if(f_out) f_out-=5; keytime2=0; if(f_out) f_out-=1; p1ifg=0; return;(6) 函数名:_interrupt void p2_isr_keys(void) 输入输出变量:无 功能:p2口按键中断服务程序#pragma vector=port2_vector_interrupt void p2_isr_keys(void) unsigned int i,keytime1=0,keytime2=0; unsigned char pushkey; pushkey=p2ifg&(bit6+bit7); for(i=0;i60000) keytime2+; keytime1=0; if(keytime210) if(f_out=100)f_out+=5; else f_out=1; keytime2=0; if(f_out=100)f_out+=1; else f_out=1; p2ifg=0; return;(7) 正弦波幅值和相位量化表const unsigned char sin1024=128,128,129,130,131,131,132,133,134,135,135,136,137,138,138,139,140,141,141,142,143,144,145,145,146,147,148,148,149,150,151,152,152,153,154,155,155,156,157,158,158,159,160,161,161,162,163,164,164,165,166,167,167,168,169,170,170,171,172,172,173,174,175,175,176,177,178,178,179,180,180,181,182,183,183,184,185,185,186,187,187,188,189,189,190,191,191,192,193,193,194,195,195,196,197,197,198,199,199,200,201,201,202,203,203,204,204,205,206,206,207,207,208,209,209,210,210,211,212,212,213,213,214,215,215,216,216,217,217,218,218,219,219,220,221,221,222,222,223,223,224,224,225,225,226,226,227,227,228,228,229,229,230,230,230,231,231,232,232,233,233,234,234,234,235,235,236,236,236,237,237,238,238,238,239,239,240,240,240,241,241,241,242,242,242,243,243,243,244,244,244,245,245,245,245,246,246,246,247,247,247,247,248,248,248,248,249,249,249,249,249,250,250,250,250,251,251,251,251,251,251,252,252,252,252,252,252,252,253,253,253,253,253,253,253,253,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,255,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,251,251,251,251,251,251,250,250,250,250,249,249,249,249,249,248,248,248,248,247,247,247,247,246,246,246,245,245,245,245,244,244,244,243,243,243,242,242,242,241,241,241,240,240,240,239,239,238,238,238,237,237,236,236,236,235,235,234,234,234,233,233,232,232,231,231,230,230,230,229,229,228,228,227,227,226,226,225,225,224,224,223,223,222,222,221,221,220,219,219,218,218,217,217,216,216,215,215,214,213,213,212,212,211,210,210,209,209,208,207,207,206,206,205,204,204,203,203,202,201,201,200,199,199,198,197,197,196,195,195,194,193,193,192,191,191,190,189,189,188,187,187,186,185,185,184,183,183,182,181,180,180,179,178,178,177,176,175,175,174,173,172,172,171,170,170,169,168,167,167,166,165,164,164,163,162,161,161,160,159,158,158,157,156,155,155,154,153,152,152,151,150,149,148,148,147,146,145,145,144,143,142,141,141,140,139,138,138,137,136,135,135,134,133,132,131,131,130,129,128,128,127,126,125,124,124,123,122,121,120,120,119,118,117,117,116,115,114,114,113,112,111,110,110,109,108,107,107,106,105,104,103,103,102,101,100,100,99,98,97,97,96,95,94,94,93,92,91,91,90,89,88,88,87,86,85,85,84,83,83,82,81,80,80,79,78,77,77,76,75,75,74,73,72,72,71,70,70,69,68,68,67,66,66,65,64,64,63,62,62,61,60,60,59,58,58,57,56,56,55,54,54,53,52,52,51,51,50,49,49,48,48,47,46,46,45,45,44,43,43,42,42,41,40,40,39,39,38,38,37,37,36,36,35,34,34,33,33,32,32,31,31,30,30,29,29,28,28,27,27,26,26,25,25,25,24,24,23,23,22,22,21,21,21,20,20,19,19,19,18,18,17,17,17,16,16,15,15,15,14,14,14,13,13,13,12,12,12,11,11,11,10,10,10,10,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6,6,5,5,5,5,4,4,4,4,4,4,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,10,10,10,10,11,11,11,12,12,12,13,13,13,14,14,14,15,15,15,16,16,17,17,17,18,18,19,19,19,20,20,21,21,21,22,22,23,23,24,24,25,25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,36,36,37,37,38,38,39,39,40,40,41,42,42,43,43,44,45,45,46,46,47,48,48,49,49,50,51,51,52,52,53,54,54,55,56,56,57,58,58,59,60,60,61,62,62,63,64,64,65,66,66,67,68,68,69,70,70,71,72,72,73,74,75,75,76,77,77,78,79,80,80,81,82,83,83,84,85,85,86,87,88,88,89,90,91,91,92,93,94,94,95,96,97,97,98,99,100,100,101,102,103,103,104,105,106,107,107,108,109,110,110,111,112,113,114,114,115,116,117,117,118,119,120,120,121,122,123,124,124,125,126,127;第四节 各功能子程序在ccs环境下的设计与调试本节对在各功能子程序在ccs环境下的设计与调试过程中遇到的问题进行举例说明。(1) 主函数main()主函数中主要是对系统的一些初始化。如对i/o口的初始化函数port_init();系统时钟的初始化函数sys_clock_init();ta的初始化函数ta_init()。在设计的过程中,有时某个模块的初始化设置失败,则可通过ccs提供的断点、单步调试等功能查出错误。例如:在p2口的

温馨提示

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

评论

0/150

提交评论