MSP430單片機(jī)系統(tǒng)應(yīng)用結(jié)構(gòu)設(shè)計(jì)與選型
1 MSP430簡(jiǎn)介
MSP430是TI公司推出的16位單片機(jī)系列產(chǎn)品,在電池供電的低功耗應(yīng)用中具有獨(dú)特的優(yōu)勢(shì)。其工作電壓為1.8~3.6 V,正常工作時(shí)功耗可控制在200μA左右,低功耗模式可實(shí)現(xiàn)2μA甚至O.1μA的低功耗。MSP430系列單片機(jī)作為性能優(yōu)異的MCU在中國(guó)已經(jīng)得到了廣泛的應(yīng)用。MSP430具有高集成度,通常在單個(gè)芯片上集成了12位的A/D轉(zhuǎn)換器、比較器、多個(gè)定時(shí)器,以及片內(nèi)USART、看門狗、片內(nèi)DCO 等。一般單片就可滿足大多數(shù)的應(yīng)用需要。
MSP430單片機(jī)的程序存儲(chǔ)器是Flash存儲(chǔ)器,并且支持JTAG在線編程,可以方便地實(shí)現(xiàn)程序的下載、仿真、調(diào)試和升級(jí)。
目前整合性最好的MSP430F44X系列,具有60 KB程序存儲(chǔ)(可記錄數(shù)據(jù)),2 KB片內(nèi)RAM,6個(gè)I/O端口(P1和P2具有中斷能力),160段液晶驅(qū)動(dòng),2個(gè)串行端口,4個(gè)定時(shí)器(其中TB帶有7個(gè)捕獲/比較器,包括看門狗),模擬比較器,硬件乘法器,8路12位A/D轉(zhuǎn)換器,頻率調(diào)整電路FLL+以及系統(tǒng)復(fù)位SVS模塊等。而基本型的 MSP430F1101 和MSP430C1101只有1 KB程序存儲(chǔ)、128字節(jié)片內(nèi)RAM、模擬比較器和2個(gè)定時(shí)器等。
MSP430F44X與MSP430F11X在硬件結(jié)構(gòu)上、在系統(tǒng)整合上存在較大差異; MSP430F41X與MSP430F11X的差異不是很大。但這3系列芯片的價(jià)格由幾元到數(shù)十元不等,那么如何選擇系統(tǒng)芯片呢?以3種芯片為例,其系統(tǒng)功能框圖分別如圖1、圖2、圖3所示。
2 常用的MSP430應(yīng)用系統(tǒng)的設(shè)計(jì)方案
在圖4所示系統(tǒng)中,有模擬輸入、脈沖采集、日歷時(shí)鐘、液晶顯示、鍵盤操作和外圍設(shè)備控制等??刹捎靡韵聨追N方案進(jìn)行MSP430的選型。
(1)選用MSP430F44X系列
這個(gè)方案設(shè)計(jì)最簡(jiǎn)單,因?yàn)槟壳癕SP430F44X系列芯片是集成度最高的。該系列任何一款芯片都能勝任(一般程序字節(jié)不會(huì)大于32 KB)。
(2)選用MSP430F41X系列
如果程序在8 KB范圍以內(nèi),那么這是一種較好的方案。MSP430F41X系列雖然不能直接進(jìn)行A/D轉(zhuǎn)換,但整個(gè)系統(tǒng)價(jià)格適中。
(3)選用MSP430F11XX系列
該系列芯片不能直接驅(qū)動(dòng)液晶,且程序量較小,也沒(méi)有直接的A/D轉(zhuǎn)換能力。與前兩種方案相比,這是明顯的不足,但其價(jià)格是最低的。
在這3種方案中,如果對(duì)生產(chǎn)成本要求不高,則第1種方案最好;如果要考慮批量的生產(chǎn)成本,則第3 種方案最好,性價(jià)比最高。如果使用MSP430F1121A,則批量報(bào)價(jià)不到9元,適合于大批量生產(chǎn)、成本敏感的產(chǎn)品,可得到最高的性價(jià)比。但第3種方案存在很多問(wèn)題,有待解決。
3 高性價(jià)比的MSP430應(yīng)用系統(tǒng)解決方法
圖4是較為經(jīng)典的MSP430應(yīng)用系統(tǒng)框圖。如果使用最經(jīng)濟(jì)的MSP430系列器件MSP430F11XX系列,則要解決5個(gè)問(wèn)題:模/數(shù)轉(zhuǎn)換問(wèn)題、液晶顯示問(wèn)題、程序量小的問(wèn)題、日歷時(shí)鐘的程序化問(wèn)題及串行通信問(wèn)題。
3.1模/數(shù)轉(zhuǎn)換問(wèn)題解決方案
MSP430F11XX系列單片機(jī)片內(nèi)有模擬比較器Comparator_A和功能強(qiáng)大的定時(shí)器Time_A,可以構(gòu)成斜率(Slope)A/D轉(zhuǎn)換,實(shí)現(xiàn)從模擬到數(shù)字的轉(zhuǎn)換。具體原理如圖5所示(這里以電阻模擬量到數(shù)字量的轉(zhuǎn)換為例)。
在圖5中,Rref、Rmeas分別為標(biāo)準(zhǔn)的參考電阻和被測(cè)量的電阻,電容ca0起充放電作用。比較器的輸出CAOUT用于驅(qū)動(dòng)定時(shí)器捕獲的發(fā)生。MSP430內(nèi)部的模擬比較器能產(chǎn)生用于比較的模擬電壓(關(guān)閉內(nèi)部參考電壓,使用外部參考電壓 O.25Vcc、O.5Vcc和二極管管壓降)。比較器負(fù)端選擇O.25Vcc。
首先,標(biāo)準(zhǔn)電阻Rref對(duì)電容CAO充電到VCC,再通過(guò)參考電阻Rref放電,同時(shí)記錄定時(shí)器值T1;當(dāng)電容放電到O.5Vcc時(shí),比較器產(chǎn)生輸出,CAOUT觸發(fā)定時(shí)器產(chǎn)生捕獲動(dòng)作,將定時(shí)器值T2讀出。其次,使用被測(cè)量電阻Rmeas對(duì)電容充電到Vcc,再通過(guò)Rmeas放電,同時(shí)讀取定時(shí)器值T3;當(dāng)電容放電到0.5Vcc時(shí),比較器輸出信號(hào)再次捕獲定時(shí)器數(shù)據(jù)T4,則在電容放電的線性區(qū)域可以得到被測(cè)量電阻的阻值:
對(duì)其他電壓等物理量的測(cè)量也可采用此辦法。
3.2 液晶顯示問(wèn)題解決方案
MSP430F11XX沒(méi)有液晶驅(qū)動(dòng)能力,必須外部擴(kuò)展。如圖6所示,可以使用I/O輸出直接驅(qū)動(dòng)價(jià)格低廉的液晶驅(qū)動(dòng)芯片來(lái)顯示信息。如果這樣,為什么還要選用自帶液晶驅(qū)動(dòng)的價(jià)格昂貴的MSP430F43X或MSP430F44X呢?
例如,用MSP430的Px.x兩個(gè)I/O口與驅(qū)動(dòng)芯片的CLK、DATA進(jìn)行通信,即可實(shí)現(xiàn)所需的顯示信息??梢怨?jié)省本就不多的I/O端口以作他用。
3.3 程序量小問(wèn)題解決方案
MSP430F11XX系列單片機(jī)最大的程序容量只有4 KB,對(duì)較為復(fù)雜的應(yīng)用來(lái)說(shuō)程序空間比較小。對(duì)于MSP430系列單片機(jī)有個(gè)巧妙的解決辦法:由于MSP430單片機(jī)的存儲(chǔ)器具有線性統(tǒng)一編址的特點(diǎn),因此單片機(jī)運(yùn)行的程序可以在除了片內(nèi)外圍模塊空間以外的任何存儲(chǔ)空間,這里RAM用作程序存儲(chǔ)器。又由于RAM內(nèi)容可變,故可將程序存放在外部存儲(chǔ)器中,在需要時(shí)調(diào)到RAM中,再執(zhí)行RAM中的程序。外部存儲(chǔ)器可選用串行24C系列為E2PROM,既可減小系統(tǒng)體積,又可使程序空間增加32 KB乃至更多,且系統(tǒng)總成本增加很少。24C系列E2PROM與MSP430單片機(jī)的接口,只需要2根I/O口線和2個(gè)上拉電阻。
首先,需要將存放在E2PROM中的應(yīng)用程序劃分為較小的模塊。這里針對(duì)MSP430F1121A將每個(gè)模塊的大小限定在128字節(jié)內(nèi)。MSP430F1121A的片內(nèi)RAM有256字節(jié),一半用于存儲(chǔ)程序處理中的數(shù)據(jù),另一半用于暫存程序調(diào)度的程序。
其次,MSP430F1121A的片內(nèi)存儲(chǔ)器用于存放對(duì)24C系列存儲(chǔ)器的讀寫操作程序,以及最常用的處理程序和各種中斷服務(wù)程序等。將各個(gè)小模塊的應(yīng)用程序存放在E2PROM中,同時(shí),每個(gè)小模塊的應(yīng)用程序在E2PROM中的起始位置和模塊長(zhǎng)度在 MSP430的程序存儲(chǔ)器中用數(shù)據(jù)表格的形式存放。每當(dāng)要調(diào)用在E2PROM中的小模塊時(shí),就在表格中查找。使用E2PROM讀程序,在E2PROM中讀出全部的小模塊程序數(shù)據(jù)到MSP430的RAM中的后128字節(jié)。
最后,將程序計(jì)數(shù)器(PC指針)壓棧,再改變PC內(nèi)容為280H(RAM的后128字節(jié)開(kāi)始位置),程序?qū)⒂纱碎_(kāi)始運(yùn)行。該模塊運(yùn)行完畢后,最后一句是RET,將剛壓棧的PC指針恢復(fù)。程序繼續(xù)運(yùn)行MSP430 Flash中的主程序。
3.4 日歷時(shí)鐘程序化問(wèn)題解決方案
由于MSP430系列單片機(jī)的超低功耗特性,使用其內(nèi)部定時(shí)器模塊的比較模式實(shí)現(xiàn)日歷時(shí)鐘,時(shí)鐘源使用鐘表32 768 Hz晶振產(chǎn)生的ACLK信號(hào)。將定時(shí)器模塊設(shè)置為1 s中斷一次,在中斷服務(wù)程序中編寫日歷時(shí)鐘程序。只要在編寫的過(guò)程中注意公歷的各種推算,甚至可以使用某種算法將農(nóng)歷也編寫進(jìn)去。在中斷程序結(jié)束后立即進(jìn)入低功耗LMP3模式,這時(shí)系統(tǒng)耗電小于1μA,比多數(shù)的專用日歷時(shí)鐘芯片的耗電還要小。選材時(shí),只要選用精度高的晶振,做出的時(shí)鐘將是很準(zhǔn)確的,而且使用單片機(jī)將日歷時(shí)鐘程序化從各方面講(可靠性、功耗、成本、體積等)都是很好的解決方案。
3.5串行通信問(wèn)題解決方案
MSP430F11XX系列單片機(jī)片內(nèi)沒(méi)有串行通信模塊,不能直接用于異步串行通信,但由于定時(shí)器Time_A的捕獲與比較以及特殊的結(jié)構(gòu),利用其實(shí)現(xiàn)異步串行通信的位定時(shí)(波特率產(chǎn)生)以及起始位檢測(cè)等功能,可方便實(shí)現(xiàn)串行通信。
串行發(fā)送相對(duì)簡(jiǎn)單一點(diǎn):設(shè)置Time_A為比較模式,比較的數(shù)據(jù)體現(xiàn)每一位的發(fā)送時(shí)間,使用中斷,每當(dāng)時(shí)間到則發(fā)送下一位,全部發(fā)送則發(fā)送完畢。
串行接收相對(duì)復(fù)雜一點(diǎn):設(shè)置Time_A為捕獲模式,要捕獲到串行通信的起始位;捕獲到起始位后,將Time_A設(shè)置為比較模式,同時(shí)第一位與后面其他位的定時(shí)時(shí)間不一樣,第一位的定時(shí)時(shí)間是其他位的1.5倍。所有數(shù)據(jù)接收完畢即結(jié)束。在硬件上使用RS232或RS485都可以。
另外,也可以使用外圍模塊進(jìn)行通信。例如使用半雙工或全雙工的RS485芯片進(jìn)行485的信息傳遞。
4 結(jié) 論
實(shí)踐證明,在充分掌握MSP430系列各個(gè)片內(nèi)模塊的性能與特性基礎(chǔ)上,選用最簡(jiǎn)單、最便宜、最常規(guī)的器件,設(shè)計(jì)高性價(jià)比的應(yīng)用系統(tǒng)是非??尚械?同時(shí)隨著產(chǎn)量的增加,經(jīng)濟(jì)效益也會(huì)顯著增加。
評(píng)論