當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1.簡介1.1 MSP430單片機(jī)介紹雖然目前在國內(nèi)市場上應(yīng)用較多的單片機(jī)仍然是8位單片機(jī),但是由美國德州儀器(TI)公司推出的16位單片機(jī)MSP430具有處理能力強(qiáng)、運(yùn)行速度快、低功耗、指令簡單等優(yōu)點(diǎn)。并采用了JTAG技術(shù)、

1.簡介

1.1 MSP430單片機(jī)介紹

雖然目前在國內(nèi)市場上應(yīng)用較多的單片機(jī)仍然是8位單片機(jī),但是由美國德州儀器(TI)公司推出的16位單片機(jī)MSP430具有處理能力強(qiáng)、運(yùn)行速度快、低功耗、指令簡單等優(yōu)點(diǎn)。并采用了JTAG技術(shù)、 FLASH在線編程技術(shù)、BOOTSTRAP等諸多先進(jìn)技術(shù),因此具有很高的性價(jià)比,在歐洲市場已得到了非常廣泛的應(yīng)用。雖然MSP430進(jìn)入國內(nèi)市場的時(shí)間不是很長,但是因其具有以上所述的卓越品質(zhì),一進(jìn)入國內(nèi)市場就被眾多電子工程師所青睞。其中 MSP430F449具有7個(gè)工作模式可選8、10、12、16的16位計(jì)數(shù)器。用其比較模式產(chǎn)生的PWM可以實(shí)現(xiàn)D/A轉(zhuǎn)換(D/A conversion)。

1.2 PWM D/A簡介

很多嵌入式的微控制器(microcontroller)應(yīng)用都需要產(chǎn)生模擬信號。這種情況下往往是采用集成的或者是分立的數(shù)模轉(zhuǎn)換器DAC(digital- to-analog converter)來實(shí)現(xiàn)。但是采用脈寬調(diào)制PWM(pulse-width modulated)信號來實(shí)現(xiàn)D/A轉(zhuǎn)換(簡寫為PWM D/A)也是一種常用的方法??梢杂肞WM信號產(chǎn)生所需的直流或交流信號。這篇文章以MSP430F449的Timer_B輸出的PWM為例來產(chǎn)生一個(gè) 200Hz的正弦波和一個(gè)0.5VCC的直流電平。實(shí)際上類似的方法可以用于Timer_A以及MSP430其它型號的單片機(jī)。

2. 用PWM實(shí)現(xiàn)DAC的原理

2.1 基本原理

PWM信號是一種具有固定周期(T)不定占空比(t)的數(shù)字信號,如圖1所示。如果PWM信號的占空比隨時(shí)間變化,那么通過濾波之后的輸出信號將是幅度變化的模擬信號。因此通過控制PWM信號的占空比,就可以產(chǎn)生不同的模擬信號。在MSP430F449中就是采用CCR0來控制周期T,而用與定時(shí)器對應(yīng)的CCRx寄存器來控制可變占空比,進(jìn)而實(shí)現(xiàn)D/A轉(zhuǎn)換。

2.2 分辨率


       圖1 PWM信號示意圖

基于Timer_B PWM的DAC分辨率就等于計(jì)數(shù)器的長度,通常是CCR0寄存器的值。PWM DAC的最低有效位是一個(gè)計(jì)數(shù)值,分辨率是總的計(jì)數(shù)值。

Rcounts = Lcounts

其中Rcounts是以計(jì)數(shù)值為單位的分辨率,Lcounts是計(jì)數(shù)器的總計(jì)數(shù)值。例如對8-bit DAC,計(jì)數(shù)器的長度為8 bits,或者256個(gè)計(jì)數(shù)值。那么分辨率也就是8 bits,或者256。

更一般的情況下,基于PWM定時(shí)器和濾波器的PWM DAC的分辨率等于產(chǎn)生模擬信號的PWM信號的分辨率。PWM信號的分辨率決定于計(jì)數(shù)器的長度和PWM計(jì)數(shù)器能夠?qū)崿F(xiàn)的最小占空比。用數(shù)學(xué)表達(dá)式如下:

