一、連接圖
二、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/tree/master/6050_DMP。
我加了有關DMP的註釋,供閱讀。
四、DMP數據大概讀取流程
初始化mpu--初始化傳感器--開啓傳感器--設置FIFO的來源爲dmp--初始化dmp--加載dmp程序--重置FIFO,開啓dmp--讀取dmp數據。
產生dmp數據已準備中斷--檢驗FIFO的數據字節大小是否>=一個dmp packet的字節數大小--讀取dmp數據。