一、说明
使用逻辑分析仪抓区imu的spi和中断io的信号,从而侧面描述atbf在imu上的数据读取方式;
二、硬件说明
1、硬件材料
1、mcu
at32F437开发板
2、imu
icm42688p
3、逻辑分析仪
梦源逻辑分析仪
4、调试器
jlink
2、原理图
3、实物图
4、固件版本说明
V4.3.2
二、运行betaflight-configurator
1、电机界面截图
可以看到,imu可以正常读取数据,且陀螺仪的循环时间为125us;
2、status截图
三、逻辑分析仪截图
1、逻辑分析仪配置
分别设置逻辑分析仪的采样率和spi解码选项;
2、逻辑分析仪捕获数据截图
(1)中断io时间间隔
可以看到此处的上升沿的时间间隔是8k左右
(2)spi时钟频率
(3)8k与1K
上图为逻辑分析仪抓取到mosi的数据;
其中A5表示,此时mcu要读取到的是寄存器0x25的数据,也就是陀螺仪的数据,随后的6个ff,也就是读取陀螺仪6个字节的数据;
而9F表示,此时mcu要读取到的是寄存器0x1F的数据,也就是加速度的数据;
但是,每次需要间隔63个字节,才会读取一次加速度数据,
也就说,每次连续读取8次陀螺仪数据,才会去读取1次加速度数据;
正好也符合陀螺仪数据是8K,而加速度数据是1K的配置;
(4)先读加速度后读陀螺仪
大概每次7中断之后,第8次中断会先读取加速度数据,0x9F,
然后再读取一次陀螺仪数据,0xA5;
所以第8次中断间隔的125us中,会有两次spi通信;
(5)spi读取距离中断上升沿不等的现象
在上一篇的imu数据读取的文章中说到,当imu触发mcu的外部中断时,mcu才发起一次dma数据读取;但是从图中可以发现,从下图可以看到,实际的每次的spi数据读取距离中断上升沿的时间都是不同的;