STM32的SWD烧录模式No Target Connected 错误的一种情况

一、问题

最近做项目第一次用到STM32F405RGT6这款单片机,之前用的是STM32F407;SMT贴片焊接,拿到板子准备烧录程序进行测试,使用的是STlink的SWD烧录模式,但是MDK弹出“No target connected”,也就是说检测不到单片机!

二、问题分析和尝试

查看了魔法棒的Debug选项中stlink的“setting”,结果如图1所示。

STM32的SWD烧录模式No Target Connected 错误的一种情况_第1张图片

图1.错误状态下的SWD设备检测状态

既然显示检测不到单片机,那么首先考虑是否电路板的电源供给状态会否有错?接地是否可靠?测试结果显示正常;既然供电正常,那么是否是接线错误?检查结果显示正常;那么单片机的BOOT引脚配置呢?资料显示BOOT引脚的配置和复位后程序的运行有关如图2。网上查找了解到如果把PA13、PA14引脚配置为输出模式了,那么这两个引脚就不能再作为SWD的信号线进行程序的下载调试了(我的芯片都是新的,照理讲这两个引脚不会被配置,但是卖家发二手货也是可能的),STlink也就检测不到单片机,但是引脚配置是在运行了相关的程序后配置的,那么如果让单片机复位后不运行引脚配置程序PA13、PA14引脚就仍然可以作为SWD引脚使用,方法是将BOOT0拉高(参照https://blog.csdn.net/YPJ0123/article/details/79774178);也有网友提出利用复位的方式解决这个问题,(参照http://www.stmcu.org.cn/module/forum/thread-600568-1-1.html,个人在后续的调试中用到过这种方式实测有效,但这种方法并不适用于博主遇到的主要问题)。尝试了这两种方法后仍然没有解决问题~~头大!之后又检查了晶振系统(尽管STM32有内部晶振,这时候真的需要认真检查所有的可能,也是无奈~~)结果显示没有问题。

STM32的SWD烧录模式No Target Connected 错误的一种情况_第2张图片

图2.BOOT引脚配置的相关解释

综上描述,确保了电源系统正常、SWD接线正常、BOOT配置正常甚至是晶振系统正常,但是问题仍然没有解决。于是乎就开始怀疑是否买到了假的芯片?于是着手买芯片换一下试试,但是一个芯片和一个核心板模块的价格也差不多不如直接买来核心板,这样也可以在硬件上有个参考。

拿到板子接好SWD接线,发现仍然检测不到芯片,后来尝试了前面提到的复位的方式让STlink检测到了核心板自带的单片机。核心板遇到这样的问题应该是卖家在核心板里烧录了程序并且配置了PAA13、PA14引脚。核心板调试通过,再回头查看自己的板子的问题,经过一通调试后仍然没有解决,决定换芯片!将核心板上的芯片换到自己的电路板上,结果仍然检测不但芯片!!!!这下坚定了信念,一定是自己的电路板哪里出了问题。

三、问题查找和解决

         经过前面的一通调整,可以肯定的是1.供电系统没有问题;2.SWD接线没有问题;3.BOOT配置没有问题;4.软件没有问题。5.问题出在硬件上。既然问题在硬件设计上,那么硬件上有哪些结构回和SWD连接相关呢?我的硬件原理图如图3所示。

STM32的SWD烧录模式No Target Connected 错误的一种情况_第3张图片

图3.STM32F405系统的部分电路原理图

         图3.所示的是电路中和单片机的工作条件有关的部分,其他的都是IO口可以不看。图中可以看出晶振部分的问题已经排除,VCAP电路结构是参考手册可找的,VDD和VSS是单片机的数字地没有问题,那么就是VDDA、VSSA和VBAT了,VBAT引脚这样供电已经无数次了肯定ok。那么VDDA呢?问题就出在这!我的VDDA来自于一个单独的LDO,这个模拟电源还用做精密的仪表放大器已经光电检测电路的电压轨道用,而考虑到功耗问题,我设置的是此电源可以由单片机使能,也就是说单片机工作之前模拟电源的使能引脚是失能状态,即3.3VA是不工作的。按照字面意思理那么VDDA是单片机的模拟地不应该会对系统的程序烧录这样的数字动作有什么影响,为了让判断更有根据查找了数据手册如图4.和图5.所示。

STM32的SWD烧录模式No Target Connected 错误的一种情况_第4张图片

图4.stm32F4单片机数据手册关于电源部分解释

STM32的SWD烧录模式No Target Connected 错误的一种情况_第5张图片

图5.STM32F4的模拟电源供电系统

红色圈圈是关于模拟电源的描述,蓝色圈圈是导致博主遇到的问题的真正元凶!复位模块RC振荡器、PLL的供电全部来自于VDDA,也就是说单片机的时钟系统的供电来自于VDDA,它没有正常供电当然是差找不到单片机!找到了问题的关键赶紧尝试一下,终于检测到了芯片(手动泪流满面~~~)见图6。这是在我的国庆节的最后一个晚上解决的啊!这么一个粗心和经验不足的代价是贡献了整个国庆节(尽管更多的时间在搞其他的,但是这个问题幽灵一样挥之不去)!好心酸…

         心酸的留给自己经验留给网友,希望能帮助到正在被这种“小毛病”困扰的你。

STM32的SWD烧录模式No Target Connected 错误的一种情况_第6张图片

图6.检测正常后的SWD芯片检测结果

 总结下来就是单片机在启动前VDDA必须供电

你可能感兴趣的:(分享)