關鍵字: Option Bytes, IDWG
1. 問題背景
客戶反饋使用 NUCLEO_STM32U575 進行評估時,發現板子燒錄完程序后,能看到指示程序運行的 LED 燈正常點亮,但是程序跑不起來。仔細觀察 LED 指示燈,并不是常亮而是出現周期性的閃爍。擦除固件后,再次測量,發現 MCU 在空片狀態下,還是周期性的復位。客戶將板子寄到 ST 分析。
2. 問題分析
測試使用的工具版本:
STM32CubeMXVersion : 6.12.0
STM32CubeProgrammer Version :2.18.0
2.1. 硬件原理圖及接線檢查
GPIO 部分的原理圖如下:
圖1. NUCLEO-U575 原理圖
2.2. 燒錄固件測試
通過 STM32cubeMX 生成基本的代碼框架,添加測試代碼如下:
重新燒錄控制 PC7 輸出高電平的固件后,測量 PC7 波形如下:
圖2. PC7 波形(紅色指示 VDD,綠色指示 PC7 波形)
PC7 應該恒為高電平,不應該出現周期性的脈沖波形。
隨著分析的推進,GPIO 似乎拉到 3V3 后,會周期性的拉低。監控 NRST 引腳后發現 MCU 出現周期性的復位。測試波形如下:
圖3. 紅色指示 VDD,綠色指示 PC7,藍色指示 NRST 管腳
將內部燒錄的固件全片擦除后,測試波形如下:
圖4. 紅色指示 VDD,綠色指示 PC7,藍色指示 NRST 管腳
MCU 在沒有任何固件的情況下出現周期性的復位,和客戶描述的現象一致。
2.3. 分析異常
事出反常必有妖,既然是復位導致的問題,我們下一步需要找出復位源。
對于 STM32,通常可以通過查看 RCC_CSR 寄存器來判斷復位源。使用STM32CubeProgrammer 在 hot plug 的狀態下連接板子。讀取 RCC_CSR 的寄存器狀態。如下圖:
圖5. RCC_CSR 寄存器
比較奇怪的是 IWDGRSTF 這個位置位了,也就是說發生了看門狗復位。
圖6. RCC_CSR @ IWDGRSTF
進一步分析發現,MCU Option bytes 中配置了 IWDG 硬件模式。使用
STM32CubeProgrammer 讀取 option bytes 的狀態,此時的 IWDG_SW 并未置 1,也就
是說使能了 IWDG,由于沒有喂狗操作,進而引發 IWDG 復位。
圖7. U5 的 IWDG 的功能特點
2.4. 彩蛋
新版本的 STM32CubeProgrammer 增加了一項比較有用的功能。那就是可以一鍵將
Option bytes 恢復為出廠設置,具體操作如下圖:
圖8. 一鍵恢復 OB 功能
3. 小結
芯片無固件周期性復位問題由 Option bytes 中 IWDG 被意外使能引起。
?