2. 如何測量MSP430的功耗?
就如何測量MSP430功耗,我來分享一下我個人的經(jīng)驗。
一、未使用的GPIO的處理
為了使MSP430最大限度的達到低功耗,對于MSP430未使用的GPIO而言,應該將其設置為輸出;或者是設置為輸入,但是將管腳的電平固定,可以通過外部電路將管腳連接至Vcc或者GND,也可使能內(nèi)部上下拉電阻,將管腳電平固定。
對于MSP430而言,大部分情況下,測量到的功耗與datasheet不符均是由對MSP430未使用的GPIO處理不當引起的。默認情況下,MSP430的GPIO是作為輸入的,其等效電路如下圖所示,為推挽模式:
當GPIO管腳配置為輸入管腳且外部電平處于浮動狀態(tài)時(0
如果要與別家的MCU比較功耗時,切記一定要在相同的前提條件下比較才有意義。而MSP430的BOR功能在7種LPM mode下均是打開的,且?guī)缀跏橇愎牡摹?/p>
為了更準確的測量整個用戶應用的功耗并且使得最大限度的降低整個應用的功耗,建議先對MSP430處于LPM4/LPM3模式下時,板子的整體功耗進行測量。在LPM4,LPM3模式下,將MSP430功耗與數(shù)據(jù)手冊調(diào)至一致后,在此基礎上,再進行其他情況下功耗的測量。
1.低功耗測試程序的編寫
a. LPM4 低功耗測試程序編寫
LPM4低功耗測試程序的編寫,建議參考Wolverine MSP430FR5969 LPM4 code example,如下圖所示,注意事項主要有:當作為輸入時,將GPIO狀態(tài)固定, 不讓其受外部浮動電平的影響。示例中,GPIO設置為輸入,但是使能其內(nèi)部下拉電阻將GPIO的狀態(tài)固定了。當然也可以直接將GPIO配置為輸出。另外,注意將不必要的模塊均關掉,以避免不必要的功耗增加。例如:MSP430FR5739, 在LPM4下,記得將參考源REF關閉。
REFCTL0 |= REFTCOFF;
REFCTL0 &= ~REFON;
b. LPM3 低功耗測試程序編寫
首先需要明白,對于LPM3 mode下功耗的測試,需要選定ACLK的時鐘源, 是內(nèi)部VLO還是LFXT1。因為在LPM3下,MSP430的系統(tǒng)時鐘只有ACLK可用,MCLK和SMCLK均不可用。而當ACLK的時鐘源選擇不同時,LPM3 mode下,MSP430的功耗是不同的。以MSP430G2553為例,其數(shù)據(jù)手冊中寫明,LPM3下,ACLK=LFXT1時,功耗約為0.7uA;而LPM3下,ACLK=VLO時,功耗約為0.5uA。
另外,在測量時,為確保程序成功跑到LPM3模式下。最好能夠在進入LPM3之前有個指示,譬如讓某個LED燈亮0.5s再滅掉。一定要記得進入LPM3時,滅掉LED, 因為一個LED燈亮,本身就很耗電的,有時會高達2mA。而為什么要有指示呢?是因為當采用LFXT1作為ACLK時鐘源時,在程序中需要check LFXT1是否成功起振,萬一用戶忘記焊LFXT1,或者是低頻晶體沒有起振,那么就會導致程序一直處于check flag,而不會進入LPM3。在這些情況下,如果沒有指示,當對功耗測量時,就會發(fā)現(xiàn)測量結(jié)果與數(shù)據(jù)手冊上LPM3下的功耗不符。
另外,切記判斷LFXT1是否起振,千萬不要直接用示波器測量低頻晶體的管腳,因為LFXT1本身是非常脆弱的,一旦外部有波動,就會停振。建議將LFXT1作為ACLK時鐘源,然后將ACLK從對應管交輸出后,用示波器進行觀察。
2. MSP430低功耗的測量硬件注意事項
為保證功耗測試的準確性,請盡量少接外圍電路,除非是想測量特定外設的功耗。如果使用MSP430 value line的launchpad進行測量時,記得將其EMULATION部分的5個跳線去掉,直接從板下端的Vcc, GND進行供電和功耗測量。因為如果不去掉的話,EMULATION部分的電路也會耗電的。
如果硬件電路時用戶自己設計的,測量LPM3,LPM4下面的功耗時,最好不要焊接MSP430相關的其他電路。如果已經(jīng)焊接了的話,那么MSP430 GPIO的狀態(tài)配置一定要根據(jù)外部硬件電路的設計來配置。如果功耗大于MSP430數(shù)據(jù)手冊上處于LPMx的功耗的話,可以嘗試更改GPIO的配置,來時系統(tǒng)功耗達到最低。
無論何種情況下,MSP430的功耗測量,一定要注意前提條件。對想要測試的MSP430的工作狀態(tài)進行規(guī)劃,確定此時MSP430工作的供電電壓,溫度,主頻,可用資源等,然后再測量。使用Power Supply 輸出固定電壓給測試板,例如3V。
1. 固定工作模式(固定功耗的測量)
如果用戶程序的編寫,MSP430一直處于某種固定的模式下的話,即其功耗是固定的話,可以將萬用表調(diào)至測試電流檔直接串聯(lián)進入供電線路,即可直接觀察到此時電流值。
我曾經(jīng)用過測量精度為6位半的儀器:Agilent 34401A Digit Multimeter 和 RIGOL DM3061 Digital Multimeter,均可以精確的測量到MSP430FR5969處于LPM3下0.7uA的電流。
2. MSP430在active和LPMx mode下切換時功耗以及上電初始化功耗的測量
雖然高級萬用表,有對電流進行累計測量求平均的功能,但是其測量結(jié)果還是不夠精確,并且一般而言,用戶的程序在開始一般都有初始化過程,有時初始化過程還分很多段,當用戶想要測量初始化過程不同時間段對應的功耗時,將萬用表串聯(lián)入供電線路就無法完成這個功能了。此時,建議用戶使用示波器測量串聯(lián)入供電線路精密電阻兩端的電壓的方法,來對系統(tǒng)的功耗有個更直觀,精確且有說服力的測量。具體的方法是,用一個約為10~20歐的精密電阻(誤差為1%甚至更低)串聯(lián)入供電線路中,然后用示波器直接觀察此電阻兩端電壓的變化,測出各個階段,各個工作模式下電阻兩端的電壓值,而后處于電阻值即可得到對應的工作電流。
上面僅是個人經(jīng)驗分享,若大家有補充和更正,歡迎發(fā)表您的意見。O(∩_∩)O~
三、測量MSP430處于LPM4/LPM3 mode下的功耗
四.MSP430功耗的測量