‘壹’ 工程师笔记|不能连接上 STM32H7 芯片
无法连接到 STM32H7 芯片的可能原因及解决方案
一、可能原因一:电源配置错误
问题描述:STM32H7 芯片具有可配置的内部 SMps 降压转换器,其电源配置取决于外部电源电路组件的连接。如果软件代码中配置的供电模式与外部硬件供电连接的模式不一致,会导致芯片被锁定,从而无法连接。
解决方案:
通过复位和 STM32CubeProgrammer 连接:
将复位按钮(通常为 NRST 引脚)保持在低位。
接通电路板电源。
保持复位按钮低。
通过 STM32CubeProgrammer 连接,并在程序开始连接时松开复位按钮。
如果连接不上,重复上述步骤;如果连接上,则执行批量擦除。
确保已修复项目中的电源配置,并重新下载。
通过强制 BOOT0 引脚高位连接:
强制将 BOOT0 引脚保持高位,然后上电复位目标板(这需要将 BOOT_CM7_ADD1 设置为系统内存)。
保持 BOOT0 引脚电平为高。
通过 STM32CubeProgrammer 连接。系统引导加载程序不会使用用户的电源配置。
执行批量擦除。
确保已修复项目中的电源配置,并重新下载。
注意事项:
在 STM32CubeMX 中,确保电源配置与硬件连接一致。在 CubeMX 5.4.0 及更高版本中,PWR_DIRECT_SMPS_SUPPLY 电源是默认选项,而在早期版本中可能是 PWR_LDO_SUPPLY。
由于电源配置只能在上电复位后更改一次,因此问题可能会在下一次电源复位后出现。
二、可能原因二:Cortex-M7 启动已禁用
问题描述:对于具有双核功能的 STM32H7 设备,如果选项字节的配置使得只有 Cortex-M4 在复位后才启动(BOOT_CM7/BCM7=0,BOOT_CM4/BCM4=1),则调试器需要连接到访问端口 AP=3(Cortex-M4),而不是访问端口 AP=0(Cortex-M7)。
解决方案:
确保调试器连接到正确的访问端口(AP=3)。
使用 STM32CubeProgrammer 进行连接时,保持其为最新版本。
建议保持两个内核启动配置,否则某些 IDE 工具可能无法与设备一起工作。
三、总结
无法连接到 STM32H7 芯片的问题通常与电源配置错误或 Cortex-M7 启动已禁用有关。通过仔细检查和调整电源配置,以及确保调试器连接到正确的访问端口,可以解决这些问题。在解决过程中,使用 STM32CubeProgrammer 进行连接和批量擦除是非常有用的工具。同时,保持 STM32CubeMX 和 STM32CubeProgrammer 的最新版本也是避免此类问题的重要措施。
以上图片展示了电源配置的相关代码和硬件配置图表,有助于进一步理解和解决电源配置错误的问题。
