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