n 是所需的比特分辨率。下文即將描述怎樣采用8-bit PWM DAC來同步產(chǎn)生一個(gè)200Hz的正弦波。由抽樣定理可得,最低的抽樣頻率應(yīng)該為400Hz。但是通常情況下,PWM信號的頻率要遠(yuǎn)高于Nyquist抽樣速率。這是因?yàn)镻WM信號的頻率越高,對濾波器的階數(shù)就要求越低,合適的濾波器越容易實(shí)現(xiàn)。通常抽樣速率取Nyquist速率的16或者32倍。

2.4 所需的MSP430資源

文中的例子是用MSP430F449的 Timer_B再加外部濾波器來產(chǎn)生一個(gè)200Hz的正弦波和一個(gè)0.5VCC的直流電平的。將Timer_B配置為 16-bit、up模式。在這種模式下計(jì)數(shù)器計(jì)數(shù)至CCR0,然后復(fù)位從0開始重新計(jì)數(shù)。給CCR0賦值255也就意味著計(jì)數(shù)器的長度為8bits。 CCR1和TB1用于產(chǎn)生正弦波,CCR2和TB2用于產(chǎn)生直流電平。輸出模式都選為模式7,即PWM復(fù)位/置位模式。如圖2所示,在這種模式下,復(fù)位后每一個(gè)定時(shí)器的輸出都為高電平,直到計(jì)數(shù)器達(dá)到各自的CCRx值時(shí)變?yōu)榈碗娖?,?dāng)計(jì)數(shù)器達(dá)到CCR0時(shí)再置位。也就是說CCRx的值決定了各自正脈沖的寬帶。若CCRx的值是變化的,就可以產(chǎn)生可變寬度的脈沖,下文中的正弦波就是用這種辦法產(chǎn)生的;若不變則產(chǎn)生的是固定寬度的脈沖,下文中的直流電平就是這樣產(chǎn)生的。最后SMCLK用作Timer_B的時(shí)鐘源。系統(tǒng)采用32768Hz的鐘表晶振,通過采用內(nèi)部硬件鎖頻環(huán)FLL(frequency- locked-loop),來校準(zhǔn)DCO(Digital Control Oscillator)頻率為系統(tǒng)提供MCLK/SMCLK時(shí)鐘。


            圖2 輸出模式7:PWM復(fù)位/置位示意圖

3. 實(shí)現(xiàn)電路

用Timer_B PWM實(shí)現(xiàn)DAC外圍電路比較簡單,如圖3所示。實(shí)際上外圍電路就是晶振電路和RC低通濾波器。


               圖3 MSP430F449實(shí)現(xiàn)D/A電路圖
 

3.1 正弦信號的產(chǎn)生

在這個(gè)例子中,一個(gè)正弦波用32個(gè)抽樣值生成。正弦波的頻率為200Hz,所以每秒要抽樣200×32=6400次,也就是說=6.4KHz。每完成一次抽樣要計(jì)數(shù)28,所以所需的時(shí)鐘頻率為。抽樣值包含在程序開始的一個(gè)正弦表中,通過調(diào)用中斷函數(shù),在每個(gè)PWM周期結(jié)束時(shí),將新的正弦波抽樣值載入捕獲/比較寄存器CCR1中。因此產(chǎn)生的PWM信號的脈沖寬度就決定了正弦波在每一個(gè)時(shí)刻的抽樣值,將這個(gè)PWM信號經(jīng)過低通濾波,即得所需的正弦波。

3.2 直流電平的產(chǎn)生

直流電平產(chǎn)生比較簡單,因?yàn)樗鼘?yīng)的PWM占空比是一定的。直流電平直接正比于PWM信號的占空比。要產(chǎn)生0.5VCC的直流電平,PWM的占空比顯然是 50%(考慮到損耗,實(shí)際應(yīng)大一些)。只需要簡單地將CCR2的值設(shè)置為128,并且無須變化就可以得到50%占空比的PWM信號。將得到的PWM信號通過RC網(wǎng)絡(luò)進(jìn)行低通濾波,即可得到0.5VCC的直流電平。

3.3 濾波器設(shè)計(jì)

