有关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系列加入了中断缓存,能够缓存多次未处理的中断

stm32 外部中断 按键的误触发

这篇博客提到了中断标志位PR先清与后清的区别,先清——进入中断IQR函数后就立马清除PR,再处理数据;后清——进入中断IQR函数后先处理数据,再清除PR

这篇博客点拨了我,在CUBE生成的代码中,是先清除PR,再调用中断回调函数,如下图所示;

清除中断标志位后,由于DATARDY信号有波动,会再次使能标志位,导致处理完回调函数后,再进入中断IQR函数。

考虑在回调函数中,SPI采集数据将占用一段时间,可以把这一部分时间当作延时消抖!

所以做法只需把清除标志位放到回调函数之后,即

再使用逻辑分析仪抓取数据,发现数据相当完美,但还须时间验证!

山和山不相遇,人与人要相逢