作者: Qoitech
雖然 USB 已經成為大多數外設的通用接口,但是 UART 仍然在使用,甚至在嵌入式系統中仍起著關鍵作用——用于從 GPS 模塊到 Raspberry Pi 和 Arduino 等板卡的調試。
但是當我們推進到超低功耗設計的極限時,開發人員經常會有疑問:UART 會是無聲的電池殺手嗎?簡而答之:否也,不必如此。像所有好的工具一樣,關鍵在于如何實現。期間緣由讓我們細細道來。
盯緊 TX/RX 漏電電流
防止非必要漏電的簡單之法就是[從 TX 和 RX 信道解決任何漏電問題]。盡管高泄漏并不很常見,但通常最好提前檢查并解決潛在問題,以免后面出現意外漏電。
以低功耗思維編寫并運行代碼
將 UART 看一把鋒利的瑞士軍刀,開發時用起來很就手,但攜帶時并不需要所有時間都將其打開。在代碼中使用 #define,調試時將 UART 打開,設備生產操作時將其關閉,才是明智之舉。這是一個小訣竅,但能讓你在實際工作中免于噩夢纏身。
試想一下:你和你的團隊精力都放在最大限度降低功耗上,正在運行連續的電流檢測,看看有沒有取得進展。開發時,你將 [UART 設置成調試時才打開],接受臨時電源中斷。但是隨后突然有人將該代碼合并到主分支中,此時因為 UART 仍在啟用中,就會將該設置通過空中下載更新到成千上萬的設備中。你曾經高效的設計(如街機)突然之間耗盡電池,此時你就要面對成千上萬怒氣沖沖的客戶了。
怎么辦?給[連續集成系統]設置電流消耗基準。通過這個方式,你可以在發生災難性錯誤前發現這樣的問題。可以將其看成一個自動化的安全網,在代碼到達生產端前時刻檢查有無過大電流。
確保關閉一切
啟用 UART 會激活軟件多個部分,包括各種 MCU 阻斷和時鐘。MCU 通常設計成默認所有功能都是打開的以方便進行開發。但在 MCU 進入休眠模式前禁用非必要組件很重要。如果 UART 時鐘仍被啟用,則可能會阻止 MCU 進入其最深的休眠狀態,造成功耗過高。檢查你的時鐘樹并確保所有鏈接到 UART 的組件均在不需要時被恰當地關閉。
Otii 實驗操作
讓我們比較一下在來自 [Seeed Technology]的 [Seeed Studio XIAO nRF52840] 上運行兩個固件版本。我們準備了一個示例腳本,用于初始化模塊、設置閃存、運行一個簡短的 LED 閃爍序列,然后將該模塊置于最低功率模式。一個版本在運行時啟用 UART,另一個在運行時不啟用 UART。用 [Qoitech]的 [Otii Ace Pro],我們測量了電流消耗以對兩個版本在不同電壓水平下的功耗進行分析和比較。
在圖 1 中,我們看到設備主動發送 UART 消息,而圖 2 則顯示 MCU 處于休眠模式。藍線表示 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 Desktop App] 的 [Battery Life Estimator](電池壽命估算器)。我們假定每個小時有一個活動期間,當設備喚醒時,運行閃爍序列,然后休眠近 3600 秒。
在圖 3 中,UART 處于禁用狀態,而在圖 4 中,UART 處于啟用狀態。從中我們看出是否使用 UART 對電池壽命有著明顯影響。
圖 3:禁用 UART 通信時的電池壽命估算。(圖片來源:Qoitech)
圖 4:啟用 UART 通信時的電池壽命估算。(圖片來源:Qoitech)
差距相當大!當啟用 UART 時,預計電池壽命將從 5.9 年縮短至 11.6 天。
關鍵之處是確保在 MCU 進入休眠模式之前關閉與 UART 相關的所有功能。使用 [Otii 產品套件] 將這一設置集成到持續集成流程中,將有助于防止啟用 UART 后的意外發布,因為這可能會大大縮短設備的電池壽命。
審核編輯 黃宇
-
mcu
+關注
關注
146文章
17316瀏覽量
352301 -
uart
+關注
關注
22文章
1243瀏覽量
101662 -
電池
+關注
關注
84文章
10673瀏覽量
130943
發布評論請先 登錄
相關推薦
評論