問題描述
客戶反饋通過PC軟件Flashloader不能夠跟STM32 MCU自帶Bootloader連接。并且系統運行一段時間后異常復位。
系統分析
檢測原理圖
延續之前的項目,進行的一些軟硬件簡單修改。
上電、放電的時序也是正常。
BOOT0 拉高,BOOT1 拉低,
測量工作時的電壓正常(2.5v)。
檢測所有相關的硬件軟件都是沒有問題,他們的BOOT腳,以及之前的PDR_ON是通過外圍的FPGA單元控制,我們一開始懷疑這些上電時序,以及PDR邏輯出錯。嘗試讓他們全部斷開邏輯,測試整個上電,掉電過程都是沒有什么問題。
測量波形
檢測他們的串口工具
能正常在PC上發現他們的串口工具,數據的發送正常。
但是串口的到PCB板上沒有任何的輸出,所以并不能跟板子通訊。
使用一個新的串口工具,當產品連接到PC后,重新上電,能夠正常升級軟件,到這里似乎問題得到解決,但是當他們恢復到之前的系統,通過控制Reset和BOOT引腳進入的時候,仍然時靈時不靈,當不能進入BOOT的時候,他們測量我們的復位管腳電壓時發現在復位腳上以一個3.6MHz的頻率不停的復位MCU。
功能測試
客戶又發現如果給MCU上電,PC快速打開Flashloader,并且連接串口,工作正常。但是,如果慢速這樣操作,就連不上了,真是神奇的事情再次發生,他們再次確認發現,在復位腳上,在上電一段時間后,會有不停的有一個復位信號產生,百思不得解。
確認手冊
我們打開AN2606,發現在Bootloader的流程圖中有一個系統Reset的過程,難道是這里產生的嗎?
我們讓客戶斷開所有的外設再次確認問題,他們發現在斷開外圍的時候,這個連續的復位信號不再產生。從這個流程來看,只有在用到DFU或者CAN升級的會在檢測不到HSE的時候會系統Reset,但據他們說,他們并不使用這兩個功能,那就奇怪了,然后就讓他們試做去恢復外設功能,最后發現在恢復到一個SPI的時候,重現這個問題。
系統確認
我再次跟他們溝通他們的系統框圖如下:
他們進一步調查發現,當FPGA,在上電初始化后,會不停的發送一些命令給到MCU,數據線正好跟CAN的RX引腳共用,所以只有第一次上電后,也就是在FPGA給MCU發送數據之前,Flashloader能夠正常連接MCU,過了這段時間就不能連接了。從這些實驗和最后的結果我們可以看出,如果我們在芯片上電,且在FPGA給MCU發送數據之前,連接串口,這個時候MCU就能順利地通過UART啟用Bootloader,而不受FPGA發送的數據影響,而過了這段時間之后,FPGA會不停的發送數據給MCU,而MCU錯誤的檢測到CAN FRAME(跟ST歐洲的應用部門確認,我們的CAN 檢測只是簡單的確認一個下降沿,一個上升沿,再檢測到一個下降沿),而進入CAN Bootloader但是又不能正確檢測到HSE,或者不能在3ms內檢測到正常的CAN FRAME,從而導致MCU復位。在屏蔽掉SPI的時候,一切正常。
-
STM32
+關注
關注
2270文章
10895瀏覽量
355743 -
bootloader
+關注
關注
2文章
235瀏覽量
45612
原文標題:經典案例 | STM32 Bootloader異常復位
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論