利用單片機使用MSP430F149設計正弦波發(fā)生器解析方案
根據《鐵路車(chē)輛內旅客振動(dòng)舒適性評價(jià)準則》UIC513國際標準開(kāi)發(fā)的SSD-J-2振動(dòng)舒適度測量?jì)x是基于MSP430F149的三維振動(dòng)便攜式分析儀,內含上下、左右、前后振動(dòng)的生理濾器。為了調整和標定這組生理濾波器的精度,利用該單片機的一個(gè)PWM輸出端配上II型的RC濾波,在軟件支持下構成調節方便的超低頻波發(fā)生器。經(jīng)實(shí)用表明其性能達到UIC513標準的技術(shù)要求。
本文引用地址:http://dyxdggzs.com/article/171285.htm1 MSP430F149的內部結構
MSP430F149 是美國TEXAS INSTRUCMENTS公司最新推出的16位超低功耗混合信號單片機,帶有Flash存儲器,具備很強的靈活性,方便修改代碼及產(chǎn)品售后升級。它采用精簡(jiǎn)指令集(RISC),125ns指令周期,大部分的指令在一個(gè)指令周期內完成。1.8V~3.6V的供電電壓,其超低功耗(供電電壓2.2V,工作頻率 32kHz時(shí),工作電流為7μA;供電電壓2.2V,工作頻率1MHz時(shí),工作電流為250μA.)使超低頻波形發(fā)生器可被設計成電池供電且長(cháng)時(shí)間工作的系統。MSP430F149內含一個(gè)具有8個(gè)外部通道的12位高性能A/D轉換器,一個(gè)具有自動(dòng)掃描功能的容量為16個(gè)字節的可編程緩沖器,片內參考電壓,一個(gè)溫度傳感器以及電池低壓時(shí)的檢測電路;內部具有兩具定時(shí)器:帶有7個(gè)捕獲/比較寄存器的16位 Timer_B和帶有3個(gè)捕獲/比較寄存器的16位Timer_A,在比較模式下可以產(chǎn)生PWM信號,控制DCO的頻率,利用利用它們可以滿(mǎn)足要求;該芯片具有60KB的閃速存儲器,2KB RAM,采用串行在線(xiàn)編程方式,為用戶(hù)修改程序和控制參數帶來(lái)靈活的空間,而且內部的安全保密熔絲可使程序不被非法拷貝。此外,MSP430F149具有強大的中斷功能,48個(gè)I/O此腳,兩個(gè)串行通訊接口,10萬(wàn)次的擦寫(xiě),超強的抗干擾能力。
用于人體乘坐的交通運輸工具中的振動(dòng)分析儀對信號有嚴格的濾波要求。UIC513標準中對Z方向(上、下)振動(dòng)信號規定按圖1的濾波計權曲線(xiàn)進(jìn)行濾,其濾波頻帶為0.4Hz~16Hz,并且具臺階性。重要的是檢驗濾波的效果是評價(jià)振動(dòng)舒適性的前提,濾波電路只有經(jīng)過(guò)嚴格的標定校調后方能投入使用,所以需要采用低失真、超低頻正弦信號源來(lái)標定電路。應用MSP430F149進(jìn)行設計,電路十分簡(jiǎn)單。產(chǎn)生的波形精度取決于脈寬計數器的精度,最高可達16位,頻率取決于軟件所設計正弦表的大小、系統頻率以及讀取正弦表的時(shí)間長(cháng)短。應該注意的是所設計的頻率應該比需要的頻率略高一些,這樣由脈寬高制信號到正弦波信號的濾波電路階數可以降低。
3 用MSP430F149實(shí)現PWM功能的軟件設計
在該超低頻波形發(fā)生器的軟件設計中,主要應用到了以下幾個(gè)功能模塊:Timer_B定時(shí)器、Timer_A定時(shí)器、CPU寄存器、片內的數字控制晶振以及XT1低功耗振蕩器。
3.1 穩定DCO頻率模塊
DCO 實(shí)質(zhì)上是一個(gè)RC振蕩器,具有RC振蕩器的特點(diǎn)。其在頻率的設置和轉換上不準確,但由于它是數字控制的振蕩器,可以通過(guò)一個(gè)已知的頻率穩定的晶振如 32768Hz手表晶振來(lái)進(jìn)行校準,使DCO達到準確的頻率。因為MSP430F149不含有鎖頻環(huán)數字邏輯,所以只有通過(guò)軟件進(jìn)行“軟鎖頻”校準 DCO,這十分重要。
程序如下:
Setup_TA mov #TASSEL1+TACLR,TACTL;設置TA時(shí)鐘SMCLK
Setup_CC2 mov #CCIS0+CM0+CAP,CCTL2;設置CCR2,輸入信號:;ACLK,捕獲模式
Bis #MC1,TACTL;設置Timer_A:連接模式
Test_DCO bit #CCIFG,CCTL2;檢測捕獲標志位
jz Test_DCO
bic #CCIFG,CCTL2 ;清除標志位
AdjDCO mov CCR2,R14
;R14=捕獲的SMCLK值
sub R15,R14;R14=捕獲SMCLK的差值
mov CCR2,R15;上次捕獲的SMCLK值
com #Delta,R14 ;Delta=SMCLK/ACLK
jlo IncDCO
jeq DoneFLL
DecDCO dec.b DCOCTL ;調整DCO
jmp Test_DCO
IncDCO inc.b DCOCTL
Jmp Test_DCO
DoneFLL clr CCTL2 ;停止CCR2
Clr TACTL ;停止Timer_A
評論