一、连接图
二、DMP使用介绍
官方并没有任何使用的介绍,只提供了源码。这里先给出我通过源码分析出来的和dmp有关的寄存器。
1. USER_CTRL
Bit7是DMP_EN(1:打开DMP),Bit3是DMP_RESRT(1:重置DMP)
2. INT_ENABLE
Bit1是DMP_RDY_EN(1:打开DMP中断,当DMP数据准备好后,触发该中断)
3. INT_STATUS
Bit1是DMP_RDY_INT(DMP data ready interrupt状态)
4. FIFO_EN
如果所有位都设为0的话,则将dmp的值传给FIFO。
三、源码
1.Arduino 源码 https://github.com/DTQX/Arduino-sample/tree/master/MPU6050_DMP6
下载下来可直接使用,readme中有使用说明。
2.MPU6050官方提供的代码
https://github.com/DTQX/Other-stuff.git
我加了有关DMP的注释,供阅读。
四、DMP数据大概读取流程
初始化mpu--初始化传感器--开启传感器--设置FIFO的来源为dmp--初始化dmp--加载dmp程序--重置FIFO,开启dmp--读取dmp数据。
产生dmp数据已准备中断--检验FIFO的数据字节大小是否>=一个dmp packet的字节数大小--读取dmp数据。