一、为什么要去关注它
调试端口SWD是一个司空见惯的端口,按照前人经验布置外围电路,使用JLINK才用SWD接口调试,一般都会运行好好的。但是如果有工程师不按照这样设计,恰巧又有些特殊情况出现呢。
我就是遇到这种情况才去想着关注它。
二、测试波形收集数据
1)电路排查,果然没有按照常规SWD接口配置上拉电阻(SWDIO SWDCLK 均配置10k上拉电阻)。实际电路,SWDIO SWDCLK 均串接10k电阻。测试波形,发现波形不规整(波形未保存,这个可能我板子问题关键 画重点)。
2)查datasheet,关于SWDIO端口建议必须上拉100K电阻(10K也没问题)。有实验数据和datasheet验证,果断通知硬件工程师飞线。
3)然而等待自己的还是异常,崩溃ing。测试波形,还是异常。SWDCLK波形规整;SWDIO波形异常,如下图。
三、正常的SWD波形是什么样子的
排查了各种因素外,SWDIO波形依然如故,想着正常的SWD波形是什么样子呢。去测试了好几款不同项目的板子,发现所有的SWDIO波形都一样,都和上图一样异常。但是这些板子,可都是正常的,这个确定的。
询问好多工程师,有没有测试SWDIO波形,得到的答复都是:没有关注。。。。。。。
上网搜索,发现一篇很有用的文章,里面提到的一句话,让我眼前一亮。
STM32单片机的SWD下载口为什么要加上下拉电阻_swdio和swclk是什么-CSDN博客
对应英文如下
总结:SWDIO端口因为是双向口,会被主机驱动(JLINK)和目标驱动(MCU),但是在转换时间(一位时间)不受两者驱动,这一位时间内波形应该比较特殊。
四、验证想法
示波器抓取SWDIO波形:果然如预期一样,SWDIO“异常”波形均知占一位时间,截取正常波形中一小段,如下图。
后续:
证明SWD波形没有问题,不再怀疑这一方面,继续调试。
尝试关闭外部晶振后,调试异常消失,接下来继续排查问题。
--------------------------------------------排查结果------------------------------
1)测量板子上晶振为16MHz,原理图上为8MHz晶振
2)cubemx按照8MHz晶振去设计,各个外设均配置为最大参数(如下图);实际使用16MHz,导致超频,出现调试异常
3)更换为8MHz晶振后,调试正常
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_43923755/article/details/144899752
|