關(guān)鍵詞:
低功耗,STM32L4,異常
1.引言
STM32 L4 系列作為一款高性能的低功耗芯片,具有強(qiáng)大的運(yùn)算處理性能和極低的運(yùn)行和待機(jī)功耗,廣泛應(yīng)用于各種需要節(jié)能設(shè)備上。
2. 問題描述
客戶使用 STM32L431 作為主控項目開發(fā)電子煙產(chǎn)品,使用了 ST 的 HAL 軟件庫開發(fā)。各種驅(qū)動功能正常??臻e時進(jìn)入待機(jī)狀態(tài)。在研發(fā)階段測試時一切正常,但是批量生產(chǎn)時發(fā)現(xiàn)產(chǎn)品無法進(jìn)入低功耗或者說表現(xiàn)為耗電過大。
3. 問題分析與定位
首先查找軟件設(shè)計本身,包括各種外設(shè)的配置以及進(jìn)入低功耗前的各種處理,并未發(fā)現(xiàn)任何異常,隨即簡化軟件在評估板上燒錄代碼,然后連接電流表,功耗一切正常。經(jīng)過多次驗證,每次都能進(jìn)入低功耗。
這樣看起來就非常奇怪了,客戶的硬件也沒什么特殊地方。后來再次檢查客戶的整個流程發(fā)現(xiàn),客戶的燒錄和測試是一直帶電的,因為是電子煙產(chǎn)品,上面的電池是一直連接的。設(shè)計調(diào)查實驗發(fā)現(xiàn),客戶的產(chǎn)品只要經(jīng)過一次斷電過程,再次上電就全部正常。而我們平時因測試低功耗電流需求,通常都是去掉燒錄器的連接,避免額外電流消耗,所以都經(jīng)過了斷電過程,沒有發(fā)現(xiàn)任何異常。而這種帶有電池的產(chǎn)品,才會有機(jī)會發(fā)現(xiàn)?;谏a(chǎn)效率和產(chǎn)品終身帶電池的特殊性,進(jìn)行斷電工序很難,不利于大規(guī)模生產(chǎn)。
那么問題來了,究竟是什么原因引起燒錄完不能正常進(jìn)入低功耗模式呢?帶著問題進(jìn)行查找原因。外設(shè)的查找比較容易,都是標(biāo)準(zhǔn)的并且簡化掉了很多外設(shè),那么會不會是傳統(tǒng)外設(shè)之外的因素呢?
按照這個方向查找,想到了調(diào)試模塊。

進(jìn)一步查看發(fā)現(xiàn)燒錄器將 DBG_STOP 位置 1。如上圖。

如手冊所描述,如果該位被置位的話,那么在低功耗下時鐘并沒有關(guān)閉,并且可以繼續(xù)執(zhí)行代碼,所以芯片不能進(jìn)入低功耗模式。于是對應(yīng)的解決辦法也出來了,進(jìn)入低功耗前增加語句清除代碼即可。
4.?問題解決
找到了線索后,針對問題解決起來就不復(fù)雜了,簡單說,打一個補(bǔ)丁。

從調(diào)試界面上看,增加一句清除該位的函數(shù)即可禁止在低功耗模式下的調(diào)試功能,進(jìn)而解決該問題。實際測量不需要斷電也可正常進(jìn)入期望的低功耗模式。
小結(jié)
由于低功耗調(diào)試位被置 1,引起超低功耗芯片 STM32L431 在不斷電情況下不能正常進(jìn)入低功耗模式,引起電流偏大。由于該產(chǎn)品特殊,從生產(chǎn)一直到用戶手中,產(chǎn)品始終與電池連接(固定),才有可能導(dǎo)致此類問題發(fā)生,需要早研發(fā)階段軟件增加補(bǔ)丁的方式解決,使產(chǎn)品生產(chǎn)不用增加工序。
另外,筆者使用的 STM32 ST-LINK Utility 工具會引起該問題,而另一款常用的燒錄軟件 STM32CubeProgrammer v2.7.0 并未發(fā)現(xiàn)此問題,因此與用戶采用的燒錄軟件有直接關(guān)系。市面上支持 STM32 低功耗產(chǎn)品燒錄軟件很多,如遇到此類問題,可以參考以上方式查找原因是否一致
? ? ? ? ? ? ? ??
? THE END
▽點擊“閱讀原文”,可下載原文檔