傅仁軒 陳龍飛
摘? 要: 為實(shí)現(xiàn)數(shù)據(jù)終端的低功耗,設(shè)計(jì)了以MSP430單片機(jī)為核心的低功耗數(shù)據(jù)終端的總體結(jié)構(gòu),以低電壓、低功耗的外圍電路等硬件設(shè)計(jì)為基礎(chǔ),通過軟件實(shí)現(xiàn)活動(dòng)模式與休眠模式的切換、控制外圍電路等方法延長(zhǎng)CPU休眠時(shí)間,減小CPU的工作時(shí)間,進(jìn)一步降低功耗。軟件配合硬件使低功耗性能發(fā)揮到最大,從而達(dá)到減小功耗的目的。經(jīng)過現(xiàn)場(chǎng)測(cè)試,滿足低功耗終端使用的要求。
關(guān)鍵詞: 低功耗;單片機(jī);硬件設(shè)計(jì);軟件設(shè)計(jì)
中圖分類號(hào): TP368.1? ? 文獻(xiàn)標(biāo)識(shí)碼: A? ? DOI:10.3969/j.issn.1003-6970.2020.10.003
本文著錄格式:傅仁軒,陳龍飛. 低功耗數(shù)據(jù)采集終端的軟硬件設(shè)計(jì)[J]. 軟件,2020,41(10):1214
【Abstract】: In order to realize low power consumption of data terminal, the overall structure of low power consumption data terminal based on MSP430 is designed, which is based on low voltage and low power consumption peripheral circuit, the software can change the activity mode and sleep mode, control the peripheral circuit and so on to prolong the CPU sleep time, reduce the CPU working time, and further reduce the power consumption. The software and the hardware make the low power performance play to the maximum, so as to achieve the goal of reducing power consumption. After field test, it can meet the requirement of low power consumption terminal.
【Key words】: Low power consumption; Mcu; Hardware design; Software design
0? 引言
隨著5G技術(shù)的應(yīng)用,物聯(lián)網(wǎng)的需求將會(huì)不斷增長(zhǎng),各種可穿戴設(shè)備、手持設(shè)備、現(xiàn)場(chǎng)無交流供電的終端設(shè)備等需要電池供電,這些設(shè)備一方面希望待機(jī)時(shí)間長(zhǎng),另一方面較高的功耗可能導(dǎo)致設(shè)備過熱而降低設(shè)備的可靠性和壽命,所以低功耗設(shè)計(jì)已成為產(chǎn)品設(shè)計(jì)中必不可少的需求。過去的幾十年里,已經(jīng)提出了許多降低功耗的方法[1-5],但由于各種單片機(jī)的硬件結(jié)構(gòu)不同,軟件指令集及功耗也不盡相同,適合某一單片機(jī)的低功耗方式不一定適合其他單片機(jī)。本文的數(shù)據(jù)采集終端在低功耗、低電壓的硬件設(shè)計(jì)基礎(chǔ)上采用CPU控制外部接口模塊的電源,使其功耗降到最低。低功耗的設(shè)計(jì)涉及硬件低功耗設(shè)計(jì)[6-9]及軟件低功耗設(shè)計(jì)[10]兩個(gè)方面,這兩方面對(duì)于低功耗設(shè)計(jì)都非常重要。
1? 硬件設(shè)計(jì)
硬件設(shè)計(jì)時(shí)必須從低功耗的需求出發(fā),在滿足使用要求的情況下,硬件盡可能簡(jiǎn)單,功能盡可能簡(jiǎn)化。一般監(jiān)控系統(tǒng)的數(shù)據(jù)采集終端應(yīng)具數(shù)字量輸出模塊、數(shù)字量輸入模塊、模擬量輸入模塊、通信模塊、存儲(chǔ)器、看門狗等部分,數(shù)據(jù)采集終端的總體設(shè)計(jì)框圖如圖1所示。
供電電源,選擇3.6V鋰電池,可以省去電源處理電路,同時(shí)節(jié)約功耗。數(shù)字量輸出模塊,主要功能是控制設(shè)備開停,如控制報(bào)警器的開啟與關(guān)閉,指示燈的亮與滅等。數(shù)字量輸入模塊,主要功能是監(jiān)測(cè)設(shè)備開停狀態(tài),如設(shè)備是開的狀態(tài)或關(guān)的狀態(tài),門禁的狀態(tài)等。模擬量輸入模塊,主要功能是監(jiān)測(cè)模擬量數(shù)據(jù)的變化,如電池電壓、溫度、水管壓力、水池液位等,當(dāng)監(jiān)測(cè)到電壓小于3.3 V時(shí),說明電池的電量快消耗完了,終端及時(shí)報(bào)警,提醒用戶更換電池。
以單片機(jī)為核心構(gòu)成的數(shù)據(jù)終端,總能耗是由單片機(jī)能耗及其外圍電路的能耗共同構(gòu)成的,為了降低終端設(shè)備的功耗,除了要降低單片機(jī)自身的運(yùn)行功耗外,還要降低外圍電路的功耗。因此選擇低電壓且具有控制功能的外圍電路,在不需要工作時(shí)可以關(guān)閉,以降低靜態(tài)電流,使功耗降到最低。
1.1? 低功耗單片機(jī)的選擇
選用單片機(jī)時(shí)的考慮因素,選擇具有低功耗工作模式的單片機(jī)[11],本方案選擇MSP430,它有幾種低功耗工作模式可選,可以大大降低系統(tǒng)功耗;選擇合適的I/O管腳,單片機(jī)驅(qū)動(dòng)的IO管腳數(shù)越多,其功耗也就越大,應(yīng)根據(jù)設(shè)計(jì)需求確定;選擇合適的程序容量,夠用就行,本方案采用32 KB程序容量的MSP430F147,電壓范圍為1.8 V~3.6 V,溫度范圍為—40℃~+80℃,它是TI公司生產(chǎn)的工業(yè)級(jí)16位RISC結(jié)構(gòu)的單片機(jī),具有極低功耗結(jié)構(gòu)體系,正常運(yùn)行時(shí)電流160 A,備用時(shí)為0.1 A,喚醒時(shí)間為6 s,可以大大延長(zhǎng)電池的使用壽命。同時(shí)有1KRAM存儲(chǔ)器,12位A/D轉(zhuǎn)換。
它有一種活動(dòng)模式(AM)和五種低功耗模式(LPM0~LPM4),采用不同的工作模式,則開啟不同的功能模塊,產(chǎn)生不同的功耗。在實(shí)時(shí)時(shí)鐘模式下,電流2.5 A,在RAM 保持模式下,電流0.1 A。內(nèi)部各個(gè)功能模塊可以使用軟件進(jìn)行控制,能夠做到部分或全部禁止外圍模塊的功能,被禁止的外圍模塊將停止其功能以減少電源消耗。
1.2? 多時(shí)鐘系統(tǒng)設(shè)計(jì)
MSP430在運(yùn)行時(shí)鐘方面有獨(dú)到之處,多時(shí)鐘設(shè)計(jì),時(shí)鐘的選擇對(duì)于系統(tǒng)功耗相當(dāng)敏感,系統(tǒng)工作頻率是影響系統(tǒng)功耗的最重要因素之一。工作頻率又與系統(tǒng)的性能密切相關(guān),當(dāng)要求系統(tǒng)反應(yīng)時(shí)間短、運(yùn)算量大時(shí),選擇較高的工作頻率,也就是CPU使用高頻晶振;當(dāng)系統(tǒng)要處理的運(yùn)算量較小、反應(yīng)時(shí)間要求不高時(shí),使用較低頻的晶振作為工作頻率,從而進(jìn)一步減小系統(tǒng)的功耗。MSP430F147可以使用兩個(gè)外部晶振,其中一個(gè)是32 KHz的低頻晶振,產(chǎn)生輔助時(shí)鐘,用于保證一些低頻率工作場(chǎng)合的使用要求;另一個(gè)是采用1 MHz~8 MHz的高頻晶振,用于滿足高速實(shí)時(shí)的工作場(chǎng)合的要求。在休眠狀態(tài)時(shí)使用低頻晶振,在工作狀態(tài)時(shí)使用高頻晶振,可以使用軟件指令進(jìn)行切換,切換時(shí)間不大于6 s,從而實(shí)現(xiàn)對(duì)總體功耗的控制。
1.3? 低功耗的看門狗電路
看門狗,又叫 watchdog timer,是一個(gè)定時(shí)器電路,它的主要作用是防止單片機(jī)死機(jī)或程序跑飛,輸入端叫喂狗,輸出端連接到單片機(jī)的復(fù)位端,單片機(jī)正常工作時(shí),每隔一段時(shí)間輸出一個(gè)信號(hào)到喂狗端,給看門狗清零,如果超過規(guī)定的時(shí)間不喂狗,(一般在程序跑飛時(shí)),看門狗定時(shí)超時(shí),此時(shí)給單片機(jī)一個(gè)復(fù)位信號(hào),使單片機(jī)復(fù)位。
選擇工作電壓范圍為1.8 V5.0 V,電流30 nA的低功耗芯片TPL5000,它能替代一個(gè)微控制器的內(nèi)部定時(shí)器,使微控制器能夠保持在低功耗睡眠模式,而不用運(yùn)行一個(gè)定時(shí)器,從而減少60%至80%的總功耗。用CPU的P2.0和P2.1管腳控制TPL5000的工作。
1.4? 存儲(chǔ)模塊
存儲(chǔ)容量的選擇根據(jù)功能需求確定,首先考慮保存什么數(shù)據(jù),保存多長(zhǎng)時(shí)間,然后再選擇芯片。假設(shè)需要保存15天的數(shù)據(jù),每10分鐘保存1次數(shù)據(jù),每次保存3通道模擬量(每通道占2字節(jié)),8通道數(shù)字量(每通道占1位),每次占用7字節(jié),每小時(shí)保存6*7=42個(gè)字節(jié),每天24小時(shí)需要1008字節(jié),15天需要15120字節(jié),故需要選擇16 k字節(jié)的存儲(chǔ)器,每次保存數(shù)據(jù)時(shí)需要計(jì)算寫入數(shù)據(jù)的起始地址。
選擇低電壓、低功耗的芯片,根據(jù)存儲(chǔ)容量的需求,選擇24LC128存儲(chǔ)器,它是低功耗CMOS技術(shù),工作電壓2.5 v,寫入電流3mA,靜態(tài)電流100 nA,2線制串行接口,I2C接口,SDA是串行數(shù)據(jù),SDL是串行時(shí)鐘。存儲(chǔ)芯片與CPU的連接電路圖2所示,CPU的UCB1SDA和UCB1SCL分別連接存儲(chǔ)器的SDA、SCL端。
1.5? 通信模塊
選擇低功耗的NB-IoT通信網(wǎng)絡(luò)模組BC26,其低功耗實(shí)現(xiàn)最主要的是采用了PSM(Power saving mode,省電模式)和eDRX(擴(kuò)展的非連續(xù)接收模式)兩個(gè)關(guān)鍵技術(shù),設(shè)備處在PSM態(tài)時(shí)功耗非常低,而NB-IoT能長(zhǎng)期讓設(shè)備處于PSM態(tài)。NB-IoT采用的eDRX技術(shù)增加了設(shè)備空閑狀態(tài)下的睡眠周期,從而進(jìn)一步降低整體功耗。用CPU的UCA1RXD 、UCA1TXD控制數(shù)據(jù)發(fā)送與接收。為了降低功耗,在休眠期間關(guān)閉通信模組的電源,圖3為控制通信模塊電源的電路圖,用CPU的P1.4控制電源的開啟與關(guān)閉,不需通信時(shí),關(guān)閉通信模塊的電源,使其功耗為0,需要通信時(shí)開啟電源。
2? 軟件設(shè)計(jì)
軟件的一條指令能激活單片機(jī)系統(tǒng)的某些硬件電路,執(zhí)行相應(yīng)的動(dòng)作,故軟件是降低數(shù)據(jù)采集終端功耗的另一重要方面,根據(jù)硬件的結(jié)構(gòu)及數(shù)據(jù)采集終端的功能設(shè)計(jì)軟件的架構(gòu),圖4為軟件流程圖。
2.1? 工作模式的設(shè)計(jì)
為了降低終端的功耗,其工作模式至關(guān)重要,本方案的軟件工作模式設(shè)計(jì)為活動(dòng)模式AM模式和休眠模式LPM3模式,大部分時(shí)間處于休眠模式,當(dāng)有事件處理時(shí)由休眠模式轉(zhuǎn)為活動(dòng)模式?;顒?dòng)模式時(shí)終端能進(jìn)行數(shù)據(jù)采集、數(shù)據(jù)處理(判斷是否報(bào)警)、存儲(chǔ)數(shù)據(jù)、與數(shù)據(jù)中心通信等工作。在休眠狀態(tài)時(shí),除了CPU和實(shí)時(shí)時(shí)鐘外,其它外圍電路電源一律關(guān)斷,包括I/O部分電路和通信部分電路,而且與之相連的CPU的引腳全部設(shè)置成輸入狀態(tài),內(nèi)部下拉,減小漏電流,進(jìn)一步降低系統(tǒng)整體功耗。
2.2? 外圍芯片的控制
CPU訪問外圍芯片是通過控制片選信號(hào)實(shí)現(xiàn),外圍芯片的功耗在片選有效時(shí)比片選無效時(shí)大100倍以上,所以應(yīng)盡可能用CPU控制片選,在滿足其它要求的情況下盡可能縮短片選脈沖的寬度。
2.3? 未使用I/O口的處理方法
未使用的I/O口,如果懸空,則有可能受外界干擾引起輸入信號(hào)的反復(fù)振蕩,如果上拉或下拉,則每個(gè)引腳的電阻將消耗一定的靜態(tài)電流。建議在初始化時(shí)用軟件將其設(shè)置為輸出,這種方式功耗最低。
2.4? 算法的低功耗設(shè)計(jì)策略
優(yōu)化代碼。減少由算法的低效率引起不必要的功耗,優(yōu)化標(biāo)準(zhǔn)C代碼,分析影響執(zhí)行效率的因素,根據(jù)CPU自身硬件結(jié)構(gòu)特點(diǎn),用匯編語言編程,能使復(fù)雜的算法和功能在實(shí)時(shí)處理方面具有較好的效果,以達(dá)到實(shí)時(shí)要求和低功耗設(shè)計(jì)的指標(biāo)。
用查表代替計(jì)算降低功耗。復(fù)雜運(yùn)算,如指數(shù)運(yùn)算、浮點(diǎn)乘除等占據(jù)較多的系統(tǒng)時(shí)序,延長(zhǎng)了CPU的工作時(shí)間,減少CPU休眠時(shí)間,增加了功耗。在程序執(zhí)行前先計(jì)算,將結(jié)果保存到數(shù)組,軟件執(zhí)行時(shí)直接通過查表方式,這樣就節(jié)約了現(xiàn)場(chǎng)計(jì)算時(shí)間,延長(zhǎng)了休眠時(shí)間,降低功耗。
2.5? 中斷代替查詢
在無低功耗要求的場(chǎng)合,采用中斷方式還是查詢方式關(guān)系不大。但在要求低功耗場(chǎng)合,這兩種方式相差較大,使用中斷方式,CPU可以進(jìn)入休眠模式,而查詢方式下,CPU必須不斷訪問I/O寄存器,這會(huì)增加額外的功耗,因此建議采用中斷方式,不采用查詢方式。
2.6? 用“宏”代替子程序
調(diào)用子程序或函數(shù)時(shí)需要對(duì)RAM進(jìn)行入棧和出棧兩次操作,產(chǎn)生較大的功耗?!昂辍痹诰幾g時(shí)展開,CPU按順序執(zhí)行指令,使用“宏”雖然會(huì)增加程序的代碼量,但會(huì)降低系統(tǒng)的功耗。
3? 結(jié)論
電池供電的數(shù)據(jù)終端功耗不僅與硬件設(shè)計(jì)有關(guān),而且與軟件設(shè)計(jì)有重要關(guān)系。本方案在選擇低功耗的CPU基礎(chǔ)上,采用多時(shí)鐘系統(tǒng)等硬件設(shè)計(jì)方法降低功耗,采用活動(dòng)模式與休眠模式相結(jié)合的工作模式等軟件設(shè)計(jì)方法再降低功耗,延長(zhǎng)了電池供電時(shí)間、提高了終端的可靠性和壽命。經(jīng)過測(cè)試,能滿足低功耗終端使用的要求,為各行業(yè)的低功耗終端應(yīng)用提供了參考方案,具有較高的實(shí)用價(jià)值和廣闊的應(yīng)用前景。
參考文獻(xiàn)
[1]李昆侖, 黃植功, 李振華, 等. 雷電流在線記錄裝置的低功耗設(shè)計(jì)[J]. 電測(cè)與儀表, 2013, 50(10): 111-114.
[2]張秋月, 吳瓊, 蘇全志, 等. 基于android系統(tǒng)的RFID手持終端低功耗設(shè)計(jì)[J]. 電測(cè)與儀表, 2018, 55(11): 105-108.
[3]陳仲平, 裴石燕, 郭黎光. 國(guó)家電網(wǎng)智能電能表的低功耗設(shè)計(jì)[J]. 電測(cè)與儀表, 2014, 51(11): 28-31.
[4]許燕. 單片機(jī)系統(tǒng)低功耗設(shè)計(jì)的總體原則及其設(shè)計(jì)策略[J]. 微型電腦應(yīng)用, 2018, 34(7): 59-60, 78.
[5]張杰, 席志成, 汪嵩, 低功耗遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 制造業(yè)自動(dòng)化, 2015, 37(11): 137-139.
[6]丁月林. 基于STM32的低功耗溫濕度采集器實(shí)現(xiàn)[J]. 軟件, 2015, 36(5): 84-88.
[7]孟海斌, 張紅雨. 超低功耗嵌入式系統(tǒng)設(shè)計(jì)技巧[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2010, 10(8): 16-19.
[8]魏江東, 鄭衛(wèi). 單片機(jī)應(yīng)用系統(tǒng)最小功耗的軟、硬件設(shè)計(jì)[J]. 應(yīng)用科技, 2003, 30(8): 19-20, 23.
[9]基于單片機(jī)的嵌入式系統(tǒng)的低功耗設(shè)計(jì)問題[J]. 海南大學(xué)學(xué)報(bào)(自然科學(xué)版), 2009, 27(4): 382-385.
[10]王奇, 徐文韌, 唐克. 嵌入式系統(tǒng)的軟件低功耗技術(shù)實(shí)現(xiàn)策略. 艦船電子工程, 2013, (3): 74-76.
[11]張惠安. 超低功耗MCU的選型技巧與設(shè)計(jì)思路[J]. 集成電路應(yīng)用, 2017, 34(3): 37-39.