The problem is regarding the IMU BMI270 (shuttleboard) which I cannot read via SPI (4wire).
I have a BMG250 where I can read the CIP_ID register properly. I use the same code to read the BMI270
CHIP_ID register but the response of the Chip is zero (checked with an oscilloscope).
Is there a significant difference regarding the SPI communication setup procedure between both devices?
SPI clock at 1MHz, Dummy read of register CHIP_ID in order to activate SPI according to datasheet
Solved! Go to Solution.
Checked the SPI reading diagram in the datasheet of BMI270 (on about page 142), below is what is noticed as the subtle difference from BMG250.
With BMI270, the first byte you read is a dummy byte, so in order to read the actual chip id, you need to read 2 bytes instead, and the 0th byte is the dummy byte while the 1st byte is the actual chip_id.
In general, when reading data from BMI270 using SPI, to get n bytes of meaningful data, you need to read (n + 1) bytes from the device and discard the dummy byte you read.
This is actually reflected and taken care of in the sensor API c code on github: https://github.com/BoschSensortec/BMI270-Sensor-API
It's recommended to use the above-mentioned API code for operating the device.
Great advice!!! Indeed, that´s the solution.
I overlooked that difference in the SPI communication.
Thank you very much!