基于MSP430 TimerB的DA轉(zhuǎn)換_第1頁
基于MSP430 TimerB的DA轉(zhuǎn)換_第2頁
基于MSP430 TimerB的DA轉(zhuǎn)換_第3頁
基于MSP430 TimerB的DA轉(zhuǎn)換_第4頁
基于MSP430 TimerB的DA轉(zhuǎn)換_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、摘 要:本文分析了利用msp430的timer_b在比較模式下輸出的脈寬調(diào)制(pwm)波,來實現(xiàn)d/a轉(zhuǎn)換的工作原理。介紹了利用msp430f449的timer_b的pwm輸出產(chǎn)生正弦波和直流電平的方法,并給出了對應(yīng)的硬件電路和c語言源程序。關(guān)鍵詞:msp430f449;脈寬調(diào)制;d/a轉(zhuǎn)換d/a conversion based on msp430 timer_b abstract:this paper analyses the principle of utilizing the pwm to realize d/a when the msp430 timer_b is working i

2、n 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 conversion1.簡介1.1 msp430單片機介紹 雖然目前在國內(nèi)市場上應(yīng)用較多的單片機仍然是8位單片機,但是由美國德州儀器(ti)公司推出

3、的16位單片機msp430具有處理能力強、運行速度快、低功耗、指令簡單等優(yōu)點。并采用了jtag技術(shù)、flash在線編程技術(shù)、bootstrap等諸多先進技術(shù),因此具有很高的性價比,在歐洲市場已得到了非常廣泛的應(yīng)用。雖然msp430進入國內(nèi)市場的時間不是很長,但是因其具有以上所述的卓越品質(zhì),一進入國內(nèi)市場就被眾多電子工程師所青睞。其中msp430f449具有7個工作模式可選8、10、12、16的16位計數(shù)器。用其比較模式產(chǎn)生的pwm可以實現(xiàn)d/a轉(zhuǎn)換(d/a conversion)。1.2 pwm d/a簡介 很多嵌入式的微控制器(microcontroller)應(yīng)用都需要產(chǎn)生模擬信號。這種情況

4、下往往是采用集成的或者是分立的數(shù)模轉(zhuǎn)換器dac(digital-to-analog converter)來實現(xiàn)。但是采用脈寬調(diào)制pwm(pulse-width modulated)信號來實現(xiàn)d/a轉(zhuǎn)換(簡寫為pwm d/a)也是一種常用的方法。可以用pwm信號產(chǎn)生所需的直流或交流信號。這篇文章以msp430f449的timer_b輸出的pwm為例來產(chǎn)生一個200hz的正弦波和一個0.5vcc的直流電平。實際上類似的方法可以用于timer_a以及msp430其它型號的單片機。2. 用pwm實現(xiàn)dac的原理2.1 基本原理 pwm信號是一種具有固定周期(t)不定占空比( )的數(shù)字信號,如圖1所示。

5、如果pwm信號的占空比隨時間變化,那么通過濾波之后的輸出信號將是幅度變化的模擬信號。因此通過控制pwm信號的占空比,就可以產(chǎn)生不同的模擬信號。在msp430f449中就是采用ccr0來控制周期t,而用與定時器對應(yīng)的ccrx寄存器來控制可變占空比,進而實現(xiàn)d/a轉(zhuǎn)換。2.2 分辨率 圖1 pwm信號示意圖基于timer_b pwm的dac分辨率就等于計數(shù)器的長度,通常是ccr0寄存器的值。pwm dac的最低有效位是一個計數(shù)值,分辨率是總的計數(shù)值。rcounts = lcounts其中rcounts是以計數(shù)值為單位的分辨率,lcounts是計數(shù)器的總計數(shù)值。例如對8-bit dac,計數(shù)器的長度

