基于C8051F系列單片機的低功耗設計
引言
在控制終端系統設計中,當系統要求整體功耗偏低時,c8051系列單片機是一個最佳的選擇,它們擁有靈活的時鐘硬件,使系統能夠方便地在高效運作模式與低功耗模式間進行轉換,智能的電源管理模式能夠在正常工作及待機狀態自由切換,從而降低整個系統的能量損耗,當工作頻率低于10khz時,時鐘丟失檢測器(mcd)能夠引發系統產生復位,確保系統工作的安全可靠。
1 c8051f各部分組件的功耗
當一個系統對功耗要求嚴格時,可以在硬件電路建立前首先粗略計算一下整個系統所需的功耗,由于c8051f系列單片機為數模混合soc系統,能夠實現整個設計的大部分功能,因此整個設計系統的功耗將主要集中在c8015f系列單片機的能量消耗上。
整個單片機系統的功耗應該由4部分組成,振蕩器功耗、數字設備功耗、模擬外設功耗及i/o端口功耗,振蕩器功耗包括內部振蕩器的功耗以及外部振蕩器功耗,數字設備能量消耗主要由cpu的工作模式,工作電壓及系統時鐘頻率決定,溫度與數字外圍設備對數字設備的功耗影響很小,模擬外圍設備功耗主要包含adc,電壓基準vref、溫度傳感器、偏壓發生器及內部振蕩器,比較器也有少量的能量功耗。
1.1 振蕩器功耗分析
外部振蕩器具有很好的可配置性,為系統設計者提供了多種選擇。時基信號可以從外部cmos電平時鐘源、晶振或陶瓷諧振器、rc組合電路或外部電容獲得,每一種方法都有各自的優勢,由于振蕩器可以靈巧地在各種方式中轉換,因此可以通過改變振蕩器來降低功耗,對外部振蕩器來說,外部cmos時鐘,電容和rc網絡都能夠提供較低的振蕩頻率。
(1)外部cmos時鐘
當工作于外部振蕩器cmos時鐘模式時,外部振蕩器驅動被關閉,電路功耗電流微小可以近似忽略,xtal2輸出的時基信號可以用作cpu、計時器、pca或其他外圍設備的時鐘源,注意,即使在某一端口應用了高頻信號,功耗仍只有少量的增加。
(2)外部晶振
外部晶振提供了最精確的時間基準,但隨之而來的功耗在同一頻率下也更高,外部晶振依賴于晶振頻率和振蕩器驅動電路(xfcn)。
(3)外部電容c模式
外部電容模式通過將一個電容連接到xtal2為系統提供低功耗時鐘,這是精度最差的一種時基方式,但同時也是最靈活的一種方式,只用一個電容元件就可以提供8種不同的工作頻率,最高頻率幾乎可達最低頻率的3000倍,可以通過改變在oscxcn寄存器中的xfcn位改變其振蕩的頻率,并直接影響其輸出的電流,外部電容方式下的時基精度主要由電容的誤差和流過xtal2的內部電流源的精度決定。
(4)外部振蕩rc模式
rc模式與電容模式十分相似,區別在于外部電容方式下電容的充電電流由接到xtal2的內部可編程電流源提供,并且在rc模式下充放電電路除了包含電容外還要通過一個外部電阻器。rc模式振蕩電路的平均功耗由通過電阻器的平均電流所決定,電阻器上的壓降成指數倍大小,其波形可以簡化為三角波來估計平均值。
通常,設計者可以通過合理地選擇時鐘源達到降低功耗的目的,內部振蕩器消耗數字電源電流的典型值為200μa,用于驅動外部振蕩器的電流是變化的,對于一個外部振蕩源(如晶振),驅動電流(由模擬電源提供)用軟件通過配置外部振蕩器控制寄存器oscxcn的xfcn位來設置,在驅動電流較大時用戶可以使用內部振蕩器以降低功耗。
1.2 數字設備的功耗分析
數字設備的能量消耗主要是由cpu電流的大小來衡量的,cpu的電源模式是決定cpu電流大小、工作電壓及系統時鐘頻率的關鍵因素,通常,溫度和數字外圍設備對數字設備的功耗只有很小的影響。
(1)cpu電源管理模式
cpu有3種操作模式:正常狀態,空閑狀態與停止狀態。通常,空閑狀態的平均電流值受控于內部振蕩器,正常模式時的電流值減去空閑模式時的電流值即為cpu正常運行的工作電流值。當寫1到idle位時,cpu結束指令周期進入低功耗模式,直到被中斷或復位喚醒。在空閑模式下,所有的模擬與數字外圍設備、存儲器與內部寄存器都保持原來的值不變,被喚醒后,cpu開始從設置空閑方式選擇位指令的下一條指令開始執行,當寫1到stop位時,cpu進入停機模式,設置停機模式后,當前指令被執行完畢,內部振蕩器及所有的數字外圍設備全部停止工作,模擬外設(如比較器與外部振蕩器)保留其當前的狀態。在停止狀態,mcu消耗最少的電流。
(2)cpu工作電壓、頻率及溫度對功耗的影響
工作電壓:cpu的工作電流會隨著供電電壓的升高而增加,這種關系存在于任意一種工作頻率下,尤其在高頻運行時表現得更為明顯,理論上提供電壓最小可達到2.7v,但由于電壓調整本身有±10%的誤差率,因此系統通常供電電壓不會低于3v。
溫度:溫度對系統的功耗無影響。
工作頻率:cpu工作頻率對系統功耗有主要影響,在cmos數字邏輯器件中,功耗與系統時鐘sysclk頻率成正比:
功耗=cv2f
式中:c是cmos的負載電容;v是電源電壓,f是sysclk的頻率。
因此,為了降低功耗,設計者必須知道給定系統所需的最高sysclk頻率和精度,某些設計可能需要其系統時鐘頻率在全部工作時間內保持不變,在這種情況下,設計者將選擇滿足要求的最低頻率,并采用消耗最低功耗的振蕩器配置。
1.3 數字外圍設備與i/o接口的功耗分析
數字外圍設備(計數器、uart、pca、spi)的損耗占系統總功耗的比例很小,舉個例子,當c8051f單片機工作在3.06mhz(內部振蕩器8分頻),3v電壓時,沒有一個數字外圍設備端口的工作電流超過700μa,而在啟動計數器作為uart0數據傳輸時鐘后,系統的工作電流會增加18μa,這里,計數器與uart的功率損耗主要由其時鐘頻率及工作電壓來決定,利用交叉開關配置通過i/o口為推挽模式,也能夠影響功耗的大小,在上述例子中,如果利用交叉開關將uart0的tx端分配到p0.4口,則配置端口為推挽模式將令系統的工作電流再增加82μa,輸出引腳的功耗由連接在該引腳的外部電流頻率決定。
1.4 模擬外圍設備的功耗
模擬外圍設備功耗是adc、溫度傳感器、內部偏置電壓產生器及內部振蕩器的功耗和,通常,只要adc、內部振蕩器或溫度傳感器被激活,內部偏置電壓產生器就會自動被使能。adc在轉換期間的工作電流比adc沒有轉換時的工作電流大30%-50%,sar轉換時鐘頻率與采樣頻率也影響了功耗的大小,由于增加sar轉換時鐘頻率或降低采樣率會縮短每次a/d轉換的時間,使系統在轉換間隙有更多的時間處于空閑狀態,因此會大大降低系統功耗。
2 降低功耗的幾點考慮
要降低系統的平均功耗,需要從兩個方面考慮:首先是適當調整在所有時間一直影響系統工作的參數,通常工作電壓是重要考慮的參數,工作電壓決定了系統是否能夠處于正常運作狀態,它可以由電壓調整器或一個電池來提供,對于一個節能系統,工作電壓應該被最小化,以節約能量。第二點就是構建合理的固件結構以降低功耗,要為系統設計兩個工作模式:一個為高效的運作模式;另一個則是以降低功耗為目的的睡眠模式,兩個模式的設計標準不同,但應盡量讓系統在大部分時間內處于睡眠模式,以降低系統的總功耗,下面詳細討論這兩個方面的設計。
2.1 降低工作電壓、減少工作電流
工作電壓對系統的總功耗起著舉足輕重的作用,對于節能系統、應該盡量在保證系統安全可靠的前提下采用最低的工作電壓。通常電壓調制器會有10%的誤差率,因此在設計工作電壓時地最低的工作電壓應該為3v,此時電壓調制器的輸出電壓在2.7v與3.3v之間,也可以選擇用電池。在這里推薦使用鋰電池,鋰錳二氧化氮電池能夠無須任何調節地輸出穩定的2.85v電壓,并且該電池能夠直接連接到設備的電源引腳,無須擔心電池耗盡時會對系統工作有不良的影響,因此c8051f系列單片機中,片上電源監控器能夠確保在電池耗盡后系統自動復位。
由于工作電壓通常是恒定的,因此經常通過減小平均電流來降低系統的總功耗,平均工作電流是系統在單位時間內消耗的電荷量,對一個系統來說,其總的運行時間應該被分為兩個部分——高效工作期與低功耗休眠期,如圖1所示,高效工作期的工作電流偏大,而休眠期的電流非常小,平均工作電流是系統在這兩部分時間的總電荷量與時間相除所得的平均值,因此如果想減小平均電流值,唯有通過兩種方法解決——縮短高效工作期的時間或減小高效工作期的峰值電流,設計者應該盡量從這兩方面著手設計系統,以達到降低總功耗的目的。

