概述
STM32 的 Bootloader 可以支持多種協(xié)議的,比如 USART,I2C,DFU 等等,USARTBootloader 是客戶使用 STM32 的時(shí)候常常會(huì)用到的協(xié)議??蛻粼谑褂?STM32F745 進(jìn)行產(chǎn)品開發(fā)的時(shí)候,出現(xiàn)了使用 STM32CubeProgramer 無法通過 USART1 Bootloader 進(jìn)行程序升級(jí)的問題。為了解決客戶的問題,我在 NUCLEO-F746ZG 開發(fā)板上,復(fù)現(xiàn)了同樣的現(xiàn)象,本文針對(duì)這個(gè)現(xiàn)象,分析了該問題的原因和解決方法,作為一個(gè)記錄。
問題分析
STM32F745/6 USART1 Bootloader 使用的 TX 和 RX 分別是 PA9 和 PA10。而NUCLEO-F746ZG 開發(fā)板,默認(rèn)情況下,板子上的 PA9 和 PA10 被用作 USB Vbus 和USB ID, 需要斷開板子上的 SB127 和 SB125 才能讓 PA9 和 PA10 被 USART1 使用。
問題解決
根據(jù)上面的分析,USART1 TX 沒有上拉導(dǎo)致了 USART1 Bootloader 無法正常工作的問題,但是通常情況下,我們使用 USART 的時(shí)候,TX,RX 是無需外加上拉的,為什么STM32F745/6 的 USART1 需要上拉,而 USART3 無需上拉呢?帶著這個(gè)問題,仔細(xì)閱讀了相關(guān)文檔,最終再 AN2606 V5.1(之前版本沒有注明)版本中,發(fā)現(xiàn)了這個(gè)區(qū)別,正是這個(gè)區(qū)別導(dǎo)致了這個(gè)問題。
總結(jié)
通過分析和解決這個(gè)問題,可見及時(shí)更新并仔細(xì)閱讀相關(guān)文檔是很重要的事情.針對(duì)這個(gè)問題,如果仔細(xì)閱讀了最新的 AN2606,就能很快定位產(chǎn)生問題的原因。當(dāng)然,通過逐步分析這個(gè)問題,也進(jìn)一步加深了對(duì) Bootloader 的理解。