6、為8 bits,或者256個計數(shù)值。那么分辨率也就是8 bits,或者256。更一般的情況下,基于pwm定時器和濾波器的pwm dac的分辨率等于產(chǎn)生模擬信號的pwm信號的分辨率。pwm信號的分辨率決定于計數(shù)器的長度和pwm計數(shù)器能夠?qū)崿F(xiàn)的最小占空比。用數(shù)學(xué)表達式如下:比特分辨率用下式計算:如果pwm計數(shù)器的長度為512個計數(shù)值,最小的占空比為2個計數(shù)值,那么pwm dac的分辨率就為:,或者以比特表示:。2.3 系統(tǒng)頻率 pwm 信號需要的輸出頻率等于dac的更新頻率,因為pwm信號占空比的每一次變化等效于一次dac抽樣。pwm 定時器所需的頻率取決于pwm信號頻率和所需的分辨率。如下所示:

7、在這兒,是所需的pwm定時器頻率,是pwm信號的頻率,也就是dac的更新頻率,n 是所需的比特分辨率。下文即將描述怎樣采用8-bit pwm dac來同步產(chǎn)生一個200hz的正弦波。由抽樣定理可得,最低的抽樣頻率應(yīng)該為400hz。但是通常情況下,pwm信號的頻率要遠高于nyquist抽樣速率。這是因為pwm信號的頻率越高,對濾波器的階數(shù)就要求越低,合適的濾波器越容易實現(xiàn)。通常抽樣速率取nyquist速率的16或者32倍。2.4 所需的msp430資源 文中的例子是用msp430f449的timer_b再加外部濾波器來產(chǎn)生一個200hz的正弦波和一個0.5vcc的直流電平的。將timer_b配置

8、為16-bit、up模式。在這種模式下計數(shù)器計數(shù)至ccr0,然后復(fù)位從0開始重新計數(shù)。給ccr0賦值255也就意味著計數(shù)器的長度為8bits。ccr1和tb1用于產(chǎn)生正弦波,ccr2和tb2用于產(chǎn)生直流電平。輸出模式都選為模式7,即pwm復(fù)位/置位模式。如圖2所示,在這種模式下,復(fù)位后每一個定時器的輸出都為高電平,直到計數(shù)器達到各自的ccrx值時變?yōu)榈碗娖?,?dāng)計數(shù)器達到ccr0時再置位。也就是說ccrx的值決定了各自正脈沖的寬帶。若ccrx的值是變化的,就可以產(chǎn)生可變寬度的脈沖,下文中的正弦波就是用這種辦法產(chǎn)生的;若不變則產(chǎn)生的是固定寬度的脈沖,下文中的直流電平就是這樣產(chǎn)生的。最后smclk用

9、作timer_b的時鐘源。系統(tǒng)采用32768hz的鐘表晶振,通過采用內(nèi)部硬件鎖頻環(huán)fll(frequency-locked-loop),來校準dco(digital control oscillator)頻率為系統(tǒng)提供mclk/smclk時鐘。圖2 輸出模式7:pwm復(fù)位/置位示意圖 3. 實現(xiàn)電路 用timer_b pwm實現(xiàn)dac外圍電路比較簡單,如圖3所示。實際上外圍電路就是晶振電路和rc低通濾波器。圖3 msp430f449實現(xiàn)d/a電路圖 3.1 正弦信號的產(chǎn)生 在這個例子中,一個正弦波用32個抽樣值生成。正弦波的頻率為200hz,所以每秒要抽樣20032=6400次,也就是說=6.

10、4khz。每完成一次抽樣要計數(shù)28,所以所需的時鐘頻率為。抽樣值包含在程序開始的一個正弦表中,通過調(diào)用中斷函數(shù),在每個pwm周期結(jié)束時,將新的正弦波抽樣值載入捕獲/比較寄存器ccr1中。因此產(chǎn)生的pwm信號的脈沖寬度就決定了正弦波在每一個時刻的抽樣值,將這個pwm信號經(jīng)過低通濾波,即得所需的正弦波。3.2 直流電平的產(chǎn)生 直流電平產(chǎn)生比較簡單,因為它對應(yīng)的pwm占空比是一定的。直流電平直接正比于pwm信號的占空比。要產(chǎn)生0.5vcc的直流電平,pwm的占空比顯然是50%(考慮到損耗,實際應(yīng)大一些)。只需要簡單地將ccr2的值設(shè)置為128,并且無須變化就可以得到50%占空比的pwm信號。將得到的

