【官方原创】STM32H7双核芯片通过 STlink连接失败问题分析 LAT1654

关键字: 双核,电源模式,连接

1. 问题

STM32H755双核芯片在第一次烧录成功后,再次烧录失败,STlink无法连接

STM32CubeProgrammer,为什么?

2. 问题原因

在排除接线顺序及线缆的质量问题后,可能有两个原因导致这个问题。

  1. 软、硬件配置不匹配导致的问题。

  2. 选项字节中的配置有关的问题。

3. 分析

3.1. 问题1:软硬件配置不匹配

对于H7的电源配置可能有多种方式。软件工程师需要选择与硬件设计匹配的电源模式。

软件选择合适的电源配置只能在上电复位后设置一次。如果选择错误的配置会导致MCU

锁死。这是MCU包含的一种保护机制,防止内部开关电源(SMPS)将电压设置得高于

VCORE(1.8或2.5伏),防止因配置错误而损坏MCU的情况。

图1. CubeMX中电源配置

图2. 硬件电源配置

对于上图2中硬件电源模式与STM32CubeMX中的配置方式如下表所示:

表1. 电源模式软硬件配置对应表

3.2. 问题1解决方案

对于这个问题的解决要么是修改硬件配合软件的配置,要么是修改软件配合硬件的设

计。硬件原理图如果没有考虑电源模式的兼容设计,修改起来就比较麻烦,需要飞线。

软件配合硬件设计是最简单而方便的。只需要修改电源配置重新生成代码。但是此时

遇到一个问题,MCU烧录过一次后,无法再连接STM32CubeProgrammer。

无法连接STlink问题的解决方案如下:

解决方案1:

将boot0脚拉高,使程序从system memory启动,再通过STlink连接MCU,将之

前的代码擦除掉,再将修改过后的代码烧录进去就好了。

解决方案2:

默认情况下,SW-DP在系统复位或上电复位时被选中。IOs(SWCLK+SWDIO) 由硬件

配置为调试复用功能模式。

连接板子的电源,按住板子上的复位按键保持NRST为低电平,使用STlink连接

STM32CubeProgrammer,点击连接按钮,立刻松开复位按键就可以连接到

STM32CubeProgrammer,这个时间间隔很短,如果连接失败,建议多尝试几次。连接

成功后进行全片擦除,然后重新烧录配置正确的代码。

3.3. 问题2:选项字节中的配置有关的问题

对于双核的STM32H7 MCU, 无法连接STM32Programmer的另一种可能性是客户

修改过选项字节,它被配置为仅在复位后启动Cortex®-M4(BOOT_CM7/BCM7=0,

BOOT_CM4/BCM4=1)。如下图:

图3. Option Bytes 配置

3.4. 问题2解决方案

解决方案比较简单,需要将调试器连接到STM32CubeProgrammer的Access port

3(Cortex®-M4),而不是Access port 0(Cortex®-M7)。

图4. 调试和访问端口连接

图5. STM32CubeProgrammer 配置

这个解决方案适用于STM32CubeProgrammer 2.2.0之后的版本,请使用较新的

STM32CubeProgrammer 版本解决这个问题。

建议在开发过程中勾选BCM4和BCM7保持两个内核的BOOT功能启用。

4. 总结

本文总结了STM32H7 STlink连接STM32CubeProgrammer失败的原因及解决方案。


重要通知 - 请仔细阅读 意法半导体公司及其子公司 ("ST")保留随时对 ST 产品和 / 或本文档进行变更的权利,恕不另行通知。买方在订货之前应获取关于 ST 产 品的最新信息。 ST 产品的销售依照订单确认时的相关 ST 销售条款。 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定,将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。若需 ST 商标的更多信息,请参考 www.st.com/trademarks。所有其他产品或服务名称均为其 各自所有者的财 产。 本文档是ST中国本地团队的技术性文章,旨在交流与分享,并期望借此给予客户产品应用上足够的帮助或提醒。若文中内容存有局限或与ST 官网资料不一致,请以实际应用验证结果和ST官网最新发布的内容为准。您拥有完全自主权是否采纳本文档(包括代码,电路图等)信息, 我们也不承担因使用或采纳本文档内容而导致的任何风险。 本文档中的信息取代本文档所有早期版本中提供的信息。 © 2020 STMicroelectronics - 保留所有权利

相关推荐
兔小盈6 小时前
多线程-(五)线程安全之内存可见性
java·开发语言·多线程
REDcker6 小时前
个人博客网站建设指南 Markdown资产化与静态站选型部署
前端·后端·博客·markdown·网站·资产·建站
zhangfeng11336 小时前
小龙虾 wordbuddy 安装浏览器控制器 agent-browser npm install -g agent-browse
前端·人工智能·npm·node.js
徐小夕6 小时前
100小时,我做了一款AI CAD建模软件,开源!
前端·vue.js·github
Bigger6 小时前
因为看不懂小棉袄的画,我写了个 AI 程序帮我“翻译”她的世界
前端·人工智能·ai编程
yaoxin5211236 小时前
400. Java 文件操作基础 - 使用 Buffered Stream I/O 读取文本文件
java·开发语言·python
折哥的程序人生 · 物流技术专研6 小时前
《Java面试85题图解版(二)》进阶深化上篇:并发编程 + JVM
java·开发语言·后端·面试
2501_931803757 小时前
Go:一门为解决C语言痛点而生的现代语言
c语言·开发语言·golang
送鱼的老默7 小时前
学习笔记--入门typescript直接案例开搞
前端·typescript
Prometheus7 小时前
从 XMLHttpRequest 到 fetch、ReadableStream、SSE、EventSource:前端流式通信完整梳理
前端