STM32单片机VCAP电容太小引起内核电压波动导致单片机异常复位

  • 问题:现象1:上位机记录的角度从-90.3°变为0,现象2:有时甚至不回复数据

在线调试发现单片机死机,使用软件RST复位之后查看CSR寄存器发现并不是程序里的看门狗复位排除是软件看门狗复位引起的,如果是看门狗复位,只会出现现象1不会出现现象2,这时会出现下文中的不出现④⑤的问题。(注意不能断电,断电会丢失寄存器的数据)

STM32单片机VCAP电容太小引起内核电压波动导致单片机异常复位_第1张图片

  • 查看上位机保存的数据。

STM32单片机VCAP电容太小引起内核电压波动导致单片机异常复位_第2张图片

读数据和回数据帧格式(UltraEdit软件,每行显示20个数据)
1、字节数均为10,ID=08时的读回数据即为黄框所示
读数据帧头为AA ID 52 00 + 4个00         +  2字节校和;
回数据帧头为BB ID 52 01 + 4字节数据 +  2字节校验和。


现象如下:在①的时候读数据和回复数据都是正常的,且正常数据位9A 99 BA C2,因为这个是先发低位,所以是十六进制C2BA999A,转换为Float数为-93.30,在项目里表示陀螺仪的位置在-93.30°,十六进制转FLOAT的转换方法可以参考在线网址http://lostphp.com/hexconvert/

在②和③的位置,发现只有读数据的命令,没有回数据的命令

在④⑤的位置,有了回数据的命令,但是数据变成00000000,对应Float就是0°,并且后面一直是0。(还有一种状态是,只有①②③之后,单片机直接不回复,并且测试内核电压不是一个稳定的电平,而是一个很大的纹波,波形见下图1和2,后面也找到了原因确实是内核电压不稳定导致的)

  • 在后面毫无头绪,百度,发现有两篇文章提到VCAP,使用示波器测试波形,并且注意到原理图上的电容20pF,而不是数据手册要求的2.2uF,记录了一下改变电容前后内核电压的波形,分别为下图的3和4。

STM32单片机VCAP电容太小引起内核电压波动导致单片机异常复位_第3张图片

更换电容之后,内核电压纹波明显更小,数据手册要求的内核电压大小在1.1V~1.3V之间,而不更换电容之前的内核电压在1.1~1.4V之间波动,更换电容之后再连续三天记录数据未发现异常复位导致角度变为0(记录之前给一个初始角度不为0,多个记录有的角度为正,有的角度为负,使用SSCOM软件记录数据,同时使用KK录像机记录视频,双向验证),至此问题解决,舒服。

STM32单片机VCAP电容太小引起内核电压波动导致单片机异常复位_第4张图片STM32单片机VCAP电容太小引起内核电压波动导致单片机异常复位_第5张图片

  • 总结:

1、画原理图的时候使用复制粘贴太习惯影响了VCAP电容值没有更改,后面的原理图检查没有排除问题。

2、单片机的大部分异常问题多是电源问题引起的,而且多是电容值变小或者电容虚焊导致电压波动太大,VCAP1和VCAP2均更改为2.2uF即可,因为VCAP1和VCAP2是连接到一个地方的,所以两个电容可以并联

3、板子回来之后除了测试各种电压时候输出电压是否正确时,增加观察纹波是否太大

你可能感兴趣的:(STM32)