Reputation: 101
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?
Upvotes: 1
Views: 308
Reputation: 1
I faced the same problem recently, the steps below may solve,
Hope these steps would help.
Upvotes: 0