嵌入式應(yīng)用中的能耗調(diào)試
圖1 由于可以對代碼更改的作用進(jìn)行實時監(jiān)控,能耗調(diào)試得以簡化
下面的這個例子將演示如何使用能耗概要分析并結(jié)合EFM32 MCU的特性以節(jié)省能耗。在圖2中,使用了LEUART模塊。它支持波特率高達(dá)9600的UART通信,同時將能耗保持在最小值。
圖2 運(yùn)行模式下的LEUART RX輪詢(a),睡眠模式下觸發(fā)的LEUART RX中斷(b)
從接收緩沖區(qū)獲取數(shù)據(jù)的一種常見方式是對其進(jìn)行輪詢,直到獲得有效數(shù)據(jù),然后讀取緩沖區(qū)。要這樣做,MCU必須處于運(yùn)行模式,這會造成相對較高的電流使用量。
這一循環(huán)的剖析曲線如圖2a所示,是3.33mA的恒定電流消耗量。通過單擊圖表,就能高亮顯示造成電源消耗的函數(shù)。
void pollLEUARTRx(void)
{while ( !( LEUART0 -> STATUS LEUART_STATUS_RXDATAV ) );}
高亮顯示的代碼行是輪詢循環(huán),它會檢查緩沖區(qū)是否接收到任何數(shù)據(jù)。剖析程序?qū)@示每個函數(shù)以及各個函數(shù)對總能耗的貢獻(xiàn)。在這里,代碼中唯一的函數(shù)是pollLEUARTRx(),所有的能耗都是由它產(chǎn)生的(見圖3)。
評論