[其他ST产品] LIS3DH IIC 多字节连续读取寄存器 BUG 问题求助

[复制链接]
2284|11
 楼主| 生来孤独 发表于 2017-11-30 14:21 | 显示全部楼层 |阅读模式
本帖最后由 生来孤独 于 2017-11-30 14:39 编辑

描述:调试 ST 的三轴加速度传感器 LIS3DH 。采用 STM8L152 硬件 IIC 通信。单字节读写均正确,但多字节连续读取数据错误 ,奇怪
捕获.PNG IIC 多字节读写描述

whoami.PNG 单字节读取 WhoAmI 寄存器 没问题。然后写配置寄存器 REG0-6全都正确如下
ww.PNG 截图只截取了一部分,写完配置寄存器之后又读出来验证了一下,单字节读出来全部正确,时序图不再上传。但是连续读取出来数据确有问题,如下图。
rr.PNG 按照程序,这里应该读出来是 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);   //读出来

最后上传两份官网的最新资料。

en.LIS3DH Datasheet - production data.pdf

1.02 MB, 下载次数: 26

zh.应用笔记.pdf

1.12 MB, 下载次数: 46

nobleliom 发表于 2017-11-30 20:06 | 显示全部楼层
连续读写的指令是否正确呢?仔细对比数据手册看看。
 楼主| 生来孤独 发表于 2017-12-2 10:18 | 显示全部楼层
最后,自己换成SPI通信了 ,但问题任然没有解决。
liuwanwei 发表于 2017-12-2 11:40 | 显示全部楼层
连续读取的话,地址寄存器最高位要设置为1,你有设置吗?
 楼主| 生来孤独 发表于 2018-1-23 10:23 | 显示全部楼层
liuwanwei 发表于 2017-12-2 11:40
连续读取的话,地址寄存器最高位要设置为1,你有设置吗?

谢谢回复,有设置为1,表示为读取
kkzz 发表于 2018-1-23 14:54 | 显示全部楼层
这个ST提供的有代码
minzisc 发表于 2018-1-23 14:55 | 显示全部楼层
没做过多个字节的连续读取。
xiaoyaodz 发表于 2018-1-23 14:55 | 显示全部楼层
kkzz 发表于 2018-1-23 15:09 | 显示全部楼层
使用STM32F3上的代码能够使用。
minzisc 发表于 2018-1-23 15:09 | 显示全部楼层
正常不都是字符的单个读取吗?
xiaoyaodz 发表于 2018-1-23 15:09 | 显示全部楼层
LIS3DH的驱动,应用接口
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部