對兩路輸出都采用了結(jié)構(gòu)簡單的RC濾波器,如圖3所示。之所以采用這種結(jié)構(gòu),一是因?yàn)镽C濾波器結(jié)構(gòu)簡單,二是為了實(shí)現(xiàn)低功耗,盡量避免采用有源器件。

用于交流信號的濾波器是一個(gè)雙極點(diǎn)級聯(lián)RC濾波器。如果濾波器階數(shù)過高,可以采用提高的抽樣頻率的辦法來降低濾波器階數(shù)。濾波器的截至頻率fc由下式來計(jì)算: 

當(dāng)時(shí)濾波器的響應(yīng)較好。但是如果截至頻率很接近信號帶寬邊沿,將會(huì)導(dǎo)致相當(dāng)大的衰減。因此為了減小濾波器的衰減,截至頻率應(yīng)該大于信號帶寬邊沿,但是要遠(yuǎn)小于PWM信號的頻率。

用于產(chǎn)生直流電平的濾波器僅僅是用來儲(chǔ)存電荷的,而不像交流信號濾波器那樣用來濾波。因此采用了一個(gè)簡單的單極RC濾波器。

4.程序流程

用MSP430F449 的Timer_B的PWM來產(chǎn)生正弦波和直流電平的程序比較簡單,流程如圖4所示。MSP430F449自身有FLL,可用它來實(shí)現(xiàn)DCO的頻率校準(zhǔn)。但是DCO的頻率只能鎖定在ACLK的整數(shù)倍上,所以對于沒有FLL的器件,或者所需頻率不是ACLK整數(shù)倍的情況下,要用Timer_A或者其它的定時(shí)器進(jìn)行DCO頻率校準(zhǔn),這也就是所謂的"軟鎖頻"。事實(shí)上實(shí)際的D/A轉(zhuǎn)換常常是一些隨時(shí)間變化的非周期信號。它們對時(shí)鐘的精度要求不是很高,因此大多數(shù)情況下硬件FLL是可以勝任的。

5. 程序清單

MSP430的另外一個(gè)特點(diǎn)是用C語言編寫程序簡單,而且效率較高。本例就采用C語言編寫了程序。清單如下:
#include <msp430x44x.h>
#include <math.h>
int SampleTimes=0;
//***定義正弦表,并用32個(gè)抽樣值初始化正弦表,不要用"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;        // 禁止看門狗定時(shí)器

//***初始化端口***//
P2DIR |= 0x0C;        // P2.2和P2.3為輸出
P2SEL |= 0x0C;        // P2.2和P2.3分別為TB1和TB2

//***設(shè)置系統(tǒng)時(shí)鐘***//
FLL_CTL0 = XCAP18PF;        // 設(shè)置XTAL1的負(fù)載電容
SCFQCTL = 50-1;        // 1.6384MHz/32768Hz = 50,fDCO=MCLK=1.6384MHz
for (i = 50000; i; i--);        // 晶振初始化延時(shí)

//***設(shè)置Timer_B***//
TBCTL = TBSSEL1 + TBCLR;        // 選擇SMCLK為時(shí)鐘,定時(shí)器清除
TBCTL|=MC_1+CNTL_0+TBCLGRP_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計(jì)數(shù)到0時(shí)CCRx數(shù)據(jù)加載到TBCTLx
TBCCR1=SinTable[SampleTimes];        //將正弦表加載到CCR1
TBCCR2=128;        //PWM的占空比為50%,產(chǎn)生0.5VCC的直流電平
_EINT();        //中斷允許
for (;;)
{ _BIS_SR(LPM0_bits);        //CUP進(jìn)入低功耗模式
_NOP();
}
}

//調(diào)用中斷函數(shù)
interrupt [TIMERB0_VECTOR] void Timer_B(void)
{
SampleTimes=(SampleTimes+1)%32;
TBCCR1=SinTable[SampleTimes];        //將新的抽樣值裝入CCR1
}

參考文獻(xiàn)
1. MSP430x4xx Family User's Guide (SLAU056B).
2. Mike Mitchell, Using PWM Timer_B as a DAC(SLAA116).
3. 胡大可, MSP430系列FLASH型超低功耗16位單片機(jī). 北京航空航天大學(xué)出版社, 2001.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