I am interfacing with the BHI260AB shuttle board over I2C using a Cortex M0 as the host MCU (Adafruit Feather M0 board). I use the 'load_firmware.c' example code provided with the BHY2 Sensor API to upload firmware to the external flash chip on the shuttle board. The firmware file I included in my code is the 'Bosch_SHUTTLE_BHI260_BMM150-flash.fw.h' file supplied with the BHY2 Sensor API. After uploading the firmware and booting the BHI260AB from flash, the Error Value register reports a 0x12 error ("SHA hash mismatch") and the Boot Status register activates the 'Flash Verify Error' bit.
I have made the following modifications to the example code:
I have also created an alternative firmware file using the BHI260 SDK, using the default configuration that comes with the SDK. At 1 point this firmware was uploaded correctly and after booting from flash a valid kernel version was reported, but at the next attempt with the exact same code and firmware it reported the SHA hash mismatch again.
I am suspecting that some bytes are getting lost in data transfer to the flash chip, but I have no clue what could cause that. Any possible clues are appreciated!
For reference, these are my I2C read and write functions:
Solved! Go to Solution.
Did you try with APP2.0 + BHI260 shuttle + DD2.0 setup first for upload the FW to flash?
Or did you try with FW upload to RAM?
At the same time, did you adding the connetor to short J7 on the shuttle board? to boot from external flash, the hostboot pin should be low during power on. this means J7 should be shorted.
Thank you for your assistance!
What does this tell us about the problem? I2C data transfer seems to be alright, since it manages to upload the firmware to RAM without any problem. I can't imagine it's a power issue, the Feather M0 host board provides 500 mA peak current over its 3V3 output. Would the J2 and J3 configuration on the shuttle board make any difference? J2 is shorted, J3 is shorted as well between the middle and the outer pin (the outer pin being the one that is closest to pin 1 of the shuttle board connector).
J2 and J3 in their default positon. those should not be a problem.
What is the voltage level you supplied to BHI260AB shuttle board?
From your latest description, i will say the bus communication is correct. The RAM patch can be download and start correctly.
Also the SDK was tested before release for flash version. if you don't change any setting, it should work directly without issue.
Did you try with different BHI260AB shuttle board?
The voltage level must have been the problem. I was powering it from the 3V supply on the Feather M0, i.e. at 3.3 V. I completely overlooked the 1.8V prescription in the shuttle board flyer.
Would it work if I power the shuttle board at 1.8V with an external power supply? Or should the host MCU and the shuttle board be powered by the same power source for correct functioning? And what voltage should I use for the pull-up resistors of the I2C lines, 3.3V of 1.8V?