使用stm32G431做電機驅動,平時在實驗室里測的很好,拿到現場以后也正常運行,性能指標都達標,然后接待客戶就給展示了,上電3秒就炸了,炸的時候電機動了一下
燒之前輸出幅度逐漸增加,最后到了0.15。60V供電電機不轉的情況下,輸出這么高肯定過流燒毀。
查看運行數據,上總電壓之前,MCU的AD傳感不對,AD值不動(MCU先上電,后上動力電)
單獨接核心板,復現了這個問題,是冷啟動的問題:
AD模塊要求上電后隔20us再初始化,否則寄存器的值可以寫成功,但AD模塊不工作

在實驗過程中用開發板詳細測試了這個延遲,有和沒有的效果,但移植過程中延遲函數失效了
所以單片機冷啟動就會出問題,而上電后經過重啟,或者進入過調試狀態(相當於重啟),就相當於在有電的情況下重新初始化,AD模塊可以工作
而日常調試過程中完全是插調試器,從第一次上電下程序起,沒有斷過電,所以一直是好用的
當模擬正式運行時,拔掉調試器,徹底下電再上電,ad就不工作了