1.引言
STM32 L4 系列作為一款高性能的低功耗芯片,具有強大的運算處理性能和極低的運行和待機功耗,廣泛應用于各種需要節能設備上。
2. 問題描述
客戶使用 STM32L431 作為主控項目開發電子煙產品,使用了 ST 的 HAL 軟件庫開發。各種驅動功能正常。空閑時進入待機狀態。在研發階段測試時一切正常,但是批量生產時發現產品無法進入低功耗或者說表現為耗電過大。
3. 問題分析與定位
首先查找軟件設計本身,包括各種外設的配置以及進入低功耗前的各種處理,并未發現任何異常,隨即簡化軟件在評估板上燒錄代碼,然后連接電流表,功耗一切正常。經過多次驗證,每次都能進入低功耗。
這樣看起來就非常奇怪了,客戶的硬件也沒什么特殊地方。后來再次檢查客戶的整個流程發現,客戶的燒錄和測試是一直帶電的,因為是電子煙產品,上面的電池是一直連接的。設計調查實驗發現,客戶的產品只要經過一次斷電過程,再次上電就全部正常。而我們平時因測試低功耗電流需求,通常都是去掉燒錄器的連接,避免額外電流消耗,所以都經過了斷電過程,沒有發現任何異常。而這種帶有電池的產品,才會有機會發現。基于生產效率和產品終身帶電池的特殊性,進行斷電工序很難,不利于大規模生產。
那么問題來了,究竟是什么原因引起燒錄完不能正常進入低功耗模式呢?帶著問題進行查找原因。外設的查找比較容易,都是標準的并且簡化掉了很多外設,那么會不會是傳統外設之外的因素呢?
按照這個方向查找,想到了調試模塊。
進一步查看發現燒錄器將 DBG_STOP 位置 1。如上圖。
如手冊所描述,如果該位被置位的話,那么在低功耗下時鐘并沒有關閉,并且可以繼續執行代碼,所以芯片不能進入低功耗模式。于是對應的解決辦法也出來了,進入低功耗前增加語句清除代碼即可。
4.問題解決
找到了線索后,針對問題解決起來就不復雜了,簡單說,打一個補丁。
從調試界面上看,增加一句清除該位的函數即可禁止在低功耗模式下的調試功能,進而解決該問題。實際測量不需要斷電也可正常進入期望的低功耗模式。
小結
由于低功耗調試位被置 1,引起超低功耗芯片 STM32L431 在不斷電情況下不能正常進入低功耗模式,引起電流偏大。由于該產品特殊,從生產一直到用戶手中,產品始終與電池連接(固定),才有可能導致此類問題發生,需要早研發階段軟件增加補丁的方式解決,使產品生產不用增加工序。
另外,筆者使用的 STM32 ST-LINK Utility 工具會引起該問題,而另一款常用的燒錄軟件 STM32CubeProgrammer v2.7.0 并未發現此問題,因此與用戶采用的燒錄軟件有直接關系。市面上支持 STM32 低功耗產品燒錄軟件很多,如遇到此類問題,可以參考以上方式查找原因是否一致。
審核編輯 :李倩
-
芯片
+關注
關注
456文章
51058瀏覽量
425666 -
STM32
+關注
關注
2270文章
10918瀏覽量
356826 -
低功耗
+關注
關注
10文章
2414瀏覽量
103807
原文標題:STM32L4 單片機進入低功耗異常的一種情況
文章出處:【微信號:mcugeek,微信公眾號:MCU開發加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論