we are using the BNO055 in one of our applications. We combine the IMU with a PIC 16bit microcontroller on the same board.The MCU communicates with the IMU over I2C and we use the c library provided by Bosch. Overall the IMU works fine. Only the following problem occurs: When freshly programming the MCU, the BNO does not respond. Resetting the BNO over the RST line does not help. Only after unplugging the power of the board and therefore restarting the MCU and BNO, the BNO works as expected. After the intial power off/on the BNO works fine. Only right after programming and entering the application code, the BNO is stuck. Sadly this will cause a problem for us, when deploying an Over the air MCU firmware update, when the product is out in the field. Do you have an idea of why this issue occurs or maybe hint me in the direction of a solution?
Given that the firmware update procedure is not available online, you should have a direct contact to the local Field Application Engineer. In the meantime, can you describe the firmware version of the BNO055 and bootloader version that you are using?
Thanks for the quick reply. I had to do some further investigating.
I meant when we repogram the MCU. We are not trying to reprogram the BNO.
The BNO SW Rev. ID is: (MSB) 0x7,( LSB) 0x11. The BNO bootloader ID reads out as: 0x15
As it turns out it is not actually the repogramming of the MCU that causes this BNO failure but the resetting of the MCU ( which also takes place, when we reprogram the MCU). So when I pull the reset line of the MCU low and therefore the whole application program restarts, the BNO is unresponsive.
When we power-cycle the whole board, the BNO works fine.
During resetting I did not measure any significant noise on the SCL,SDA lines with a scope. After the MCU reset the I2C bus is not stuck, but the BNO just does not answer anymore. I tried toggling the SCL line while holding the SDA line high before writing to the BNO. I attached a screenshot of the logic analyzer output. And also a screenshot of the first i2c write to the BNO address, which then does not get ACKed.
We also have the BNO reset line connected to the MCU, but toggling the reset line of the BNO does not solve the problem. Was the toggling of the SCL line meant with a START or STOP condition? Or do you maybe have another idea?
Thank you and greetings
This is what I meant by toggling.
What is your startup sequence ? With BNO, VDD must be applied before VDDIO, otherewise the startup will fail. But if both voltages are present, and the (BNO) reset line is pulsed, then it makes a true reset of the (BNO)microcontroller and can recover from incorrect voltagae rails power-up order.
So when I pull the reset line of the MCU low and therefore the whole application program restarts, the BNO is unresponsive.
What happens to the I/O pins of your MCU when it is in a reset state ? Have you confirmed the status of the I/O pins during reset ?