已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
蕿袃膂薂蒅袂芄莅螄羁羄薀蚀羀肆莃薆罿芈蕿薂罿莁蒂袀羈肀芄螆羇膃蒀蚂羆芅芃薈肅羅蒈蒄肄肇芁螃肃腿蒆虿肃莂艿蚅肂肁薅薁肁膄莈衿肀芆薃螅聿莈莆蚁膈肈薁薇螅膀莄蒃螄节薀螂螃羂莂螈螂膄蚈蚄螁芇蒁薀螁荿芄衿螀聿葿螅蝿膁节蚁袈芃蒇薇袇羃芀蒃袆膅蒆袁袅芈莈螇袅莀薄蚃袄肀莇蕿袃膂薂蒅袂芄莅螄羁羄薀蚀羀肆莃薆罿芈蕿薂罿莁蒂袀羈肀芄螆羇膃蒀蚂羆芅芃薈肅羅蒈蒄肄肇芁螃肃腿蒆虿肃莂艿蚅肂肁薅薁肁膄莈衿肀芆薃螅聿莈莆蚁膈肈薁薇螅膀莄蒃螄节薀螂螃羂莂螈螂膄蚈蚄螁芇蒁薀螁荿芄衿螀聿葿螅蝿膁节蚁袈芃蒇薇袇羃芀蒃袆膅蒆袁袅芈莈螇袅莀薄蚃袄肀莇蕿袃膂薂蒅袂芄莅螄羁羄薀蚀羀肆莃薆罿芈蕿薂罿莁蒂袀羈肀芄螆羇膃蒀蚂羆芅芃薈肅羅蒈蒄肄肇芁螃肃腿蒆虿肃莂艿蚅肂肁薅薁肁膄莈衿肀芆薃螅聿莈莆蚁膈肈薁薇螅膀莄蒃螄节薀螂螃羂莂螈螂膄蚈蚄螁芇蒁薀螁荿芄衿螀聿葿螅蝿膁节蚁袈芃蒇薇袇羃芀蒃袆膅蒆袁袅芈莈螇袅莀薄蚃袄肀莇蕿袃膂薂蒅袂芄莅螄羁羄薀蚀羀肆莃薆罿芈蕿薂罿莁蒂袀羈肀芄螆羇膃蒀蚂羆芅 基于8051的PWM实现D/A转换功能1原理 PWM信号是一种具有固定周期(T)和不定占空比( )的数字信号,如图1和图2所示。 图1 是一种周期和占空比均可变、幅值为5 V的脉宽调制信号。实现PWM信号到D/A转换输出的理想方法是:采用模拟低通滤波器滤掉PWM输出的高频部分,保留低频的直流分量,即可得到对应的D/A输出,如(图1)所示。低通滤波器的带宽决定了D/A输出的带宽范围。 为了对PWM信号的频谱进行分析,以下提供了一个设计滤波器的理论基础。傅里叶变换理论告诉我们,任何一个周期为T的连续信号f(t),都可以表达为频率是基频的整数倍的正、余弦谐波分量之和。它是以时间轴原点为对称点的、单极性的PWM信号,表达式为其中,f1/T为基频,式中An、 Bn为各自独立的傅里叶系数:由于f(t)是一个关于原点对称的偶函数,因此Bn项为0,只需计算An项即可。只要扣除直流分量A0,由f(t)=f(tT/2),An的偶系数也将为0,因此,对占空比为k、幅值为5 V的PWM信号有:由式(5)可知,直流分量A0就是所需要的 D/A输出,只要改变PWM信号的占空比k,就能得到电压范围为05 V的D/A转换输出;An代表PWM信号的高频直流分量,频率为PWM信号基频的整数倍。因此,对于基频为10 kHz的PWM信号,一个理想的剪切频率10 kHz的滤波器即可完全滤掉PWM信号的高频谐波分量An,得到低频的直流分量A0,从而实现PWM信号到D/A输出的转换。.2 误差分析D/A转换输出的电压信号有一个纹波叠加在直流分量上。这是D/A转换误差的来源之一。影响D/A转换误差的另外一个重要因素,取决于PWM信号的基频。对于时钟频率为20 MHz的F240芯片,产生一个20 kHz的PWM信号,意味着每产生一个周期的PWM信号,要计数1000个时钟。即所得的直流分量的最小输出为1个时钟产生的PWM信号,等于5 mV(5 V1/1000),刚好小于10位的D/A转换器的最小输出4.8 mV(5 V/1024)。因此,理想情况下,PWM信号的频率越低,所得的直流分量就越小,D/A转换的分辨率也就相应的越高。如果将PWM信号的频率从20 kHz降到10 kHz,则直流分量输出的最小输出为2.5 mV(5 V/2000),接近于11位的分辨率。但是,随着PWM信号基频的减小,谐波分量的频率也随之降低,就会有更多的谐波通过相同带宽的低通滤波器,造成输出的直流分量的纹波更大,导致D/A转换的分辨率降低。所以,单纯降低PWM信号的频率不能获得较高的分辨率。通过以上分析可知,基于DSP芯片PWM输出的D/A转换输出的误差,取决于通过低通滤波器的高频分量所产生的纹波和由PWM信号的频率决定的最小输出电压这两个方面。所以要获得最佳的D/A分辨率,在选取PWM信号的频率时不能太小,要适当地折衷,选取一个最合适的值。如表1所列,通过Matlab仿真,可以得到最佳D/A分辨率下的PWM信号频率。表1 不同设计参数下F240芯片PWM输出实现D/A转换的分辨率 硬件设计一般来说,F240的PWM输出要通过具有一阶阻容滤波及光电隔离功能的I/O接口板后,方可与实际控制对象连接。为了获得高精度的D/A输出,在滤波之前应先通过缓冲器,整体设计框图如图2所示。图2 DSP F240片内PWM输出实现D/A转换硬件框图滤波器的运算放大器选用OP07。它温漂小、阻抗低、吸收电流大、精度高。考虑到实际情况,设计模拟低通滤波器的阶数一般不超过三阶,否则会增大系统的复杂性,增加系统的成本。下面主要介绍有源低通滤波器的参数设计。 2.1 二阶Butterworth低通滤波器图3(a)所示,是二阶Butterworth低通滤波器(最平幅值滤波器)的一种实现电路,其传递函数为在-3 dB带宽为1000 kHz的条件下: 由于考虑到不可能找到与所计算的R、C值完全一致的电阻、电容值,而只能选取与实际的电阻、电容值最接近的值,故求解得到:在这些参数下,实际的带宽是1074 Hz,Q值为0.645,与理想的二阶Butterworth低通滤波器有一定的误差。图3 低通滤波器电路2.2 三阶低通滤波器图3(b)所示为三阶低通滤波器的一种实现电路,其传递函数为其中,在3 dB带宽为1000 kHz的条件下,求解得到:R4决定滤波器直流分量的增益,选取R4=(即不安装R4),则D/A输出增益为1;要想改变带宽大小,只须保持R4和电容值不变,改变其它电阻的阻值即可。3 软件程序设计和实验结果利用TMS320F240配套的EVM(Evaluation Module)板作为DSP的实验平台,给定一模拟电压作为F240的A/D输入,将A/D转换的值作为产生PWM波形的DSP定时器中比较寄存器的值;通过中断,不断获取最新的A/D转换值,改变PWM波形的占空比,得到对应幅值的PWM波形,再将所得的20 kHz的PWM信号输入给滤波器,用数字示波器观察滤波器的D/A输出,以评价这种D/A转换方法的实际效果。 3.1 通过D/A转换产生对应幅值PWM波形的DSP程序基于DSP功能模块化的特点,其汇编程序的编制主要分三个步骤: 初始化设置时钟源模块,得到所需的CPUCLK和SYSCLK; 设置事件管理模块,初始化定时器和A/D转换操作; 编写定时中断服务子程序,即可完成从A/D转换产生对应幅值的PWM波形输出。部分程序代码如下:;设置 PLL模块LDP #224; SPLK #0000000001000001b,CKCR0 ;SYSCLK=CPUCLK/2SPLK #0000000010111011b,CKCR1;CLKIN(OSC)=10MHz, CPUCLK=20MHzSPLK #0000000011000011b,CKCR0;使能锁相环(PLL)操作 SPLK #0100000011000000b,SYSCR;CLKOUT=CPUCLK;设置EV 管理器LDP #232;SPLK #0,T1CMPR ;初始化定时比较寄存器 SPLK #0000000001010101b,GPTCON ;通用定时器的PWM输出为低有效 SPLK #1000,T1PR ;设置PWM波形的周期为20 kHzSPLK #0000h,T1CNT ;初始化计数寄存器SPLK #0001000000001010b,T1CON;设置连续增计数方式,使能比较操作SPLK #0000000010000000b,EVIMRA;清除定时器1比较中断屏蔽位 LDP #224 SPLK #1000110100000010b,ADCTRL1 ;设置A/D连续转换模式,选择通道CH0SPLK #0000000000000101b,ADCTRL2 ;设置A/D转换输入时钟预定标因子为16LDP #232SBIT1 T1CON,B6_MSK ;使能定时器1中断启动位LDP #224SBIT1 ADCTRL1,B0_MSK;使能A/D转换启动位CLRC INTM;END B END ;等待定时器1中断的产生;产生PWM 波形ISRChange_CMPR: LDP #224 ;定时器1比较中断服务子程序 LACC ADCTRL1;SACL ADCTRL1 ;清除片内A/D转换中断标志位LACC ADCFIFO1;读取最新的A/D转换值RPT #5;SFR ;把存于结果寄存器的高10位的A/D;转换值移至ACC的低十位 LDP #232;SACL T1CMPR ;将A/D转换值存于定时比较寄存器LACC EVIFRA;SACL EVIFRA ; 清除定时器中断标志CLRC INTM ;开中断RET ;中断返回3.2 PWM输出实现D/A转换功能的实验结果如图4所示,是在给定一恒定的3.5 V模拟电压作为F240的A/D输入的情况下,所得的PWM输出实现D/A转换的波形图。图4 PWM出实现D/A转换波形图波形1为不通过低通滤波器的原始PWM信号。波形2为PWM信号通过一阶低通模拟低通滤波器后的D/A输出波形,滤波器参数为R=1 k,C=0.1F,带宽为1592 Hz。可以看出,一阶下的D/A输出为一锯齿波,可用性很差。 波形3为PWM信号通过二阶Butterworth低通模拟滤波器后的D/A输出波形,滤波器参数按照式(7)选取。可以看出,二阶下的D/A输出平均值接近3.5 V,只是尖峰毛刺比较大,有一定的可用性。波形4为PWM信号通过三阶低通模拟滤波器后的D/A输出波形,滤波器参数按照式(9)选取。可以看出,三阶下的D/A输出毛刺很小,D/A转换的分辨率约为9.2位, 非常接近于理想的D/A输出,可用性强。实验结果表明,DSP的PWM信号经过三阶低通模拟滤波器后,得到的D/A转换输出带宽较大,在1000 Hz左右;分辨率较高,约为9.5位,可以满足实际应用的需要。基于MSP430 Timer_B的D/A转换解放军理工大学通信工程学院 赵陆文 屈德新 摘 要:本文分析了利用MSP430的Timer_B在比较模式下输出的脉宽调制(PWM)波,来实现D/A转换的工作原理。介绍了利用MSP430F449的Timer_B的PWM输出产生正弦波和直流电平的方法,并给出了对应的硬件电路和C语言源程序。 关键词:MSP430F449;脉宽调制;D/A转换 D/A Conversion Based on MSP430 Timer_BAbstract:This paper analyses the principle of utilizing the PWM to realize D/A when the MSP430 Timer_B is working in compare mode. It describes the method of using the PWM of MSP449F449s Timer_B to create a sine wave and a DC level. At last, it gives the corresponding hardware circuit and C language program. Key words: MSP430F449; PWM; D/A conversion 1.简介 1.1 MSP430单片机介绍 虽然目前在国内市场上应用较多的单片机仍然是8位单片机,但是由美国德州仪器(TI)公司推出的16位单片机MSP430具有处理能力强、运行速度快、低功耗、指令简单等优点。并采用了JTAG技术、FLASH在线编程技术、BOOTSTRAP等诸多先进技术,因此具有很高的性价比,在欧洲市场已得到了非常广泛的应用。虽然MSP430进入国内市场的时间不是很长,但是因其具有以上所述的卓越品质,一进入国内市场就被众多电子工程师所青睐。其中MSP430F449具有7个工作模式可选8、10、12、16的16位计数器。用其比较模式产生的PWM可以实现D/A转换(D/A conversion)。 1.2 PWM D/A简介 很多嵌入式的微控制器(microcontroller)应用都需要产生模拟信号。这种情况下往往是采用集成的或者是分立的数模转换器DAC(digital-to-analog converter)来实现。但是采用脉宽调制PWM(pulse-width modulated)信号来实现D/A转换(简写为PWM D/A)也是一种常用的方法。可以用PWM信号产生所需的直流或交流信号。这篇文章以MSP430F449的Timer_B输出的PWM为例来产生一个200Hz的正弦波和一个0.5VCC的直流电平。实际上类似的方法可以用于Timer_A以及MSP430其它型号的单片机。 2. 用PWM实现DAC的原理 2.1 基本原理 PWM信号是一种具有固定周期(T)不定占空比( )的数字信号,如图1所示。如果PWM信号的占空比随时间变化,那么通过滤波之后的输出信号将是幅度变化的模拟信号。因此通过控制PWM信号的占空比,就可以产生不同的模拟信号。在MSP430F449中就是采用CCR0来控制周期T,而用与定时器对应的CCRx寄存器来控制可变占空比,进而实现D/A转换。 2.2 分辨率 图1 PWM信号示意图基于Timer_B PWM的DAC分辨率就等于计数器的长度,通常是CCR0寄存器的值。PWM DAC的最低有效位是一个计数值,分辨率是总的计数值。 Rcounts = Lcounts 其中Rcounts是以计数值为单位的分辨率,Lcounts是计数器的总计数值。例如对8-bit DAC,计数器的长度为8 bits,或者256个计数值。那么分辨率也就是8 bits,或者256。 更一般的情况下,基于PWM定时器和滤波器的PWM DAC的分辨率等于产生模拟信号的PWM信号的分辨率。PWM信号的分辨率决定于计数器的长度和PWM计数器能够实现的最小占空比。用数学表达式如下: Rcounts =,其中 = Lcounts,C是最小占空比。比特分辨率用下式计算: 如果PWM计数器的长度为512个计数值,最小的占空比为2个计数值,那么PWM DAC的分辨率就为:,或者以比特表示:。 2.3 系统频率 PWM 信号需要的输出频率等于DAC的更新频率,因为PWM信号占空比的每一次变化等效于一次DAC抽样。PWM 定时器所需的频率取决于PWM信号频率和所需的分辨率。如下所示: 在这儿,是所需的PWM定时器频率,是PWM信号的频率,也就是DAC的更新频率,n 是所需的比特分辨率。下文即将描述怎样采用8-bit PWM DAC来同步产生一个200Hz的正弦波。由抽样定理可得,最低的抽样频率应该为400Hz。但是通常情况下,PWM信号的频率要远高于Nyquist抽样速率。这是因为PWM信号的频率越高,对滤波器的阶数就要求越低,合适的滤波器越容易实现。通常抽样速率取Nyquist速率的16或者32倍。 2.4 所需的MSP430资源 文中的例子是用MSP430F449的Timer_B再加外部滤波器来产生一个200Hz的正弦波和一个0.5VCC的直流电平的。将Timer_B配置为16-bit、up模式。在这种模式下计数器计数至CCR0,然后复位从0开始重新计数。给CCR0赋值255也就意味着计数器的长度为8bits。CCR1和TB1用于产生正弦波,CCR2和TB2用于产生直流电平。输出模式都选为模式7,即PWM复位/置位模式。如图2所示,在这种模式下,复位后每一个定时器的输出都为高电平,直到计数器达到各自的CCRx值时变为低电平,当计数器达到CCR0时再置位。也就是说CCRx的值决定了各自正脉冲的宽带。若CCRx的值是变化的,就可以产生可变宽度的脉冲,下文中的正弦波就是用这种办法产生的;若不变则产生的是固定宽度的脉冲,下文中的直流电平就是这样产生的。最后SMCLK用作Timer_B的时钟源。系统采用32768Hz的钟表晶振,通过采用内部硬件锁频环FLL(frequency-locked-loop),来校准DCO(Digital Control Oscillator)频率为系统提供MCLK/SMCLK时钟。 图2 输出模式7:PWM复位/置位示意图3. 实现电路 用Timer_B PWM实现DAC外围电路比较简单,如图3所示。实际上外围电路就是晶振电路和RC低通滤波器。 图3 MSP430F449实现D/A电路图3.1 正弦信号的产生 在这个例子中,一个正弦波用32个抽样值生成。正弦波的频率为200Hz,所以每秒要抽样20032=6400次,也就是说=6.4KHz。每完成一次抽样要计数28,所以所需的时钟频率为。抽样值包含在程序开始的一个正弦表中,通过调用中断函数,在每个PWM周期结束时,将新的正弦波抽样值载入捕获/比较寄存器CCR1中。因此产生的PWM信号的脉冲宽度就决定了正弦波在每一个时刻的抽样值,将这个PWM信号经过低通滤波,即得所需的正弦波。 3.2 直流电平的产生 直流电平产生比较简单,因为它对应的PWM占空比是一定的。直流电平直接正比于PWM信号的占空比。要产生0.5VCC的直流电平,PWM的占空比显然是50%(考虑到损耗,实际应大一些)。只需要简单地将CCR2的值设置为128,并且无须变化就可以得到50%占空比的PWM信号。将得到的PWM信号通过RC网络进行低通滤波,即可得到0.5VCC的直流电平。 3.3 滤波器设计 图4 软件流程对两路输出都采用了结构简单的RC滤波器,如图3所示。之所以采用这种结构,一是因为RC滤波器结构简单,二是为了实现低功耗,尽量避免采用有源器件。 用于交流信号的滤波器是一个双极点级联RC滤波器。如果滤波器阶数过高,可以采用提高的抽样频率的办法来降低滤波器阶数。滤波器的截至频率fc由下式来计算: 当R2 ? R1时滤波器的响应较好。但是如果截至频率很接近信号带宽边沿,将会导致相当大的衰减。因此为了减小滤波器的衰减,截至频率应该大于信号带宽边沿,但是要远小于PWM信号的频率。 用于产生直流电平的滤波器仅仅是用来储存电荷的,而不像交流信号滤波器那样用来滤波。因此采用了一个简单的单极RC滤波器。 4.程序流程 用MSP430F449的Timer_B的PWM来产生正弦波和直流电平的程序比较简单,流程如图4所示。MSP430F449自身有FLL,可用它来实现DCO的频率校准。但是DCO的频率只能锁定在ACLK的整数倍上,所以对于没有FLL的器件,或者所需频率不是ACLK整数倍的情况下,要用Timer_A或者其它的定时器进行DCO频率校准,这也就是所谓的软锁频。事实上实际的D/A转换常常是一些随时间变化的非周期信号。它们对时钟的精度要求不是很高,因此大多数情况下硬件FLL是可以胜任的。 5. 程序清单 MSP430的另外一个特点是用C语言编写程序简单,而且效率较高。本例就采用C语言编写了程序。清单如下: #include #include int SampleTimes=0; /*定义正弦表,并用32个抽样值初始化正弦表,不要用0抽样*/ int SinTable=255,254,246,234,219,199,177,153,128,103,79,57,37,22,10,2, 1,2,10,22,37,57,79,103,128,153,177,199,219,234,246,255; void main(void) int i; WDTCTL = WDTPW +WDTHOLD;/ 禁止看门狗定时器 /*初始化端口*/ P2DIR |= 0x0C;/ P2.2和P2.3为输出 P2SEL |= 0x0C;/ P2.2和P2.3分别为TB1和TB2 /*设置系统时钟*/ FLL_CTL0 = XCAP18PF;/ 设置XTAL1的负载电容 SCFQCTL = 50-1;/ 1.6384MHz/32768Hz = 50,fDCO=MCLK=1.6384MHz for (i = 50000; i; i-);/ 晶振初始化延时 /*设置Timer_B*/ TBCTL = TB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆维吾尔自治区小学五年级下学期数学第二单元测试卷-因数和倍数单元检测
- 2026年管道工(中级 理论知识)自测试题及答案
- 江阴数据广告制作合同
- 抵押期间股权转让合同
- 家装设计补充合同
- 共享资源采购合同
- 一年级上学期数学数字卓越试卷
- 互联网广告的市场变化与发展趋势
- 退伙协议与解约合同
- 2025年法律明白人培训讲稿样本(4篇)
- 2025年-网络安全等级测评报告模版(2025版)新版
- 初中重点化学方程式每日一练小纸条【答案】
- 移动应用开发白皮书方案2025
- 气管切开患者护理指导方案
- 文化传媒公司运营管理指南
- 110kV变电站运行记录表填写标准
- AI在港口和船舶制造业的应用现状与发展分析
- 社会科学研究方法 课件全套 第1-12章 导论-撰写研究报告
- 原发纵隔大B细胞淋巴瘤共识解读(2024版)
- 质量2015版培训课件
- 养护工程管理培训课件
评论
0/150
提交评论