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

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

3天内不再提示

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

MCU开发加油站 来源:STM32单片机 作者:STM32单片机 2023-01-13 10:33 次阅读

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

93cb91b2-9267-11ed-bfe3-dac502259ad0.png

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

93f3495a-9267-11ed-bfe3-dac502259ad0.png

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

图3.USART1 Bootloader Command Interaction

940207ba-9267-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(之前版本没有注明)版本中,发现了这个区别,正是这个区别导致了这个问题。

941617f0-9267-11ed-bfe3-dac502259ad0.png

4.总结

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

审核编辑:汤梓红

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

    关注

    2270

    文章

    10895

    浏览量

    355740
  • 串口
    +关注

    关注

    14

    文章

    1551

    浏览量

    76427
  • 开发板
    +关注

    关注

    25

    文章

    5032

    浏览量

    97373
  • bootloader
    +关注

    关注

    2

    文章

    235

    浏览量

    45612
  • USART1
    +关注

    关注

    0

    文章

    9

    浏览量

    3682

原文标题:STM32F745 USART1 Bootloader 失败原因分析与解决

文章出处:【微信号:mcugeek,微信公众号:MCU开发加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32USART1USART2模块串行数据通讯功能

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

    STM32F051 USART1接收数据乱码的原因

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

    【分享】stm32 串口中断总结:USART1

    本文以USART1为例,叙述串口中断的编程过程。1、先来讲述一下在应用串口中断时涉及到的一些库文件。首先对于STM32外设库文件的应用编程,misc.c和stm32f10x_rcc.c
    发表于 03-28 15:43

    STM32F745通过FMC访问FPGA顺序被优化

    有人吗?有没有人使用STM32F745,通过FMC访问FPGA,但是相邻的访问的操作的顺序被优化!
    发表于 04-15 01:05

    stm32f745平台上搭建ethernet通信程序

      使用STM32CubeMx5.21,在stm32f745平台上搭建ethernet通信程序,PHY选用KSZ8081RNB。(LAN8742/DP83848使用一样)1、系统时钟设置  RCC
    发表于 08-10 06:16

    STM32F407 USART1控制RGB彩灯

    STM32F407–USART1 控制 RGB 彩灯实验编程的大部分函数都是在 c 文件里写的,头文件是一个声明 c 文件里函数的地方。USART1 控制 RGB 彩灯实验的 c 文件里主要包括两个
    发表于 08-24 06:50

    如何通过USART1STM32F7xx进行编程?

    我尝试通过 USART1 (PA9/PA10) 对 STM32F765 进行编程,但连接失败。我使用 STM32CubeProgrammer v2.7.0。如果我在我的目标上改用
    发表于 01-03 07:57

    STM32F769BI使用USART1通过引导加载程序写入hex文件总是报错的原因

    单片机:STM32F769BI程序员:stm32CubeProgrammer Ver2.6.0我将 MCU 的 BOOT 引脚设置为 H 电平进行引导,并尝试使用 USART1 通过引导加载程序写入 hex 文件。进行到一半,总
    发表于 01-11 06:52

    STM32F1 _DMA_USART

    STM32F1_DMA_USART
    的头像 发表于 04-08 10:23 4630次阅读
    <b class='flag-5'>STM32F1</b> _DMA_<b class='flag-5'>USART</b>

    STM32学习】(6)串口1的使用(USART1

    单片机串口是必须要学习的,而且很重要,在数据传输已经程序调试中都很重要。本博客先学习一下USART1 串口其实串口不是每一个IO都可作为串口的,他是有固定的IO口的。如USART1串口对应的IO
    发表于 12-28 19:27 10次下载
    【<b class='flag-5'>STM32</b>学习】(6)串口<b class='flag-5'>1</b>的使用(<b class='flag-5'>USART1</b>)

    STM32F105 USART1/USART3 调试笔记

    由103系列向105系列移植目录由103系列向105系列移植故障现象:USART1乱码故障排除:时钟和外部晶振的适配调整外部晶振配置时钟配置故障现象:USART3收发均无效故障排除:端口
    发表于 12-28 19:31 7次下载
    <b class='flag-5'>STM32F</b>105 <b class='flag-5'>USART1</b>/<b class='flag-5'>USART</b>3 调试笔记

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

    STM32F745/6 USART1 Bootloader 使用的 TX 和 RX 分别是 PA9 和 PA10。而 NUCLEO-F746ZG 开发板,默认情况下,板子上的 PA9
    发表于 12-14 18:03 0次下载

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

    关键词:STM32F745Bootloader,USART 目录预览 1. 概述 2. 问题分析 3. 问题解决 4. 总结
    的头像 发表于 01-08 16:50 1505次阅读

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

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

    STM32CubeMx配置USART1增加打印功能

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