首页 基于MSP430G2211实现的简易信号发生器(景振华)

基于MSP430G2211实现的简易信号发生器(景振华)

举报
开通vip

基于MSP430G2211实现的简易信号发生器(景振华)MSP430G2系列Launchpad开发板应用实例作品 基于MSP430G2211实现的简易信号发生器 景振华 美国德州仪器半导体技术上海(有限)公司 西安电子科技大学MSP430单片机联合实验室 2011年12月 目 录 3第一章 作品概述 3第一节 作品基本情况介绍 3第二节系统硬件和软件框图 5第二章 作品硬件系统设计 5第一节 MSP430G2系列Launchpad开发板介绍 6第二节 方案论证、比较与选择 7第三节 主要模块电路 10第四节 系统组成原理图及元器件清单 ...

基于MSP430G2211实现的简易信号发生器(景振华)
MSP430G2系列Launchpad开发板应用实例作品 基于MSP430G2211实现的简易信号发生器 景振华 美国德州仪器半导体技术上海(有限)公司 西安电子科技大学MSP430单片机联合实验室 2011年12月 目 录 3第一章 作品概述 3第一节 作品基本情况介绍 3第二节系统硬件和软件框图 5第二章 作品硬件系统设计 5第一节 MSP430G2系列Launchpad开发板介绍 6第二节 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 论证、比较与选择 7第三节 主要模块电路 10第四节 系统组成原理图及元器件 清单 安全隐患排查清单下载最新工程量清单计量规则下载程序清单下载家私清单下载送货清单下载 12第五节 PCB板的设计 14第六节 硬件的安装调试 16第三章 作品软件系统设计 16第一节 DDS原理及在作品中的实现 17第二节 程序流程图进行介绍 19第三节 子程序API介绍 27第四节 各功能子程序在CCS环境下的设计与调试 29第四章 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 与思考 第一章 作品概述 第一节 作品基本情况介绍 本作品基于TI的LaunchPad设计了一款简易信号发生器。选用TI的MSP430G2211这款单片机。作品采用DDS原理来实现信号的产生,使用PWM波模拟DAC,外围使用一些基本的滤波和放大电路,实现了可产生正弦波、三角波、锯齿波的简易信号发生器。相关技术参数请见表1.1. 波形种类 正弦波 三角波 锯齿波 频率范围(Hz) 1~100 频率步进间隔(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开发板的特性: · USB 调试与编程接口无需驱动即可安装使用,且具备高达9600 波特的UART 串行通信速度 · 支持所有采用PDIP14 或PDIP20 封装的MSP430G2xx 和MSP430F20xx 器件 · 分别连接至绿光和红光LED 的两个通用数字I/O 引脚可提供视觉反馈 · 两个按钮可实现用户反馈和芯片复位 · 器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板 · 高质量的20引脚DIP插座,可轻松简便地插入目标器件或将其移除 本作品中所使用的MSP430G2211单片机的资源和功能: · 16位RISC指令集处理器 · 128字节RAM(数据)+2K字节Flash存储器(代码) · 一个16位TA定时器 · 内置数控振荡器(DCO),最高频率可达21MHz · 9个双向I/O口,每个I/O口都可以作为中断源 · 自带BOR检测电路,能自动避开上电瞬间的毛刺并产生可靠的复位信号 · 内置低功耗低频振荡器(VLO) · 可通过软件配置的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。 按键 S3 S4 S5 S6 功能 信号输出使能键 频率- 频率+ 信号选择键 表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。 Comment Description Designator Footprint Quantity 10uf/10v   C1, C2,C3, C6, C14 C1206 5 104 Capacitor C4, C5, C7, C8, C10, C11, C12, C13 0805 8 106 Capacitor C9 1206 1 IN4007   D1 D1206-AK 1 YELLOW   D3 D0805 1 GREEN   D4 D0805 1 RED   D2,D5 D0805 2 5819   D7 D1206-AK 1 MSP430JTAG MSP340 JTAG J1 IDC14-Z 1 5VDC_JK 5V电源插头 J2 PWRJK0 1 Relay-SPDT Single-Pole Dual-Throw Relay K1 RELAY-HRB2-? 1 Header 7X2 LaunchPad在底板上的插座 P1, P2 HDR2X7 2 1PIN 安装孔 P3, P4, P5, P6 PAD 4 SMA SMA头 P7 BNC_RA CON 1 9013 PNP Bipolar Transistor Q1 SOT-23T 1 3K3   R1, R3, R4, R5, R8, R22 0805 6 4K7   R2 0805 1 100   R6 0805 1 330   R7 0805 1 RES   R9, R12, R14, R15, R16, R17, R18, R19, R21 0805 9 Res Adj2 可调精密电位器 R10 VR_precise 1 SW-SPDT 继电器 S1 SW_1H 1 SW-PB   S2,S3, S4, S5, S6 KEYSB1 5 TLV1117-33CDCY   U1 SOT-223 1 ICL7660   U2 SO-8 1 LM358AD Dual Operational Amplifier U3 SO-8 1 XTAL1 Crystal Y1 XTAL1 1 表2.3 系统元器件清单列表 第五节 PCB板的设计 系统PCB板的顶层如图2.7所示。 图2.7 系统PCB版顶层 系统PCB板的底层如图2.8所示 图2.8 系统PCB板底层 PCB设计的注意事项: · 电源线尽量粗一点。比如主电源线可以选30mil,分支电源线可以选用15mil。 · 芯片的退耦电容应尽量靠近芯片。并且退耦电容的连接线尽量粗一点。 · 由于本作品是信号发生器,所以尽量保证地平面的完整性。 · 注意大型元器件的安装位置,不要影响LaunchPad的安装。比如本作品中的精密电位器体积比较大,应注意安装位置。 · 与用户交互功能的器件应注意安装位置。比如,四个菜单按键的位置,应该便于用户操作;信号指示灯的位置,应便于用户观察;精密电位器的位置,应便于用户调节;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时,可以得到输出信号的最小频率步进为 ……………………………………………………………………….……6 …………7 由于正弦函数为非线性函数,很难实时计算,一般通过查表的方法来快速获得函数值。 (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;i<65535;i++);//延时,使系统时钟稳定 } (3) 函数名:void TA_init(void) 输入输出变量:无 功能:定时器TA初始化 void TA_init(void) { TACTL|=TASSEL_2+MC_1;//TA时钟源选择SMCLK,增计数模式 TACCTL1=OUTMOD_7;//模式7,PWM输出模式 TACCR0=255; TACCTL0|=CCIE;//打开中断 } (4) 函数名:__interrupt void TA_ISR (void) 输入输出变量:无 功能:定时器TA中断服务程序 #pragma vector=TIMERA0_VECTOR __interrupt void TA_ISR (void) { if(WaveSelect==5)//Sine { Count_line++; if(Count_line>Sin_line) { TACCR1=sin[M]; M+=Delt_M; if(M>=1024) M=M-1024; Count_line=0; } } if(WaveSelect==10)//Triangle { Count_line++; if(Count_line>3) { if((Count<=1405)&&(Rise==1))//三角波上升 { Count+=f_out; if(Count>1405) { 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_line>6) { 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;i<1000;i++); if((P1IN&PushKey)==PushKey) { P1IFG=0;return; } if(PushKey&BIT6)//对应电路板上的S3 S3:Disable Output { TACCTL0|=CCIE;//开TA中断,允许输出信号 } if(PushKey&BIT7)//对应电路板上的S4 S4:Sub { while((P1IN&BIT7)==0)//判断按键是否是长按 { Keytime1++; if(Keytime1>60000) { Keytime2++; Keytime1=0; if(Keytime2>10) { 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;i<1000;i++); if((P2IN&PushKey)==PushKey) { P2IFG=0;return; } if(PushKey&BIT6)//对应电路板上的S6 S6:Select Wave { TACCTL0&=~CCIE; WaveSelect+=5; switch(WaveSelect) { case 5: TACCR0=255;P1OUT|=BIT5;P1OUT&=~(BIT3+BIT4);break; case 10: TACCR0=1405;P1OUT|=BIT4;P1OUT&=~(BIT3+BIT5);break; case 15: TACCR0=1405;P1OUT|=BIT3;P1OUT&=~(BIT4+BIT5);break; //case 20: WaveSelect=5;break; default: WaveSelect=5;TACCR0=255;P1OUT|=BIT5;P1OUT&=~(BIT3+BIT4);break; } } if(PushKey&BIT7)//对应电路板上的S5 S5:Add { while((P2IN&BIT7)==0)//判断按键是否是长按 { Keytime1++; if(Keytime1>60000) { Keytime2++; Keytime1=0; if(Keytime2>10) { 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 sin[1024]={ 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口的初始化语句为: P2DIR&=~(BIT6+BIT7);//设为输入 P2SEL&=~(BIT6+BIT7);//关闭第二功能 P2IES|=BIT6+BIT7;//下降沿触发 P2IE|=BIT6+BIT7;//开中断 在第一次设计过程中,没有关闭P2.6,P2.7的第二功能,结果程序不能进P2口的中断服务程序。检测方法:在P2口中断服务程序中设置断点,全速运行程序,按下按键后程序不停止,说明没进中断程序。硬件检查没有问题,说明P2口初始化不正确。经过检查初始化语句后发现没关闭第二功能。因为P2.6,P2.7脚默认情况是晶体整荡器的两个输入脚,只有关闭第二功能后,才可以作为普通I/O口来使用。 (2) 定时器TA的中断服务程序TA_ISR (void) 在设计过程中,曾经出现过这样一个问题:程序可以进入TA的中断服务程序中,单产生的PWM波形却不正常。 通过CCS的Registers观察窗口,发现TA0的标志位能正常置位,但却不能产生正确的波形。后来经过检查发现,是中断向量入口写错了,写成#pragma vector=TIMERA1_VECTOR;正确的应该是#pragma vector=TIMERA0_VECTOR。改正后,波形产生正常。 第四章 总结与思考 (1) 总结 本文完成了基于MSP430G2211的简易信号发生器的设计与实现,从硬件和软件两方面,对使用PWM波模拟DAC和利用DDS技术实现信号发生器进行了研究。经过近两个月的研究设计,完成了作品的设计与制作,输出波形稳定。可以输出0~100Hz的正弦波、三角波、锯齿波,波形幅度在0~10V范围内连续可调,波形频率可调。另外,作品还设计了输出使能的功能,使在切换波形时,禁止输出,保护后级电路的安全。 虽然本作品设计完成了一个简易的信号发生器。但由于时间仓促和本人能力有限,本作品还有许多需要完善和改进的地方。下面列出几条改进意见: 1. 优化软件程序,完善功能。MSP430G2211的Flash大小是2KB,作品中正弦波幅值和相位量化表是1024个点,在Flash中正好占用1KB的存储空间。相当于留给程序代码的空间只有1KB。由于受到代码空间大小的限制,本作品只产生了正弦波、三角波、锯齿波。因此可以对系统软件进行优化,充分利用这1KB的空间,开发出结构更紧凑,功能更完善的程序。 2. 使用LCD显示。由于受Flash容量的限制,本作品使用LED来指示波形。除了对软件进行优化外,还可以减少部分功能,以实现LCD显示。这需要根据设计要求灵活掌握。作品的硬件设计中预先留有LCD端口。 3. 优化硬件设计。可以在输出端增加功率放大电路,增加信号的驱动能力。如果实现了LCD显示,还可以使用MSP430G2231中的AD功能对输出信号的幅度进行回采,并显示。 (2) 思考 在作品设计的过程中,曾经考虑过其他方案和实现方法。下面提出几个问题,以供大家思考: 1) 如果不采用PWM波模拟DAC的方式,直接使用一个DAC芯片,电路会发生哪些改变?单片机资源是否够用? 2) 进一步增加输出波形的种类,电路和软件需要做哪些修改? 3) 如果使用FPGA+MSP430G2211的方式来实现一个函数信号发生器,MSP430G2211将在该系统中发挥什么样的作用? _1387007392.unknown _1387008007.unknown _1387008096.unknown _1387010764.unknown _1387039518.unknown _1387041509.unknown _1387037928.unknown _1387010169.unknown _1387008031.unknown _1387008051.unknown _1387007529.unknown _1387007990.unknown _1387007572.unknown _1387007516.unknown _1386232023.vsd � TI的LaunchPad MSP430g2211� 滤波电路� 增益控制模块� 电源模块� 菜单按键� 信号指示模块� 信号输出 _1387007278.unknown _1386250888.vsd � � 开始� 系统初始化� Main()函数� _1386231983.vsd � � � 关闭信号输出; 置其他信号标志位; 按键中断 信号选择键按下? 返回 有按键?� N Y 中断标志位清零 “频率+”按下? “频率-”按下? “输出使能键”按下? 是否长时间按下? N N N N Y Y 输出频率加1 是否长时间按下? 输出频率减1 信号输出 输出频率快速递增 输出频率快速递减 Y Y Y Y _1386232004.vsd � 定时器TA中断函数� 主函数 按键中断函数 _1386231958.vsd � � � 定时器TA中断 正弦波标志位=1? 返回 Y 三角波标志位=1? 锯齿波标志位=1? N N Y 正弦波信号输出 三角波信号输出 锯齿波信号输出 Y Y 判断信号标志位
本文档为【基于MSP430G2211实现的简易信号发生器(景振华)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_645227
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:30
分类:互联网
上传时间:2012-08-06
浏览量:25