关键字: 双核,电源模式,连接
1. 问题
STM32H755双核芯片在第一次烧录成功后,再次烧录失败,STlink无法连接
STM32CubeProgrammer,为什么?
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 - 保留所有权利