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