11、pwm信號通過rc網(wǎng)絡(luò)進行低通濾波,即可得到0.5vcc的直流電平。3.3 濾波器設(shè)計 圖4 軟件流程對兩路輸出都采用了結(jié)構(gòu)簡單的rc濾波器,如圖3所示。之所以采用這種結(jié)構(gòu),一是因為rc濾波器結(jié)構(gòu)簡單,二是為了實現(xiàn)低功耗,盡量避免采用有源器件。用于交流信號的濾波器是一個雙極點級聯(lián)rc濾波器。如果濾波器階數(shù)過高,可以采用提高的抽樣頻率的辦法來降低濾波器階數(shù)。濾波器的截至頻率fc由下式來計算: 當(dāng)r2 ? r1時濾波器的響應(yīng)較好。但是如果截至頻率很接近信號帶寬邊沿,將會導(dǎo)致相當(dāng)大的衰減。因此為了減小濾波器的衰減,截至頻率應(yīng)該大于信號帶寬邊沿,但是要遠小于pwm信號的頻率。用于產(chǎn)生直流電平的濾波器僅

12、僅是用來儲存電荷的,而不像交流信號濾波器那樣用來濾波。因此采用了一個簡單的單極rc濾波器。4.程序流程 用msp430f449的timer_b的pwm來產(chǎn)生正弦波和直流電平的程序比較簡單,流程如圖4所示。msp430f449自身有fll,可用它來實現(xiàn)dco的頻率校準。但是dco的頻率只能鎖定在aclk的整數(shù)倍上,所以對于沒有fll的器件,或者所需頻率不是aclk整數(shù)倍的情況下,要用timer_a或者其它的定時器進行dco頻率校準,這也就是所謂的軟鎖頻。事實上實際的d/a轉(zhuǎn)換常常是一些隨時間變化的非周期信號。它們對時鐘的精度要求不是很高,因此大多數(shù)情況下硬件fll是可以勝任的。5. 程序清單 m

13、sp430的另外一個特點是用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;/ 禁止看門

14、狗定時器/*初始化端口*/ p2dir |= 0x0c;/ p2.2和p2.3為輸出 p2sel |= 0x0c;/ p2.2和p2.3分別為tb1和tb2/*設(shè)置系統(tǒng)時鐘*/ fll_ctl0 = xcap18pf;/ 設(shè)置xtal1的負載電容 scfqctl = 50-1;/ 1.6384mhz/32768hz = 50,fdco=mclk=1.6384mhz for (i = 50000; i; i-);/ 晶振初始化延時/*設(shè)置timer_b*/ tbctl = tbssel1 + tbclr;/ 選擇smclk為時鐘,定時器清除 tbctl|=mc_1+cntl_0+tbclgrp_

15、0;/選擇up,16位模式 tbcctl0=ccie;/將ccr0設(shè)為比較模式,中斷允許 tbccr0=256-1;/pwm的周期為256,也就是dac為8bit tbcctl1=outmod_7+clld_1;/將ccrx設(shè)為比較模式,中斷禁止 tbcctl2=outmod_7+clld_1;/選擇輸出模式7,當(dāng)tbr計數(shù)到0時ccrx數(shù)據(jù)加載到tbctlx tbccr1=sintablesampletimes;/將正弦表加載到ccr1 tbccr2=128;/pwm的占空比為50%,產(chǎn)生0.5vcc的直流電平 _eint();/中斷允許 for (;) _bis_sr(lpm0_bits);/cup進入低功耗模式 _nop(); /調(diào)用中斷函數(shù) interrupt timerb0_vector void t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論