ADIS16448集成了陀螺仪、加速度计、磁力计及气压计为一体的IMU模块,我在这里总结下此模块的使用及调试经验。
首先说下硬件环境:MCU为TMS320C6722(DSP);IMU为ADIS16448;数据传输接口为SPI通信,五线连接:SIMO,SOMI,CLK,CS(片选),第五根线为IMU数据准备好引脚。
ADIS16448模块的使用相对较为简单,手册也只有24页的长度,相对DSP及ublox的手册阅读工作量来说小得多。
一、数据读取方式
ADIS16448提供了两种方式将数据传输给MCU。方式一为single register read,也就是由MCU向ADIS16448发送获取数据的指令。比如想获取加速度计x轴方向的数据,就发送一条读取加速度计x轴方向的数据地址的指令,这样ADIS16448就会向MCU返回加速度计x轴方向的数据。方式二为Burst Read,指ADIS16448定周期准备好数据,一旦准备好数据就将上面提到的数据准备好引脚置高(也就是产生一个高电位脉冲)从而使MCU产生外部中断,在外部中断中接收ADIS16448发送过来的数据,这些数据包含了陀螺仪、加速度计、磁力计及气压计的数据。
从上面的简述中可以分析得知,single register read模式读取数据的主动性由MCU掌控,MCU可以在任意时间读取任意传感器的数据,但是只能每次只能读取一个传感器的单方向数据;Burst Read模式读取数据的主动性在于ADIS16448,因为IMU只有将数据准备好,向MCU发送脉冲信号使其产生外部中断,MCU才能接收数据,但是好处是将所有传感器的数据一次全部传送过来。
二、通信设置
1.对于SPI的设置,ADIS16448做了规定:
这些设置对于ADIS16448来说是不可编程的,所以在编写MCU方的SPI驱动时要注意。
2.这里有一个注意事项: