01-03-2024 10:57 AM
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?
01-16-2024 08:08 AM
Hi RajTalashilkar,
BNO085 is the product of CEVA Technologies, not the product from Bosch Sensortec.
You can find Bosch sensortec product from https://www.bosch-sensortec.com/products.