關(guān)鍵詞:STM32F745,Bootloader,USART
目錄預(yù)覽
1. 概述
2. 問題分析
3. 問題解決
4. 總結(jié)
1.概述
STM32 的 Bootloader 可以支持多種協(xié)議的,比如 USART,I2C,DFU 等等,USARTBootloader 是客戶使用 STM32 的時候常常會用到的協(xié)議??蛻粼谑褂?STM32F745 進行產(chǎn)品開發(fā)的時候,出現(xiàn)了使用 STM32CubeProgramer 無法通過 USART1 Bootloader 進行程序升級的問題。為了解決客戶的問題,我在 NUCLEO-F746ZG 開發(fā)板上,復(fù)現(xiàn)了同樣的現(xiàn)象,本文針對這個現(xiàn)象,分析了該問題的原因和解決方法,作為一個記錄。
2.問題分析
STM32F745/6 USART1 Bootloader 使用的 TX 和 RX 分別是 PA9 和 PA10。而NUCLEO-F746ZG 開發(fā)板,默認情況下,板子上的 PA9 和 PA10 被用作 USB Vbus 和USB ID, 需要斷開板子上的 SB127 和 SB125 才能讓 PA9 和 PA10 被 USART1 使用。使用 STM32CubeProgrammer 下載工具,通過 USB-Serial 轉(zhuǎn)接板連上 NUCLEOF746ZG,如圖 1 所示,選擇 USART 協(xié)議,選擇對應(yīng)的 USART1 端口,其它參數(shù)選用默認配置,然后連接 NUCLEO 開發(fā)板,結(jié)果出現(xiàn)連接失敗。對照著 UM1974,檢查連線沒有問題,確認了 BOOT 腳為高電平,MCU 也進入Bootloader 模式,同時參考 AN2606,確認 STM32F475/6 支持 USART1 Bootloader。測試 USART3 Bootloader,STM32CubeProgrammer 可以正常連接。

參考 AN3155 了解 UART Bootloader 的工作流程如圖 2,果斷使用串口終端,比較USART1 Bootloader 和 USART3 Bootloader 響應(yīng)上位機的命令有何區(qū)別。

使用串口終端工具,分別連接 USART1,USART3,發(fā)送對應(yīng)的 UART Bootloader 命令,得到下圖 3 的命令交互。
圖3.USART1 Bootloader Command Interaction

通過圖 3 的命令交互可以看出,當 USART1 Bootloader 收到 7F 命令的時候,返回的值是 FF 79,正常的情況下,應(yīng)該返回 79。命令 7F 的作用是選擇對應(yīng)的 USART Bootloader,返回 79 表示 MCU 正確的進入了 USART Bootloader 工作模式,在 USART1 Bootloader 中,STM32CubeProgrammer 發(fā)送 7F 命令收到的返回值是 FF 79,所以STM32CubeProgrammer 認為此時 MCU 沒有正確的進入 USART Bootloader 模式,因此連不上目標板。
顯然,這個多余的 FF 不應(yīng)該是 Bootloader 發(fā)出來的,通過示波器,觀察 USART1TX 的 PA9 發(fā)現(xiàn),復(fù)位芯片之后,PA9 為低電平,而根據(jù)參考手冊,當 USART1 使能之后,此時 USART TX 應(yīng)該為高電平才正常,所以懷疑這個異?,F(xiàn)象是 USART1 產(chǎn)生了錯誤的數(shù)據(jù)導(dǎo)致的。
針對這種現(xiàn)象,在 PA9 外部上拉,再進行測試,USART1 Bootloader 工作正常。
3.問題解決
根據(jù)上面的分析,USART1 TX 沒有上拉導(dǎo)致了 USART1 Bootloader 無法正常工作,但通常情況下,我們使用 USART 的時候,TX,RX 是無需外加上拉的,為什么STM32F745/6 的 USART1 需要上拉,而 USART3 無需上拉呢?帶著這個問題,仔細閱讀了相關(guān)文檔,最終再 AN2606 V5.1(之前版本沒有注明)版本中,發(fā)現(xiàn)了這個區(qū)別,正是這個區(qū)別導(dǎo)致了這個問題。

4.總結(jié)
通過分析和解決這個問題,可見及時更新并仔細閱讀相關(guān)文檔是很重要的事情.針對這個問題,如果仔細閱讀了最新的 AN2606,就能很快定位產(chǎn)生問題的原因。當然,通過逐步分析這個問題,也進一步加深了對 Bootloader 的理解。

長按掃碼關(guān)注公眾號
更多資訊,盡在STM32
▽點擊“閱讀原文”,可下載原文檔
原文標題:工程師筆記|STM32F745 USART1 Bootloader 失敗原因分析與解決
文章出處:【微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
單片機
+關(guān)注
關(guān)注
6071文章
45260瀏覽量
660326 -
STM32
+關(guān)注
關(guān)注
2301文章
11075瀏覽量
369531
原文標題:工程師筆記|STM32F745 USART1 Bootloader 失敗原因分析與解決
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄

嵌入式工程師的進階之路
AT32 IAP using the USART


硬件工程師看了只會找個角落默默哭泣#硬件工程師 #MDD #MDD辰達半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師


硬件工程師手冊(全套)
U-Boot 和 Bootloader,99% 的工程師都分不清?


STM32U535能用USART1進行串口燒錄嗎?
STM32CubeMX生成STM32mp135D的USART1,2,3,6代碼初始化是空的,為什么?

硬件工程師的終極幻想:焊板子焊上人生巔峰!#半導(dǎo)體器件 #硬件工程師 #MDD辰達半導(dǎo)體

評論