嵌入式應用中的能耗調試

圖1 由于可以對代碼更改的作用進行實時監控,能耗調試得以簡化
下面的這個例子將演示如何使用能耗概要分析并結合EFM32 MCU的特性以節省能耗。在圖2中,使用了LEUART模塊。它支持波特率高達9600的UART通信,同時將能耗保持在最小值。

圖2 運行模式下的LEUART RX輪詢(a),睡眠模式下觸發的LEUART RX中斷(b)
從接收緩沖區獲取數據的一種常見方式是對其進行輪詢,直到獲得有效數據,然后讀取緩沖區。要這樣做,MCU必須處于運行模式,這會造成相對較高的電流使用量。
這一循環的剖析曲線如圖2a所示,是3.33mA的恒定電流消耗量。通過單擊圖表,就能高亮顯示造成電源消耗的函數。
void pollLEUARTRx(void)
{while ( !( LEUART0 -> STATUS LEUART_STATUS_RXDATAV ) );}
高亮顯示的代碼行是輪詢循環,它會檢查緩沖區是否接收到任何數據。剖析程序將顯示每個函數以及各個函數對總能耗的貢獻。在這里,代碼中唯一的函數是pollLEUARTRx(),所有的能耗都是由它產生的(見圖3)。













評論