有关IMU数据采集完成中断信号 DATARDY 信号有干扰(波动),导致 STM32外部中断接收多次触发的问题
之前通过示波器抓取过DATARDY的信号质量,发现当读取IMU数据的时候DATARDY信号会有相当的波动
可能跟我把DATARDY配置为推挽输出,高电平有效有关,这导致了输出电压变化;
P.S.下次购买了电容电阻配件后可以试试配置为浮空输出,外部上拉,低电平有效
我估计正是这种波动干扰了STM32 EXIT频繁触发。
这里使用逻辑分析仪抓取SPI采集信号(0,1,2,3)与DATARDY信号(6)
可以看到SPI采集动作并没有与DATARDY信号对齐!这将导致我采集的IMU数据频率高低不一!
几篇参考文章
MCU_关于STM32Fxxx中断EXTI产生时多次(两次)进入中断的原因
这篇博客的意思就是 F4系列加入了中断缓存,能够缓存多次未处理的中断
这篇博客提到了中断标志位PR先清与后清的区别,先清——进入中断IQR函数后就立马清除PR,再处理数据;后清——进入中断IQR函数后先处理数据,再清除PR
这篇博客点拨了我,在CUBE生成的代码中,是先清除PR,再调用中断回调函数,如下图所示;
清除中断标志位后,由于DATARDY信号有波动,会再次使能标志位,导致处理完回调函数后,再进入中断IQR函数。
考虑在回调函数中,SPI采集数据将占用一段时间,可以把这一部分时间当作延时消抖!
所以做法只需把清除标志位放到回调函数之后,即
再使用逻辑分析仪抓取数据,发现数据相当完美,但还须时间验证!