目前我们正在尝试在我们的项目中使用 LSM6DSO(6 轴 MEMS 传感器)。
我们能够使用 ST 适配器板 STEVAL-MKI159V1 成功测试 LSM9DS1(9 轴 MEMS 传感器),我们与它的
通信没有任何问题,并且也获得了非常好的结果。
对于此适配器板,我们连接了:
-Vdd = 3.3v
-VddIO = 3.3v
-SDO = SPI 味噌
-SDA = SPI MOSI
-SCL = SPI时钟
-CS = SPI 片选(取反)
当然还有接地引脚
每当我们通过 SPI 发送命令 0x8F 以读取 WHO_AM_I 寄存器(寄存器地址 0x0F)时,我们都会得到正确的响应,即来自加速度计/陀螺仪模块的 0x68 和来自磁力计的 0x3D。这些是 LSM9DS1 数据表中描述的正确值。
现在我们尝试与 LSM6DSO(使用 ST 适配器板 STEVAL-MKI196V1)进行通信,方法是进行与 LSM9DS1 完全相同的连接。
-Vdd = 3.3v
-VddIO = 3.3v
-SDO = SPI 味噌
-SDA = SPI MOSI
-SCL = SPI时钟
-CS = SPI 片选(取反)
还有接地引脚
但每当我们发送 SPI 命令 0x8F 以读取 WHO_AM_I 寄存器(寄存器地址:0x0F)时,我们总是收到 0x50 - 我们附上了数字分析仪屏幕截图。根据 LSM6DSO 数据表,预期结果应为 0x6C(而不是 0x50)
现在我们在以下板子上测试了 WHO_AM_I 命令:
1- STEVAL-MKI197V1(基于 LSM6DSO 传感器)
2-STEVAL-MKI215V1(基于LSM6DSO32传感器)
3-STEVA:-MKI196V1(基于LSM6DSO传感器)
当我们发送 WHO_AM_I 命令时,所有这 3 个板都返回 0x50。知道预期结果应该是0x6C。
值得一提的是:我们使用 LSM6DS3(使用 STEVAL-MKI160V1 适配器板)进行了类似的测试,我们得到了 WHO_AM_I 命令的正确值 0x69。
我们还注意到,在
论坛上,还有一位同事也对这个传感器有类似的问题。
线程链接:https ://community.st.com/s/question/0D50X0000AFqjrRSQR/lsm6dso-spi-communication-problem
对他来说,Vdd 和 VddIO 的电压似乎不同。但在我们的例子中,Vdd 和 VddIO 都有 3.3v。我们的微控制器 DIO 电压为 3.3v。
我们想知道,是否缺少通过 SPI 与 LSM6DSO 和 LSM6DSO32 通信的内容?如果不是,那么这种情况下的问题是什么。
谢谢你!