用於嵌入式裝置偵錯的 UART:低功率裝置的最佳實踐
儘管 USB 已取代大多數週邊裝置的連接方式,但 UART 在嵌入式系統領域仍然活躍,用於為 GPS 模組到 Raspberry Pi 和 Arduino 板等應用進行偵錯。
開發人員在追求突破超低功率設計的極限時,經常會問:UART 是隱形的電池殺手嗎?簡單回答:不,並非如此。任何優良的工具,其效果都取決於如何實作。讓我們仔細分析一下。
注意 TX/RX 漏電流
避免非必要功耗的簡單方法之一是處理 TX 和 RX 通道的任何漏電流。雖然高漏電流並不常見,但最好能儘早進行檢查並解決潛在問題,以避免日後出現非預期的功耗。
以低功率的思維編寫和執行程式碼
在開發過程中,UART 的偵錯能力非常方便,但它就像一把瑞士刀,只有在使用時才會打開,不會隨時打開放在口袋裡。較明智的做法是在程式碼中使用 #define 觸發 UART 進行偵錯,並在元件投入生產時關閉 UART。這是一個簡單的技巧,但可以讓您排除現實中的麻煩。
想像一下:您和團隊成員正聚精會神,努力將功耗降至最低。您正在執行連續電流測量,並取得驚人的進展。在開發過程中,您啟用了 UART 進行偵錯,接受暫時的耗電量。但後來有人不小心將該程式碼合併到主分支中,此時 UART 仍然在啟用狀態,並且空中更新到數百萬台裝置上。突然間,您原本的高效率設計就像電玩機台一樣瘋狂耗電,結果是您得到一群不開心的客戶。
如何修復?設定具有電流消耗基準的連續整合系統。如此一來,可以在此問題成為代價高昂的錯誤前先發現。此系統可視為一個自動化安全網,在程式碼投入生產之前控制這些額外的電流。
確保關閉一切
啟用 UART 可以啟動軟體的各部分,包括各種 MCU 模塊和時脈。MCU 的設計通常預設開啟所有功能,以利於開發。然而,需在 MCU 進入睡眠模式之前停用不必要的組件。如果 UART 時脈保持啟用,可能會阻止 MCU 進入最深度的睡眠狀態,而會有更高的功耗。檢查時脈樹並確保連接到 UART 的所有組件在不需要時確實關閉。
實際 Otii 實驗
在 Seeed Technology 的 Seeed Studio XIAO nRF52840 上執行兩個不同版本的韌體進行實驗。首先,準備一個範例腳本,用於初始化模組、設定快閃記憶體、執行短 LED 閃爍序列,接著讓模組執行最低功率模式。其中一個版本啟用 UART,另一則停用。我們使用 Qoitech 的 Otii Ace Pro 測量電流消耗,分析和比較兩個版本在不同電壓位準下的功耗。
圖 1 中,裝置主動傳送 UART 訊息,圖 2 顯示 MCU 處於睡眠模式。藍線表示啟用 UART,橘線表示停用 UART。此差異凸顯出 UART 對功耗的影響。
圖 1:運作中的 SeeedStudio XIAO nRF52840 裝置,其 UART 通訊功能啟用 (藍) 或停用 (橘)。(圖片來源:Qoitech)
圖 2:XIAO nRF52840 裝置在低功率模式中 (圖表選定部分),其 UART 通訊為啟用 (藍) 或停用 (橘)。(圖片來源:Qoitech)
在主動模式下,平均電流消耗從 460 μA 增加到 1.34 mA (圖 1)。在睡眠模式下,電流消耗從 2.27 μA 降為 2.19 μA (圖 2)。物聯網裝置通常有長睡眠週期,因此雖然這點差異看似微不足道,但卻會對電池續航力造成明顯影響。顯然,韌體在 UART 停用時達到最佳化。
使用 Otii 估算電池續航力
我們使用 Otii 桌面應用程式的電池續航力估算器展示對電池續航力的影響。假設每小時有一個活動週期,此時裝置喚醒並執行閃爍序列,接著睡眠近 3600 秒。
圖 3 中,UART 停用,而在圖 4 中,UART 啟用,顯示出電池續航力的顯著差異取決於是否使用 UART。
圖 3:停用 UART 通訊時的電池續航力估算。(圖片來源:Qoitech)
圖 4:啟用 UART 通訊時的電池續航力估算。(圖片來源:Qoitech)
差別很大!UART 保持啟用狀態時,預估電池續航力從 5.9 年縮短至僅 11.6 天。
請謹記:需確保 MCU 進入睡眠模式之前,必須關閉與 UART 相關的一切。使用 Otii 產品套件 將其整合到連續整合流程中,有助於防止意外啟用 UART,進而避免大量縮短裝置的電池續航力。

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.
Visit TechForum