本帖最后由 生来孤独 于 2017-11-30 14:39 编辑
描述:调试 ST 的三轴加速度传感器 LIS3DH 。采用 STM8L152 硬件 IIC 通信。单字节读写均正确,但多字节连续读取数据错误 ,奇怪。
IIC 多字节读写描述
单字节读取 WhoAmI 寄存器 没问题。然后写配置寄存器 REG0-6全都正确如下
截图只截取了一部分,写完配置寄存器之后又读出来验证了一下,单字节读出来全部正确,时序图不再上传。但是连续读取出来数据确有问题,如下图。
按照程序,这里应该读出来是 0x4f,0x02,0x03,0x04,0x00,0x00. 但是实际上读出来的时间都是0x4f,好像寄存器地址没有自动加一,单看时序也没有错误,不知是硬件问题还是我某些配置错误。部分程序如下:
bsp_iicWrite(LIS3DH_ADDR, LIS3DH_CTRL_REG0, 0x10);
bsp_iicWrite(LIS3DH_ADDR, LIS3DH_CTRL_REG1, 0x4f);
bsp_iicWrite(LIS3DH_ADDR, LIS3DH_CTRL_REG2, 0x02);
bsp_iicWrite(LIS3DH_ADDR, LIS3DH_CTRL_REG3, 0x03);
bsp_iicWrite(LIS3DH_ADDR, LIS3DH_CTRL_REG4, 0x04);
bsp_iicWrite(LIS3DH_ADDR, LIS3DH_CTRL_REG5, 0x00);
bsp_iicWrite(LIS3DH_ADDR, LIS3DH_CTRL_REG6, 0x00); //写进去,其他寄存器没有设置
bsp_iicMultipleRead(LIS3DH_ADDR, LIS3DH_CTRL_REG1, Data, 6); //读出来
最后上传两份官网的最新资料。
|