01、问题描述
客户使用STM32H563用于他们的产品。将STM32CubeH5 Cube固件包内的示例代码移植到他们的硬件平台后,执行DA regression时失败,但在NUCLEO-H563ZI开发板上使用相同固件和配置进行测试时现象正常。
02、问题分析
同样的固件,同样的配置,运行在不同的硬件平台,况且DA回退流程跟用户代码关系不大。因此,应优先怀疑硬件连接、调试器兼容性、复位链路或操作流程差异。
首先查看客户的操作,发现客户使用的是市面上这种ST-LINK:

需要说明地是,它并非ST官方调试器,而是第三方兼容调试器。
不过,换成ST官方的ST-LINK后,问题仍然存在。
然后查看客户的硬件原理图,对比客户板与NUCLEO-H563ZI的原理图后,发现NRST连接方式存在差异。

如上图所示,客户的MCU的NRST引脚上串了一个1K的电阻。大家要知道地是,MCU的NRST引脚内部已经有了一个大概40K左右的上拉电阻,这个在数据手册中可以查到:

而ST官方的硬件设计指南文档AN5711对SWD口的参考设计如下图所示:

可见,NRST引脚并不需要串任何电阻。
于是将客户板上的那个1K电阻拿掉后,再去做DA回退测试,则一切又恢复正常了。问题解决。
下面有一些客户提到的相关问题:
Q:做DA回退时,必须要连接NRST引脚吗?
A:是必须的。因为在做DA回退时,上位机软件通过ST-Link,会拉NRST引脚去触发MCU复位,才可以使MCU进入到DA流程,这个在AN6008文档中讲述DA流程的章节有提到:

当然,你也可以使用示波器测试DA回退过程中NRST引脚上的波形,从而确定这个波形是通过NRST引脚发送的。
由此可知,NRST引脚必须拉到调试接口才行,且不需要串任何电阻。
另外,需要强调地是,ST官方的硬件设计指南中,对于SWD口的参考设计图中是有连接NRST引脚的。客户在设计SWD接口时容易忽略NRST连接,这就可能导致类似问题出现。
03、小结
一般来说,对于SWD口,我们一般建议将NRST拉出来,并串一个0欧姆的电阻。在正式发布和做EMC方面的测试时,可将这个电阻拿掉。调试的时候则放回去。如此,可兼顾各方面的考虑。
来源:STM32
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。