綦聲波,王圣南,劉群
(中國海洋大學 工程學院,青島 266100)
?
STM32L水下記錄儀的軟硬件低功耗設計
綦聲波,王圣南,劉群
(中國海洋大學 工程學院,青島 266100)
以水下記錄儀為例,從硬件和軟件兩方面研究了基于STM32L系列微控制器的低功耗設計技術及本儀器所采用的方法。對系統組成及功能進行分析的基礎上,設計了記錄儀的低功耗策略。在硬件方面選用低功耗、高效率器件,并采用供電控制方法。在軟件方面采用層次化、標準化的軟件架構,減少代碼冗余量。最后通過電壓和電流對照實驗,證明了本系統低功耗設計的有效性。
水下記錄儀;STM32L;低功耗設計
嵌入式系統的低功耗設計是與其應用背景息息相關的,因此建立在實際應用基礎上的低功耗設計才有意義。海底電磁采集站是海洋石油探測設備,本文所研究的水下記錄儀是海底電磁采集站的重要組成部分,它自成一體,內置MCU,可以將采集的姿態、溫度、鹽度和深度等數據存儲在CF卡中,并在回收后導出數據,作為電磁場數據解算的重要依據。
水下記錄儀在海底工作,其最大工作深度達4 000 m,因此只能依靠內置鋰電池供電;考慮到外殼抗壓能力和諸多因素,鋰電池的空間和容量有限,一旦電池電量耗盡,記錄儀便會失去作用;海底電磁采集站要檢測的海底電磁信號均為微弱信號,水下記錄儀內部的電流變化會引起電磁輻射,功耗越大,輻射能量越大,對海底微弱電磁信號的影響就越大;此外,水下記錄儀更換電池過程繁瑣,降低系統功耗可以延長設備的使用壽命,降低電池更換的頻率。因此,低功耗設計是水下記錄儀設計中必須考慮的重要因素。
水下記錄儀的低功耗設計,必須從系統的角度出發,對硬件和軟件進行精細化設計,在實現其基本功能的基礎上,盡量降低功耗,以滿足系統性能和低功耗兩方面的要求。
水下記錄儀系統由主控制器、采集模塊、存儲模塊、電源模塊和上位機組成,如圖1所示。其中,主控制器負責整個系統的運行和管理;采集模塊分為TCM傳感器和CTD傳感器兩部分,分別用來采集基站姿態和周圍海洋物理參數;存儲模塊利用CF卡來存儲傳感器采集的數據;電源模塊是鋰電池及電源控制電路,為整個系統提供動力;上位機主要實現參數配置和數據回收。

圖1 系統架構
由于系統在水下正常工作時不需要上位機,只是在數據回收時利用上位機導出數據,因此水下記錄儀的功耗主要集中在以下幾個部分:
① 主控制器:主控制器的功耗是由其本身特性及工作模式決定的。
② TCM和CTD傳感器:在數據采集和命令傳輸過程中需要耗電。
③ CF卡的讀寫: CF卡的讀寫均耗電,其中寫狀態耗電大于讀狀態耗電。
為了達到低功耗的目的,水下記錄儀的外設以隊列的方式周期性地工作。由于各模塊電源相互獨立,方便主控制器進行電源管理,因此在某一時刻只開啟TCM傳感器的電源,關閉其他部件的電源,下一時刻則使CTD傳感器工作,其他外設不工作,這樣就可以達到降低功耗的目的。
在嵌入式系統的低功耗設計過程中,硬件設計是必不可少的一部分。幾乎所有系統功耗都集中于硬件平臺,所謂軟件低功耗也是通過硬件才能實現,因此降低硬件平臺的功耗是實現低功耗的基本所在。但是,硬件器件本身的功耗與加工工藝密切相關,要達到降低功耗目的,就要從器件選型和硬件電路形式等方面入手。
2.1單片機選型
ST公司的STM32系列32位微控制器在嵌入式領域得到了廣泛應用,其基于ARM Cortex-M3內核,具有較高的數據處理能力。水下記錄儀采用STM32L151作為主控芯片,不僅兼顧STM32系列微控制器的功能,而且還具有更優良的低功耗特性,是高性能、低功耗應用領域的最佳選擇。STM32L151采用EnergyLite超低功耗平臺,通過6個超低功耗模式能夠在任何設定時間內以最低的功耗完成任務。其各模式下的功耗及喚醒條件如圖2所示。

