新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機系統低功耗設計策略

        單片機系統低功耗設計策略

        作者: 時間:2013-09-30 來源:網絡 收藏

        1.4選擇合適的時鐘方案  
        時鐘的選擇對于系統功耗相當敏感,設計者需要注意兩個方面的問題:  
        第一是系統總線頻率應當盡量低。單片機內部的總電流消耗可分為兩部分——運行電流和漏電流。理想的CMOS開關電路,在保持輸出狀態不變時,是不消耗功率的。例如,典型的CMOS反相器電路,如圖2所示,當輸入端為零時,輸出端為1,P晶體管導通,N晶體管截止,沒有電流流過。而實際上,由于N晶體管存在一定漏電流,且隨集成度提高,管基越薄,漏電流會加大。溫度升高,CMOS翻轉閾電壓會降低,而漏電流則隨環境溫度的增高變大。在單片機運行時,開關電路不斷由“1”變“0”、由“0”變“1”,消耗的功率是由單片機運行引起的,我們稱之為“運行電流”。如圖2所示,在兩只晶體管互相變換導通、截止狀態時,由于兩只管子的開關延遲時間不可能完全一致,在某一瞬間會有兩只管子同時導通的情況,此時電源到地之間會有一個瞬間較大的電流,這是單片機運行電流的主要來源。可以看出,運行電流幾乎是和單片機的時鐘頻率成正比的,因此盡量降低系統時鐘的運行頻率可以有效地降低系統功耗。                                      


        圖2典型的CMOS反相器   
        第二是時鐘方案,也就是是否使用鎖相環、使用外部晶振還是內部晶振等問題。新一代的單片機,如飛思卡爾的系列單片機,片內帶有內部晶振,可以直接作為時鐘源。使用片內晶振的優點是可以省掉片外晶振,降低系統的硬件成本;缺點是片內晶振的精度不高(誤差一般在25%左右,即使校準之后也可能有2%的相對誤差),而且會增加系統的功耗。  
        現代單片機普遍采用鎖相環技術,使單片機的時鐘頻率可由程序控制。鎖相環允許用戶在片外使用頻率較低的晶振,可以很大地減小板級噪聲;而且,由于時鐘頻率可由程序控制,系統時鐘可以在一個很寬的范圍內調整,總線頻率往往能升得很高。但是,使用鎖相環也會帶來額外的功率消耗。  
        單就時鐘方案來講,使用外部晶振且不使用鎖相環是功率消耗最小的一種。
        2 應用軟件方面的考慮  
        之所以使用“應用軟件?
        1;的說法,是為了區分于“系統軟件”或者“實時操作系統”。軟件對于一個低功耗系統的重要性常常被人們忽略。一個重要的原因是,軟件上的缺陷并不像硬件那樣容易發現,同時也沒有一個嚴格的標準來判斷一個軟件的低功耗特性。盡管如此,設計者仍需盡量將應用的低功耗特性反映在軟件中,以避免那些“看不見”的功耗損失。
        2.1 用“中斷”代替“查詢”  
        一個程序使用中斷方式還是查詢方式對于一些簡單的應用并不那么重要,但在其低功耗特性上卻相去甚遠。使用中斷方式,CPU可以什么都不做,甚至可以進入等待模式或停止模式;而查詢方式下,CPU必須不停地訪問I/O寄存器,這會帶來很多額外的功耗。
        2.2 用“宏”代替“子程序”  
        程序員必須清楚,讀RAM會比讀Flash帶來更大的功耗。正是因為如此,低功耗性能突出的ARM在CPU設計上僅允許一次子程序調用。因為CPU進入子程序時,會首先將當前CPU寄存器推入堆棧(RAM),在離開時又將CPU寄存器彈出堆棧,這樣至少帶來兩次對RAM的操作。因此,程序員可以考慮用宏定義來代替子程序調用。對于程序員,調用一個子程序還是一個宏在程序寫法上并沒有什么不同,但宏會在編譯時展開,CPU只是順序執行指令,避免了調用子程序。唯一的問題似乎是代碼量的增加。目前,單片機的片內Flash越來越大,對于一些不在乎程序代碼量大一些的應用,這種做法無疑會降低系統的功耗。
        2.3 盡量減少CPU的運算量  
        減少CPU運算的工作可以從很多方面入手:將一些運算的結果預先算好,放在Flash中,用查表的方法替代實時的計算,減少CPU的運算工作量,可以有效地降低CPU的功耗(很多單片機都有快速有效的查表指令和尋址方式,用以優化查表算法);不可避免的實時計算,算到精度夠了就結束,避免“過度”的計算;盡量使用短的數據類型,例如,盡量使用字符型的8位數據替代16位的整型數據,盡量使用分數運算而避免浮點數運算等。
        2.4 讓I/O模塊間歇運行  
        不用的I/O模塊或間歇使用的I/O模塊要及時關掉,以節省電能。RS232的驅動需要相當的功率,可以用單片機的一個I/O引腳來控制,在不需要通信時,將驅動關掉。不用的I/O引腳要設置成輸出或設置成輸入,用上拉電阻拉高。因為如果引腳沒有初始化,可能會增大單片機的漏電流。特別要注意有些簡單封裝的單片機沒有把個別I/O引腳引出來,對這些看不見的I/O引腳也不應忘記初始化。
        3 結論
        一個成功的應該是硬件設計和軟件設計的結合。從硬件設計開始,就應該充分意識到一個低功耗應用的特性,選擇一款合適的單片機,通過對其特性的了解,設計系統方案;在軟件設計上,要考慮到低功耗編程的特殊性,并盡量使用單片機的低功耗模式。  
        限于篇幅,僅僅討論了中的一些常見問題,更多的問題只能靠設計者去實際分析和解決了。   

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 崇阳县| 黎城县| 石阡县| 虞城县| 微博| 济源市| 眉山市| 牟定县| 上思县| 镇远县| 沂南县| 蓬莱市| 东乌珠穆沁旗| 称多县| 元谋县| 华容县| 新民市| 富蕴县| 孟津县| 宜城市| 扎赉特旗| 兴义市| 龙南县| 乌兰县| 曲沃县| 桃源县| 贡觉县| 威宁| 新巴尔虎左旗| 登封市| 河池市| 石泉县| 朝阳县| 嵊泗县| 武宁县| 新昌县| 绥棱县| 肇东市| 满洲里市| 五家渠市| 准格尔旗|