你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F745 USART1 Bootloader 失败原因分析与解决

[复制链接]
STMCU小助手 发布时间:2023-2-18 17:00
1. 概述

STM32 的 Bootloader 可以支持多种协议的,比如 USART,I2C,DFU 等等,USARTBootloader 是客户使用 STM32 的时候常常会用到的协议。客户在使用 STM32F745 进行产品开发的时候,出现了使用 STM32CubeProgramer 无法通过 USART1 Bootloader 进行程序升级的问题。为了解决客户的问题,我在 NUCLEO-F746ZG 开发板上,复现了同样的现象,本文针对这个现象,分析了该问题的原因和解决方法,作为一个记录。


2. 问题分析
STM32F745/6 USART1 Bootloader 使用的 TX 和 RX 分别是 PA9 和 PA10。而NUCLEO-F746ZG 开发板,默认情况下,板子上的 PA9 和 PA10 被用作 USB Vbus 和USB ID, 需要断开板子上的 SB127 和 SB125 才能让 PA9 和 PA10 被 USART1 使用。
使用 STM32CubeProgrammer 下载工具,通过 USB-Serial 转接板连上 NUCLEOF746ZG,如图 1 所示,选择 USART 协议,选择对应的 USART1 端口,其它参数选用默认配置,然后连接 NUCLEO 开发板,结果出现连接失败。
对照着 UM1974,检查连线没有问题,确认了 BOOT 脚为高电平,MCU 也进入Bootloader 模式,同时参考 AN2606,确认 STM32F475/6 支持 USART1 Bootloader。测试 USART3 Bootloader,STM32CubeProgrammer 可以正常连接。


LJ%)9QENBSI0KB2_24D[WXG.png


参考 AN3155 了解 UART Bootloader 的工作流程如图 2,果断使用串口终端,比较USART1 Bootloader 和 USART3 Bootloader 响应上位机的命令有何区别。


{I]AN46AD_W}5@4)]DP}9[E.png


使用串口终端工具,分别连接 USART1,USART3,发送对应的 UART Bootloader 命令,得到下图 3 的命令交互。


G[FH[LR]3580X~N9C~[V9QF.png


通过图 3 的命令交互可以看出,当 USART1 Bootloader 收到 7F 命令的时候,返回的值是 FF 79,正常的情况下,应该返回 79。命令 7F 的作用是选择对应的 USART Bootloader,返回 79 表示 MCU 正确的进入了 USART Bootloader 工作模式,在 USART1 Bootloader 中,STM32CubeProgrammer 发送 7F 命令收到的返回值是 FF 79,所以STM32CubeProgrammer 认为此时 MCU 没有正确的进入 USART Bootloader 模式,因此连不上目标板。
很显然,这个多余的 FF 不应该是 Bootloader 发出来的,通过示波器,观察 USART1TX 的 PA9 发现,复位芯片之后,PA9 为低电平,而根据参考手册,当 USART1 使能之后,此时 USART TX 应该为高电平才正常,所以怀疑这个异常现象是 USART1 产生了错误的数据导致的。
针对这种现象,在 PA9 外部上拉,再进行测试,USART1 Bootloader 工作正常。


完整版请查看:附件 STM32F745 USART1 Bootloader 失败原因分析与解决.pdf (476.42 KB, 下载次数: 2)
收藏 评论0 发布时间:2023-2-18 17:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版