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