2.2 設計一個低功耗的休眠模式
可以通過設計低功耗休眠模式,令系統在非工作期一直處于低消耗狀態,從而達到減小整個系統工作電流的目的。休眠模式可以通過將電源管理模式設定為空閑或停止狀態來實現,通常會設定空閑模式,因為該模式更容易被恢復,需要注意的是,在休眠模式下應該關閉所有不需要的外圍設備,并配置休眠模式的時鐘為外部振蕩器,因為外部振蕩器能夠禁止內部振蕩器的振蕩,并能以非常低的時鐘基準進行振蕩,這里有兩個可選的振蕩器:36.728khz晶振與單電容模式外部振蕩器。
外部電容模式振蕩器消耗的功耗比晶振低,但沒有晶振精確。其優勢在于能夠使鐘控外圍設備(如定時器)的頻率低度低于10khz,同時由于其組成只包含1個電容,相比于晶振的2個裝載電容及1個電阻器結構,能夠節省pcb板的空間,若在設計中使用了高頻晶振,則可將裝載電容連接到xtal2引腳,作為外部振蕩器使用,并可在c模式下為休眠模式提供一個較低頻率的時鐘。
2.3 設計一個高效運作模式
高效運作模式的設計應該以盡可能縮短完成作業所需時間為標準,使得系統能夠盡快地恢復到休眠模式,模式的設計包括調整工作電流的峰值以及時鐘頻率,以減小高效工作期間的總電荷量,通常在高效工作模式下使用內部振蕩器,更有益于系統總功耗的降低。
下面以adc采樣為例,比較、分析兩種設計中系統功耗的消耗率情況。
片上溫度傳感器以10hz速率采樣,系統的外部晶振連接到xtal與xtal2之間,定時器2每100ms溢出產生一個中斷,將系統從空閑模式喚醒。當系統被激活后,系統捕捉adc采樣數據,然后重新返回空閑模式,直到下一個中斷發生。
由于該系統是電池供電,因此系統應盡量減少每次a/d采樣所消耗的電荷,由于電荷量是一段時間內電流的總量,因此可以通過縮短采樣時間或減小采樣時的峰值電流來節約能量。也就是說,在捕捉adc采樣數據時,系統可以選擇轉換到3mhz的內部振蕩器,在短時間內使用大的電流,或是用外部32khz的晶振作為系統振蕩器,使單片機在長時間內使用較小的電流值。
根據以上分析,進行了兩種設計,一種設計是在采樣時一直采用外部32.768khz晶振作為系統時針基準,另一種設計是在采樣時將振蕩器轉換到內部振蕩器,以縮短a/d轉換的時間,兩個系統在不采樣時都處于同樣的空閑模式。
第1個系統從空閑模式被喚醒后,系統直接啟動了adc設備開始采樣,系統沒有轉換到內部振蕩器,而是仍采用原來的32khz晶振作為系統的時鐘基準,a/d轉換結束后,系統讀取采樣值,關閉adc并重新進入空閑模式,為了捕捉采樣數據,系統在峰值工作電流0.65ma上持續了1.5ms,第2個系統從空閑模式被喚醒時,系統啟動內部振蕩器與adc,轉換系統時鐘基準為內部振蕩器8分頻模式,并開始adc轉換,轉換完成后,讀adc數據,而后停止adc及內部振蕩器并令cpu回到空閑模式,為了捕捉adc采樣數據,系統在峰值工作電流2.2ma上持續了400μs,利用公式:

計算可得,第1種設計系統的平均電流為15μa;而第2種設計系統的平均工作電流為14μa,在3v鋰電池供電的情況下,第1種設計電池的壽命為40000h;而第2種設計電池的壽命為42000h。
從這個離子可以看出,在系統高效工作時提高系統的時鐘頻率能夠減小系統的平均工作電流,從而降低系統的總功耗。
評論