【官方原创】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 - 保留所有权利

相关推荐
小王C语言2 小时前
【基础IO】————简单设计一下libc库
前端·数据结构·算法
深蓝海拓2 小时前
使用@property将类方法包装为属性
开发语言·python
夜星辰20232 小时前
MobaXterm会话窗口详解
嵌入式硬件·ssh·调试串口
雨雨雨雨雨别下啦2 小时前
Vue3——RabbitShopping
前端·javascript·vue.js
xiaoye-duck2 小时前
【C++:unordered_set和unordered_map】 深度解析:使用、差异、性能与场景选择
开发语言·c++·stl
BumBle2 小时前
从声明式到命令式:Vue3 弹窗组件的工厂模式重构
前端
恋猫de小郭2 小时前
你的蓝牙设备可能正在泄漏你的隐私? Bluehood 如何追踪附近设备并做隐私分析
android·前端·ios
zjjsctcdl2 小时前
java与mysql连接 使用mysql-connector-java连接msql
java·开发语言·mysql
格林威2 小时前
Baumer相机锂电池极片裁切毛刺检测:防止内部短路的 5 个核心方法,附 OpenCV+Halcon 实战代码!
开发语言·人工智能·数码相机·opencv·计算机视觉·c#·视觉检测