You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过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

尝试接收数据时,始终收到如下广告通道数据包:
BNO085广告通道数据包

根据传感器手册,此数据包说明控制器与传感器已建立通信,但后续操作无法获取有效数据:

  • 软复位传感器:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:42:56