Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BNO055 not responding after MCU programming

    BNO055 not responding after MCU programming

    New Poster


    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?

    Kind regards

    6 REPLIES 6

    Community Moderator
    Community Moderator

    Hi Wholt,

    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?




    Do you mean reprogramming the BNO? or reprogramming your MCU ?
    For the latter case I would investigate first the status of the I²C communication pins during programming, your MCU might be sending garbage on the bus. If that is the case, keeping SDA high and toggling the SCL pin 9 times should reset it.

    Is your PIC one that requires a greater voltage to program the flash ? BNO055 can only support up to 3.6 volts, anything higher is not guaranteed.

    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.

    @Wholt wrote:

    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 ?