高性價(jià)比的MSP430應(yīng)用系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
MSP430系列單片機(jī)作為一個(gè)性能優(yōu)異的MCU在大陸已經(jīng)得到了廣泛的應(yīng)用。MSP430在高整合性與高性能方面與其他MCU比較有較大優(yōu)勢(shì)。該系列芯片的價(jià)格也較為合理,目前整合性最好的MAP430F44X系列,整合了60K字節(jié)程序存儲(chǔ)(可記錄數(shù)據(jù))、2K字節(jié)片內(nèi)RAM、6個(gè)I/O端口(P1、P2能中斷)、160段液晶驅(qū)動(dòng)、兩個(gè)串行端口、4個(gè)定時(shí)器(其中TB帶有7個(gè)捕獲/比較器、包括看門狗)、模擬比較器、硬件乘法器、8路12位A/D轉(zhuǎn)換器、還有頻率調(diào)整電路FLL+、系統(tǒng)復(fù)位SVS模塊等。而較為基本型的MSP430F1101、MSP430C1101只有1K字節(jié)程序存儲(chǔ)、128字節(jié)片內(nèi)RAM、模擬比較器、兩個(gè)定時(shí)器等。他們的性能比較可參考圖一、圖二以及圖三。
圖一 MSP430F11XX系列結(jié)構(gòu)框圖
圖二 MSP430F41XX系列結(jié)構(gòu)框圖
圖三 MSP430F44X系列結(jié)構(gòu)框圖
由圖一、圖二以及圖三可以看出,MSP44X與MSP11X在硬件結(jié)構(gòu)上、在系統(tǒng)整合上存在較大差異;MSP41X與MSP11X的差異不是很大。但這三個(gè)系列芯片的價(jià)格由49美分到7美圓不等,那么怎么選擇我們的系統(tǒng)芯片呢。
二 一般常用的MSP430應(yīng)用系統(tǒng)的設(shè)計(jì)方案
圖四是常用的MSP430應(yīng)用系統(tǒng)。在這個(gè)系統(tǒng)中,有模擬量采集、脈沖數(shù)字量采集、日歷時(shí)鐘、液晶顯示、有鍵盤可供操作、大量的運(yùn)算等。在這個(gè)系統(tǒng)中,可采用以下幾種方案進(jìn)行MSP430的選型。下面同時(shí)給出對(duì)他們的比較。
1 使用MSP430F44X系列
在這個(gè)選型方案中,設(shè)計(jì)起來(lái)最簡(jiǎn)單,因?yàn)槟壳暗腗SP430F44X系列芯片是整合最齊全的。該系列任何一款都能勝任(一般程序不會(huì)大于32K字節(jié))。
圖四 常用的MSP430應(yīng)用系統(tǒng)
2 使用MSP430F41X系列
如果程序在8K字節(jié)范圍以內(nèi),這無(wú)疑也是一種較好的方案。MSP41X系列就差不能直接A/D轉(zhuǎn)換,系統(tǒng)價(jià)格適中。
3 使用MSP430F11XX系列
這種方案中MSP430不能直接驅(qū)動(dòng)液晶,程序量較小,也沒(méi)有直接A/D轉(zhuǎn)換能力,這是與前兩種方案相比較的明顯不足,但它的價(jià)格是最好的。
在這三中方案中,可以看出如果不計(jì)硬件成本,第一種方案最好;如果一定要考慮硬件成本(比如大量產(chǎn)的民品),則第三種方案最好,是性價(jià)比最高的。如果使用MSP430C1101,則官方報(bào)價(jià)在49美分,價(jià)格相當(dāng)便宜,適合與大批量的、成本價(jià)格敏感的產(chǎn)品,可得到最高的性能價(jià)格比。但第三種方案存在很多問(wèn)題有待解決。
三 高性價(jià)比的MSP430應(yīng)用系統(tǒng)解決方法
圖四是較為經(jīng)典的MSP430應(yīng)用系統(tǒng)框圖,如果使用最經(jīng)濟(jì)的MSP430系列器件MSP430F11XX系列,則要解決五個(gè)問(wèn)題:模數(shù)轉(zhuǎn)換的問(wèn)題、液晶顯示問(wèn)題、程序量小的問(wèn)題、日歷時(shí)鐘的程序化、串行通訊問(wèn)題。
1 模數(shù)轉(zhuǎn)換(A/D)的問(wèn)題解決方案
MSP430X11XX系列單片機(jī)片內(nèi)有模擬比較器Comparator_A與功能強(qiáng)大的定時(shí)器Time_A,可以構(gòu)成斜邊(Slope)A/D轉(zhuǎn)換,實(shí)現(xiàn)模擬量到數(shù)字量的轉(zhuǎn)換。具體原理是(這里以電阻量到數(shù)字量的轉(zhuǎn)換為例)。
圖五 斜邊(Slope)A/D轉(zhuǎn)換原理圖
在圖五中,R1、R2分別為標(biāo)準(zhǔn)的參考電阻(R1)與被測(cè)量的電阻(R2),電容C1起充放電作用。比較器的輸出CAOUT用于驅(qū)動(dòng)定時(shí)器捕獲的發(fā)生。MSP430內(nèi)部的模擬比較器能產(chǎn)生用于比較的模擬電壓(電源VCC、1/2VCC、1/4VCC、二極管管壓降)。比較器負(fù)端選擇1/2VCC。首先,標(biāo)準(zhǔn)電阻對(duì)電容C1充電到VCC,再通過(guò)參考電阻R1放電,同時(shí)記錄定時(shí)器值T1;當(dāng)電容放電到1/2VCC時(shí),比較器產(chǎn)生輸出,CAOUT觸發(fā)定時(shí)器產(chǎn)生捕獲動(dòng)作,將定時(shí)器值T2讀出;其次使用被測(cè)量電阻R2對(duì)電容充電到VCC,再通過(guò)R2放電,同時(shí)讀取定時(shí)器值T3;當(dāng)電容放電到1/2VCC時(shí),比較器輸出信號(hào)再次捕獲定時(shí)器數(shù)據(jù)T4。則在電容放電的線性區(qū)域可以得到被測(cè)量電阻的阻值: R2 = (T2 - T1)* R1 / (T4 - T3) ,對(duì)于其他物理量的測(cè)量也可以使用類似的辦法。
2 液晶顯示問(wèn)題的解決方案
MSP30X11XX沒(méi)有液晶驅(qū)動(dòng)能力,必須外部擴(kuò)展。如果可以使用外擴(kuò)2圓人民幣不到的液晶驅(qū)動(dòng)芯片(比如HT1621或其他),為什么還使用自帶液晶驅(qū)動(dòng)的40-70圓人民幣左右的MSP430F43X、MSP430F44X系列呢。
這里以便宜的HT1621為例說(shuō)明液晶驅(qū)動(dòng)芯片與MSP430系列的接口。HT1621有128段的液晶驅(qū)動(dòng)能力。有4個(gè)公共端、32個(gè)段輸出,能實(shí)現(xiàn)靜態(tài)、2MUX、3MUX、4MUX等液晶驅(qū)動(dòng)方式。須3或4線與單片機(jī)接口,同時(shí)可定時(shí)輸出信號(hào)驅(qū)動(dòng)單片機(jī)(在單片機(jī)間歇工作時(shí)很有用),也能輸出用于驅(qū)動(dòng)蜂鳴器的信號(hào)。與MSP430單片機(jī)接口如圖六所示。如果不需要讀出顯示內(nèi)容,則讀信號(hào)可以不使用,只需要3線就可實(shí)現(xiàn)液晶顯示的驅(qū)動(dòng),在口線緊張的情況下,可這樣使用。
圖六 HT1621與單片機(jī)的接口
HT1621片內(nèi)有32*8位靜態(tài)顯示存儲(chǔ)器,該存儲(chǔ)器的內(nèi)容直接映射到液晶驅(qū)動(dòng)器,可使用讀寫(xiě)命令直接訪問(wèn)。通過(guò)對(duì)顯示存儲(chǔ)器內(nèi)容的操作實(shí)現(xiàn)液晶顯示。圖七為MSP430單片機(jī)對(duì)1621的操作時(shí)序圖。
圖七 1621的操作時(shí)序
3 程序量小的解決方案
MSP430F11XX系列單片機(jī)最大的程序容量只有4K字節(jié),對(duì)于大多數(shù)的用途基本夠用,但對(duì)相對(duì)復(fù)雜的應(yīng)用,就顯得程序空間較小。對(duì)于MSP430系列單片機(jī)有個(gè)巧妙的解決辦法:利用MSP430單片機(jī)的存儲(chǔ)器是線性統(tǒng)一編址的特點(diǎn),單片機(jī)運(yùn)行的程序可以在除了片內(nèi)外圍模塊空間而外的任何存儲(chǔ)空間,這里將RAM用來(lái)做程序存儲(chǔ)器使用。由于RAM內(nèi)容可變,故可將程序存放在外部存儲(chǔ)器中,在需要的時(shí)候調(diào)到RAM中,再執(zhí)行RAM中的程序。而外部存儲(chǔ)器選用串行24C系列EEPROM,可使系統(tǒng)體積減小,同時(shí)可使程序空間增加32K字節(jié)乃至128K字節(jié)!而系統(tǒng)成本增加很少。24C系列EEPROM與MSP430單片機(jī)的接口,這里不多說(shuō)了,只需要兩根I/O口線與兩個(gè)上拉電阻。
首先,需要將存放在EEPROM中的應(yīng)用程序劃分為較小的模塊。這里針對(duì)MSP430F1121將每個(gè)模塊的大小限定在128字節(jié)內(nèi)。MSP430F1121片內(nèi)RAM有256字節(jié),拿一半用于程序處理中的數(shù)據(jù)存儲(chǔ),而另一半用于程序調(diào)度的程序暫存。
其次,MSP430F1121/1111/1101的片內(nèi)存儲(chǔ)器用于存放對(duì)串行24C系列EEPROM存儲(chǔ)器的讀寫(xiě)操作程序,以及最常用的處理程序,各種中斷服務(wù)程序等等。
然后,將各個(gè)小模塊的應(yīng)用程序存放在EEPROM中,同時(shí),每個(gè)小模塊的應(yīng)用程序在EEPROM中的起始位置與模塊長(zhǎng)度在MSP430的程序存儲(chǔ)器中用數(shù)據(jù)表格的形式存放。每當(dāng)要調(diào)用在EEPROM中的小模塊時(shí),就在此表格中查找。使用EEPROM讀程序,在EEPROM中讀出全部的該小模塊程序數(shù)據(jù)到MSP430的RAM后128字節(jié)。
最后,將程序計(jì)數(shù)器(PC指針)壓棧,再改變PC內(nèi)容為280H(RAM的后128字節(jié)開(kāi)始位置),程序?qū)⒂纱碎_(kāi)始運(yùn)行。當(dāng)該模塊運(yùn)行完畢,最后一句是RET,則將剛壓棧的PC指針恢復(fù)。程序繼續(xù)430FLASH中的主程序運(yùn)行。
4 日歷時(shí)鐘的程序化解決方案
由于MSP430系列單片機(jī)的超低功耗特性,使用其內(nèi)部定時(shí)器模塊的比較模式實(shí)現(xiàn)日歷時(shí)鐘,時(shí)鐘源使用32768Hz產(chǎn)生的ACLK信號(hào)。將定時(shí)器模塊設(shè)置為1秒中斷一次,在中斷服務(wù)程序中編寫(xiě)日歷程序。在程序編寫(xiě)時(shí)要注意閏年與閏月以及月大與月小的情況,詳細(xì)方法這里不用多說(shuō)。在中斷程序完畢則進(jìn)入低功耗LMP3,這時(shí)系統(tǒng)耗電在1uA左右,比常用的專門日歷時(shí)鐘芯片的耗電還要少。在MSP430系列單片機(jī)中,將日歷時(shí)鐘程序化從各方面講(功耗、成本、體積、可靠性等)都是很好的解決方案。
5 串行通訊的解決方案
MSP430F11XX系列單片機(jī)片內(nèi)沒(méi)有串行通訊模塊,不能直接用于異步串行通訊,但由于定時(shí)器TIME A的捕獲與比較以及特殊的結(jié)構(gòu),利用定時(shí)器實(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倍。當(dāng)所有數(shù)據(jù)接收完畢則結(jié)束。在硬件上使用232或485都可以。
小結(jié)
在充分掌握MSP430各個(gè)片內(nèi)模塊的性能與特性基礎(chǔ)上,使用最簡(jiǎn)單、最便宜、最常規(guī)的器件,設(shè)計(jì)高性能價(jià)格比的應(yīng)用系統(tǒng)是非??尚械摹M瑫r(shí)隨著產(chǎn)量的增加,經(jīng)濟(jì)效益也會(huì)顯著增加。
評(píng)論