圖2 STM32L151的低功耗模式及喚醒條件
與其他單片機相比,STM32L151進入低功耗響應的時間更短,電流更小,正常運行模式下的功耗僅為214 μA/MHz。與低功耗單片機MSP430系列相比,STM32L151單片機不僅運算速度更快,適用于處理大數據,并且待機功耗更低。
在水下記錄儀的設計中,采用睡眠模式和待機模式相結合的方法,以達到低功耗設計的目的。在睡眠模式下,可由任意中斷或事件喚醒,控制器功耗最低可達到4.4 μA;在待機模式下,只能由外部復位或WKUP喚醒,控制器最低功耗可達到0.9 μA。通過上位機軟件或定時器可以使系統進入不同低功耗模式,如系統在運行過程中,在空閑時進入睡眠模式,通過定時器喚醒;在運輸過程中,利用上位機設置其進入待機模式,通過復位喚醒。這樣就有效降低了系統功耗。
2.2電源轉換芯片選擇
記錄儀所用鋰電池充滿后的供電電壓約為16 V,主控器和存儲模塊需要3.3 V供電,TCM傳感器和CTD傳感器需要5 V供電,因此需要有電源轉換芯片將電池電壓轉換為系統所需要的3.3 V和5 V。相比較線性電源芯片,開關電源芯片從原理上更有優勢,但是必須兼顧兩個原則,一是轉換效率高,二是靜態電流低。設計中選擇了Linear公司的電源芯片LT3990,它與常用的開關電源芯片LM2575的參數對比如表1所列。

表1 LT3990與LM2575參數對比
由表1可以看出,與LM2575相比,LT3990具有轉換效率高、靜態電流小和具有寬范圍可調開關頻率等優勢。除此以外,LT3990只需要改變特定電阻的阻值就可以輸出3.3 V或5 V電壓,電路兼容性強。
2.3組件電源控制
電源模塊采用分區/分時控制,每個模塊都有獨立的電源控制電路,由單片機控制,即分區控制;在某一時刻只有一個模塊的電源開啟,其他電源關閉,即分時控制。
系統采用的電源開關電路如圖3所示。當需要開啟電源進行工作時,只需將CTRL置高電平,則Q2會導通,Q1的柵-源之間存在負電壓并且大于其導通閾值,促使Q1導通,電壓由POWER_OUT端輸出;相應工作完成后,將CTRL置低,則所有的MOS管都處于關斷狀態,極大地降低了系統功耗。

圖3 電源控制電路模型
在嵌入式系統中,底層硬件的電路狀態通常由軟件指令驅動,間接地導致了系統能耗的產生。軟件功耗與系統程序架構、指令周期和軟件算法等密切相關。因此在低功耗嵌入式系統的軟件開發過程中要盡量減少軟件代碼量,精簡冗余代碼,對程序結構進行優化。此外,軟件設計還應該遵循標準化、模塊化和層次化原則,一方面可以優化軟件架構,另一方面可以減少代碼重復率,降低系統功耗。
3.1程序架構
嵌入式系統的軟件執行效率與其架構密切相關,水下記錄儀系統的軟件開發采用層次性和標準化的設計方法,減少代碼冗余量,提高程序的重用率,簡化程序的調試過程,縮短項目開發周期,同時增強了軟件可移植性。水下記錄儀的軟件架構如圖4所示,程序設計采用自頂向下的設計方法。

圖4 系統軟件架構
首先分析系統整體結構,然后分析各模塊的功能,最后由軟件具體實現。水下記錄儀的整個軟件架構包括應用層、物理層和驅動層。應用層是整個程序的最頂層,是處理數據和實現通信的關鍵所在;物理層定義了接口函數,可以利用封裝庫實現中斷管理以及對單片機運行模式的控制;驅動層是整個嵌入式程序運行的基礎,是連接硬件與軟件的橋梁。
3.2應用層設計
為了達到系統低功耗和穩定性的要求,應用層采用模塊化和狀態機的設計方法。如圖4所示,應用層包括主程序和中斷處理程序兩部分,其中主程序有3個狀態。系統啟動首先進入工作狀態,在空閑時會進入睡眠狀態,在睡眠狀態下關閉所有外設電源,通過定時器喚醒進入工作狀態,繼續下一個流程;在設備運輸過程中,系統不需要工作,可以通過串口指令使其進入待機狀態,同樣關閉所有的外設電源,可以通過外部復位和串口指令使其進入工作狀態。
3.3物理層設計
在水下記錄儀的軟件設計中物理層主要是中斷接口函數和CF卡讀寫函數,如圖4所示。為了降低系統的功耗,單片機以中斷方式工作,在系統空閑時進入等待模式或停止模式,同時關閉通信接口和讀寫接口;而在查詢方式下,單片機必須不停地訪問I/O 寄存器,這會帶來很多額外的功耗。因此利用中斷方式代替查詢方式可以減少單片機的工作量,降低系統功耗。CF卡讀寫函數可以直接以尋址方式訪問寄存器,提高了軟件執行效率,在一定程度上降低了系統功耗。
3.4驅動層設計
驅動層是嵌入式系統中不可或缺的重要部分,其作用是為上層程序提供硬件設備的操作訪問接口,并且在設備啟動時對硬件進行初始化。嚴格意義上的驅動層包括硬件抽象層、板級支持包和驅動程序。在水下記錄儀的軟件設計中,將驅動層定義為連接軟件和硬件、對硬件進行配置和管理的程序段,包括GPIO端口配置、引腳分配和電源管理等。為了盡可能地降低單片機的功耗,將未使用的單片機引腳配置為浮空輸入,避免了灌電流的產生。驅動層最主要的功能是對組件電源實現控制,在同一時刻只允許一個外設工作,關閉其他外設的電源和接口,以降低系統的功耗。
4.1實驗條件和方法
為了驗證系統低功耗設計的可靠性和可行性,在同一環境條件下設置了兩組對照實驗,并且每組實驗分別進行電壓和電流的測試。對照組中各模塊電源始終開啟,微控制器一直處于工作狀態,而測試組中各模塊電源由微控制器控制,并且在系統空閑時,微控制器會進入睡眠狀態。
(1) 電壓測試
系統硬件集成了電壓檢測電路,可以檢測當前電池的電壓值,并且將電壓值及其時間信息存入CF卡中。在實驗中,每分鐘記錄一次當前時間和電壓值。
(2) 電流測試
利用萬用表測量系統消耗的電流,將萬用表分別串聯在兩組實驗的系統回路中,每次測試一次系統子狀態(工作狀態下的每個狀態)的電流值,并且記錄下來。
4.2數據分析
利用MATLAB將采集到的電壓值進行日平均處理,然后繪出兩套設備一周內的電壓變化曲線,如圖5(a)所示,由曲線可以看出,測試組的電壓變化較為平緩,而對照組的電壓下降很快。
根據萬用表測得的電流數據,描繪出電流變化曲線,如圖5(b)所示。可以明顯看出對照組的電路消耗較大,而加入低功耗設計之后,測試組的電流消耗明顯降低,符合預期設想,達到了低功耗設計的目的。

