通过I2C与SAMD21通信时无法读取BNO085有效数据的问题
无法从BNO085读取有效数据,仅收到广告数据包
我将BNO085与SAMD21G18A控制器通过I2C同步通信连接,SERCOM1的I2C速率设为100KHz,处理器运行频率为8MHz,目标是通过传感器的SHTP协议读取陀螺仪和加速度计数据。
I2C初始化代码
i2c_m_sync_get_io_descriptor(&SYS_I2C_BUS, &io); i2c_m_sync_enable(&SYS_I2C_BUS); i2c_m_sync_set_slaveaddr(&SYS_I2C_BUS, I2C_Address_of.IMU_BNO, I2C_M_SEVEN); //Address = 0x68
尝试接收数据时,始终收到如下广告通道数据包:
根据传感器手册,此数据包说明控制器与传感器已建立通信,但后续操作无法获取有效数据:
- 软复位传感器:
shtpData[0] = 1; BNO085_send_packet(CHANNEL_EXECUTABLE, 1); //CHANNEL_EXECUTABLE = 1, size = 1 - 切换至ON模式退出睡眠:
shtpData[0] = 2; BNO085_send_packet(CHANNEL_EXECUTABLE, 1); //CHANNEL_EXECUTABLE = 1, size = 1 - 发送产品ID请求:使用
SHTP_REPORT_PRODUCT_ID_REQUEST(0xf9)指令,仍仅收到上述广告包。
已用逻辑分析仪捕获I2C通信波形。
请问我遗漏了哪些关键步骤?该如何从BNO085读取正确的陀螺仪、加速度计数据?
内容的提问来源于stack exchange,提问作者Diracx
相关产品推荐
相关产品推荐

