I have interfaced BNO085 with SAMD21G18A controller via I2C synchronous communication running at 100KHz on SERCOM1 of controller and processor is running at 8MHz. I am trying to read Gyroscope and Accelerometer's data using SHTP protocol (reference manual). which the sensor employs. Here's how I am doing the I2C initialization: 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 When I try to receive data, I always get the following packet: From this reference manual, we can see that it is an advertisement channel of BNO085, It confirms that the communication is established with the controller. I tried soft resetting BNO085 using shtpData[0] = 1;
BNO085_send_packet(CHANNEL_EXECUTABLE, 1); //CHANNEL_EXECUTABLE = 1, size = 1 and I have turned the mode to 'ON' to take it out of sleep mode using shtpData[0] = 2;
BNO085_send_packet(CHANNEL_EXECUTABLE, 1); //CHANNEL_EXECUTABLE = 1, size = 1 When I try to read the Product_ID report using SHTP_REPORT_PRODUCT_ID_REQUEST(0xf9) I do not receive anything of the data rather the same thing as the above image. Here's a link of my I2C probing using logic analyser-> Waveforms What am I missing and how to read the correct data from BNO085?
... View more