圖6 電壓和電流變化曲線對比
從數據分析和實際測試效果來看,經過低功耗設計的水下記錄儀可以連續正常工作20天以上,完全達到了系統設計的目標。
低功耗是嵌入式系統設計中不可忽略的一項重要指標,也是衡量和影響一個嵌入式系統性能的重要因素。本文針對水下記錄儀的低功耗問題進行了深入研究,總結出嵌入式系統的低功耗設計應遵循的基本原則,并根據理論分析設計了一套實施方案,實驗結果證明了該方案的可行性和有效性。本文所論述的低功耗設計技術和方法同樣適用于其他基于單片機的嵌入式系統。
[1] 肖星.STM32L152和SI4432的無線網絡系統設計[J].單片機與嵌入式系統應用, 2011(8):48-51.
[2] 劉嘯濱, 郭兵, 沈艷,等.基于ARM處理器的嵌入式軟件能耗統計模型[J] .電子科技大學學報, 2012, 41(5):770-774.
[3] 張煒, 韓進.低功耗嵌入式系統的分析與應用[J] .計算機系統應用, 2009,18(11):109-113.
[4] 趙偉國, 李文軍, 黃震威.基于MSP430的低功耗熱能表的研制[J] .中國計量學院學報, 2008,19(2):142-145.
[5] 沈曉昱,王曉娜,李文軍.基于MSP430的低功耗溫度采集報警系統的實現[J] .工業儀表與自動化裝置,2009(3):31-33.
[6] 謝敏.基于MSP430的低功耗儀表系統設計[J] .微計算機信息,2007,23(22):142-144.
[7] 耿玉茹,黃世勇.基于MSP430的多功能低功耗流量計硬件設計[J].自動化與儀器儀表,2010(6):93-94.
[8] 辛凱,張喜驗,綦聲波,等.基于STM32的海洋環境數據采集系統設計[J].山東科學,2014,27(2):8-12.
[9] 文樺,張亞軍.嵌入式系統低功耗設計研究[J].現代電子技術,2009,32(22):20-22.
[10] 周寬久,遲宗正,西方.嵌入式軟硬件低功耗優化研究綜述[J].計算機應用研究,2010,27(2):423-428.
Software and Hardware Low-power Consumption of Underwater Recorder Based on STM32L
Qi Shengbo,Wang Shengnan,Liu Qun
(College of Engineering,Ocean University of China,Qingdao 266100,China)
In the paper,taking the underwater recorder as an example,the low-power consumption technologies and methods in hardware and software based on STM32L series microcontroller are researched.Based on the system composition and function analysis,the low-power strategy is achieved.In the hardware,the low power and high efficiency components are adopted,and the power supply control method is used.In the software,the hierarchical and standardized architecture is used to reduce the redundancy codes.Finally,the control experiment of voltage and current proves the effectiveness of the low-power consumption design.
underwater recorder;STM32L;low-power consumption design
TP202
A
(責任編輯:楊迪娜2015-10-08)