2024年3月22日 星期五

mpu9250檢查磁力計的i2c address

最近上課用新的IMU: MPU9250 (其實這個也不新了 QQ)

不過跑程式的時候, 有人會遇到Remote I/O Error

仔細檢查後, 發現是磁力計的部分有回報錯誤, 把磁力計的function關閉就可以讀取acc + gyro了


之前的GY801, 可以直接用sudo i2cdetect -y 查詢acc, gyro, mag, baro各自的I2C位址

可是MPU9250不行, 只能找到0x68的位置


後來閱讀datasheet的時候, 看到bypass mode的設定方式
> 啟用bypass可讓System Processor能直接管理、存取與控制連接在MPU-9250上的auxiliary sensor

回頭看一下python code跟sample code, 可以在終端機裡面設定這個模式:

以下都是在python環境下執行 (終端機輸入python後)
>>> import smbus
>>> bus = smbus.SMBus(1)
>>> bus.write_byte_data(0x68, 0x37, 0x02)

然後再開另一個終端機執行sudo i2cdetect -y 1

下圖是正常的mpu9250 (可提供9軸資訊)
image.png

下圖則是有問題的mpu9250, 只能讀取acc+gyro
會發現這邊只有0x68, 沒有磁力計的0x0c
image.png

沒有留言: