問題描述
客戶在使用 STM32L433CCY6 開發(fā)過程中,出現(xiàn)軟件復位后 SRAM2 里的值被擦除問題。
問題確認
客戶用同一版軟件在兩塊板子上的表現(xiàn)還不一樣,一塊軟件復位后 SRAM2 的值不會被擦除,另一塊則會被擦除,并且確認被擦除的板子沒有發(fā)生掉電復位。出現(xiàn)問題的板子只是在硬件上拿掉了一些 ESD 保護器件。
問題分析
根據(jù)客戶的反饋,建議客戶列出兩塊板子硬件改動的詳細對比表。客戶反饋兩塊板子在硬件上唯一的區(qū)別是多增加了一個串口,ESD 保護器件還沒被拿掉。后面建議硬件上直接拿掉串口,但測試后發(fā)現(xiàn)問題還是沒有解決。后來又懷疑跟客戶使用的編譯器有關 ,因為有的編譯器會在復位后將 RAM 區(qū)的非初始化變量數(shù)據(jù)清零。所以建議客戶針對 IAR 或 Keil 嘗試使用下面的方式定義變量.
問題解決
后面查看 RM0394 發(fā)現(xiàn)下面一段關 SRAM2 的描述找到了思路.
小結
本篇筆記分析了 STM32L433CCY6 軟復位導致 SRAM2 值被擦除問題。后面發(fā)現(xiàn)是SRAM2_RST 的值設置為 0 導致了該問題??蛻舴答佋诋a(chǎn)線燒錄時有修改 option byte 的操作,可能是操作過程中 SRAM2_RST 的值被誤修改導致出現(xiàn)了問題。同時我們也建議客戶檢查其它 option byte 的值是否也有被誤修改,并建議客戶在操作 option byte 或Flash 時,確保 MCU 供電穩(wěn)定,燒錄口接線良好。