在VR/AR中的“眼觀六路耳聽八方”這個文章中我們有介紹到九軸傳感器融合算法的芯片BNO085,這里特意針對此芯片的SH2協議通訊數據進行解析,客戶主控MCU與BNO085的SPI,UART,IIC 中的任何一個接口驅動成功后,直接讀寫BNO085的相關傳感器數據:
1:1000-3625 SH-2 Reference Manual v1.2 文檔命令舉例說明(一般游戲ARVR 客戶讀取0X29四元素數據后自己轉換成歐拉角等):數據手冊33頁也有說明(2.2.5到2.2.7章節)。 6.5.18 Rotation Vector (0x05) 這個是沒有防抖算法的傳感器輸出的九軸四元數數據。 6.5.19 Game Rotation Vector (0x08) 這個是沒有防抖算法的傳感器輸出的六軸四元數數據。 6.5.42 ARVR-Stabilized Rotation Vector (0x28)當設備運動時,累積誤差被糾正,這限制了數據不連續或跳躍的出現。這個是有防抖算法的穩定的傳感器數據輸出的九軸四元數數據。 6.5.43 ARVR-Stabilized Game Rotation Vector (0x29)這個當設備運動時,累積誤差被糾正,這限制了數據不連續或跳躍的出現是六軸數據輸出。這個是有防抖算法的穩定的傳感器數據輸出的六軸四元數數據。 2:客戶驅動完成后,MCU獲取BNO085的6.5.18 Rotation Vector (0x05) 的數據,先復位或者上電使能傳感器,讀寫傳感器數據,參考數據手冊參考第5 . 2 . 2節寫/讀BNO08X數據表 直接寫如下字符串21個字節: 0x15 0x00 0x02 0x010xFD0x050x00 0x00 0x000x10 0x270x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 So if you would just like to get 200Hz(5000uS) AV/VR Stabilized Game Rotation Vector from BNO085, then you can just send the following commands from MCU to BNO085: 0x15 0x00 0x02 0x010xFD0x290x00 0x00 0x000x88 0x130x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 解釋:(這個命令是設置ROTATION VECTOR 加頭四個字節SHTP Header的數據格式) 0x15 0x00 0x02 0x01(shtp header 四個字節)SHTP LSB=0X15表示數據長度21字節,SHTP MSB=0X00,SHTP Channel=0X02,SHTP Sequence number=0x01 SHTP Channel 參考數據手冊23頁說明 0xFD第五個字節表示 Report ID=0xFD 參考數據手冊25頁解釋,SH2文檔36頁6.2 Summary 0x05 0x00 說明:0x05代表旋轉矢量6.5.18 Rotation Vector (0x05); 0x290x00 說明:0x29 代表6.5.43 ARVR-Stabilized Game Rotation Vector (0x29) 參考1000-3625 SH-2 Reference Manual v1.2 文檔命令6.5.18.2 Input Report 0x00 0x000x10 0x270x 2710代表10,000us單位( 100赫茲)。0x00002710 0x00 0x000x88 0x13 0x 1388代表20,000us單位( 200赫茲)。0x00001388 參考數據手冊The report ID for the accelerometer is 0x1 and a period of 60ms (or 60,000 μs) equates toa report interval of 0x0000EA60. 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 這里是10個字節 參考數據手冊參考第5 . 2 . 2節寫/讀BNO08X數據表 查找1000-3625 SH-2 Reference Manual v1.2 文檔命令數據格式 查找數據手冊如下說明: A report including SHTP header will have the format as seen in: 查找SH2文檔截圖如下:
發布評論請先 登錄
相關推薦
評論