LSM6DSO issues with SPI
Hi ST community,
Currently we are trying to use the LSM6DSO (6 Axis MEMS sensor) in our project.
We were able to successfully test the LSM9DS1 (9 Axis MEMS sensor) using the ST Adapter board STEVAL-MKI159V1 and we had no issues communicating with it and were also getting very good results.
For this adapter board, we connected:
-Vdd = 3.3v
-VddIO = 3.3v
-SDO = SPI MISO
-SDA = SPI MOSI
-SCL = SPI clock
-CS = SPI chip select (Negated)
And ofcourse the Ground pin as well
And whenever we send the command 0x8F to read the WHO_AM_I register (Register address 0x0F) via SPI we get the correct response back which was 0x68 from the accelerometer/gyroscope module and 0x3D from the magnetometer. And these are the correct values that are described the LSM9DS1 datasheet.
Now we trying to communicate with the LSM6DSO (using ST Adapter board STEVAL-MKI196V1), by doing the same exact connections like the LSM9DS1.
-Vdd = 3.3v
-VddIO = 3.3v
-SDO = SPI MISO
-SDA = SPI MOSI
-SCL = SPI clock
-CS = SPI chip select (Negated)
And the Ground pin as well
But whenever we send the SPI command 0x8F to read the WHO_AM_I register (register address: 0x0F) we always receive back 0x50 - we attached a digital analyzer screenshot. According to the LSM6DSO datasheet the expected result should be 0x6C (and not 0x50)
Now we tested the WHO_AM_I command on the following boards:
1- STEVAL-MKI197V1 (based on the LSM6DSO sensor)
2-STEVAL-MKI215V1 (based on the LSM6DSO32 sensor)
3-STEVA:-MKI196V1 (based on the LSM6DSO sensor)
And all of these 3 boards are returning 0x50 when we send the WHO_AM_I command. Knowing that the expected result should be 0x6C.
One thing to mention is: We did a similar test using the LSM6DS3 (using the STEVAL-MKI160V1 adapter board) and we were getting the correct value 0x69 for the WHO_AM_I command.
We also noticed, that on the forum, there was another colleague who also had a similar issue with this sensor.
Link to the thread: https://community.st.com/s/question/0D50X0000AFqjrRSQR/lsm6dso-spi-communication-problem
For him, it seems that he had a different voltages for Vdd and VddIO. But in our case we are having 3.3v for both Vdd and VddIO. And our microcontroller DIO voltages are at 3.3v.
We wanted to know, if we are missing something to communicate via SPI with the LSM6DSO and the LSM6DSO32? If not, then what is the issue in this case.
Thank you!
