0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

工程师笔记|STM32F745 USART1 Bootloader 失败原因分析与解决

STM32单片机 来源:未知 2023-01-08 16:50 次阅读

关键词:STM32F745,Bootloader,USART

目录预览

1. 概述

2. 问题分析

3. 问题解决

4. 总结

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 可以正常连接。

de497d56-8f30-11ed-bfe3-dac502259ad0.png

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

de751da8-8f30-11ed-bfe3-dac502259ad0.png

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

图3.USART1 Bootloader Command Interaction

de94f970-8f30-11ed-bfe3-dac502259ad0.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 工作正常。

3.问题解决

根据上面的分析,USART1 TX 没有上拉导致了 USART1 Bootloader 无法正常工作,但通常情况下,我们使用 USART 的时候,TX,RX 是无需外加上拉的,为什么STM32F745/6 的 USART1 需要上拉,而 USART3 无需上拉呢?带着这个问题,仔细阅读了相关文档,最终再 AN2606 V5.1(之前版本没有注明)版本中,发现了这个区别,正是这个区别导致了这个问题。

dec791a0-8f30-11ed-bfe3-dac502259ad0.png

4.总结

通过分析和解决这个问题,可见及时更新并仔细阅读相关文档是很重要的事情.针对这个问题,如果仔细阅读了最新的 AN2606,就能很快定位产生问题的原因。当然,通过逐步分析这个问题,也进一步加深了对 Bootloader 的理解。

dee5410a-8f30-11ed-bfe3-dac502259ad0.png

长按扫码关注公众号

更多资讯,尽在STM32

点击“阅读原文”,可下载原文档


原文标题:工程师笔记|STM32F745 USART1 Bootloader 失败原因分析与解决

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620869
  • STM32
    +关注

    关注

    2240

    文章

    10674

    浏览量

    348806

原文标题:工程师笔记|STM32F745 USART1 Bootloader 失败原因分析与解决

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32L151C8T6同样的代码,USART1正常,USART2不工作是为什么?

    请教: MCU是STM32L151C8T6。 同样的代码,USART1正常,USART2不工作。 请问,这是为什么 ?
    发表于 04-23 06:03

    STM32F103RCT6的USART1不能接收多字节数据是什么原因导致的?

    用串口助手手动发送和1秒一次的定时发送时,STM32F103RCT6能完整地接收到15个字节的数据。 用串口助循环发送时,与延时有关。500毫秒延时,STM32F103RCT6能接收到12个字
    发表于 04-17 06:35

    STM32F051 USART1接收数据乱码的原因

    求助:STM32F051 USART1发送没有中断,接收使能中断,发送数据正常,接收数据乱码,确认进入了接收中断,但数据出现乱码,请问有哪些原因
    发表于 04-16 06:14

    STM32L431x用usart1打印会乱码的原因

    STM32L431x用usart1打印会乱码的原因
    发表于 04-08 06:12

    请问STM32G473VET6的LPUART1能和USART1能同时使用吗?

    STM32G473VET6的LPUART1能和USART1能同时使用吗?
    发表于 03-22 07:00

    STM32G051K8T6-USART1无法工作的原因?如何解决?

    问题描述:使用STM32CubeMX做简单的测试工程,只打开USART1USART2功能,RCC设置为LSE。 使用USART1
    发表于 03-22 06:59

    STM32WBA52CG升级到STM32Cube FW_WBA V1.2.0后,调用BleStack_Init后USART1输出异常怎么解决?

    使用STM32WBA52CG开发蓝牙,板子是NUCLEO-WBA52CG,USART1作为log输出通道。之前使用STM32Cube FW_WBA V1.1.1没什么问题。最近升级了
    发表于 03-08 06:04

    STM32USART发送数据时如何使用TXE和TC标志呢?

    串行通信协议。USARTSTM32 中有多个实例,包括 USART1USART2 等,其特性和功能也不完全相同。 在发送数据时,USART
    的头像 发表于 10-26 11:31 790次阅读

    工程师笔记 | STM32G0 复位后死机

    工程师笔记 | STM32G0 复位后死机
    的头像 发表于 10-17 15:23 1011次阅读
    <b class='flag-5'>工程师</b><b class='flag-5'>笔记</b> | <b class='flag-5'>STM32</b>G0 复位后死机

    USART1不能设定600BPS波特率的解决方案

    某客户工程师在某型号新产品的设计中,使用了 STM32 器件,型号为:STM32F103VDT6。据其工程师讲述:为了实现产品的某项设计要求,他想要通过
    发表于 09-11 06:34

    STM32F103VDT6 Flash操作导致USART接收丢数据的解决方案

    该问题客户提出,发生在 STM32F103VDT6 器件上。据其工程师讲述:在其产品设计中,使用了 STM32片上 Flash 模拟了一个 EEPROM 的功能,用于存贮数据。在软件调试时,发现开启此功能,会影响到
    发表于 09-07 06:41

    STM32CubeMx配置USART1增加打印功能

    STM32CubeMx配置USART1增加打印功能
    的头像 发表于 08-22 10:32 671次阅读
    <b class='flag-5'>STM32</b>CubeMx配置<b class='flag-5'>USART1</b>增加打印功能

    STM32U5开发(1)----通过USART1发送数据

    通过 USART1 发送一些数据。
    的头像 发表于 07-27 11:35 684次阅读
    <b class='flag-5'>STM32</b>U5开发(1)----通过<b class='flag-5'>USART1</b>发送数据

    STM32USART1USART2模块串行数据通讯功能

    STM32USART1USART2模块支持多种功能,包括IrDA红外、Smart Card(IC卡)等。
    发表于 07-24 14:28 2132次阅读
    <b class='flag-5'>STM32</b>的<b class='flag-5'>USART1</b>与<b class='flag-5'>USART</b>2模块串行数据通讯功能

    N76E003 usart1usart0不能同时打开中断吗?

    最近使用N76E003的usart0和 usart1开启中断接收数据,遇到个问题如果使用usart0接收数据,usart1发送数据到PC端,程序毫无问题能稳定运行。 但是如果使用
    发表于 06-14 14:00