July 发表于 2014-4-8 15:27:44

LSM330DLC陀螺仪的I2C通信问题

最近弄了套STM32F103C8和LSM330DLC(6轴)的平台,要实现 两者间的I2C通信,调试过程中发现个矛盾:
MCU读取WHO_AM_I_G寄存器,返回的值是0x33,而datasheet中预设的值是0xd4,于是尝试了下写入其他值(不确定这个寄存器支不支持值写入改动),返回的仍然是0x33.
于是我怀疑I2C读出错,继续试验,往CTRL_REG1_A寄存器写入0x05的数据,然后接着读取此寄存器的数据,得到返回值0x05.在CTRL_REG2_A到CTRL_REG6_A的寄存器写入某些值,写入和读取返回的一致,I2C通信应该没问题。
回头继续读取WHO_AM_I_G寄存器,示波器抓取数据,软件获取到的0x33返回值和示波器抓取的数据一致,前面器件地址0x32和WHO_AM_I_G的地址0x0f波形也都正确,说明函数没问题。
为什么WHO_AM_I_G这个寄存器读取的值和datasheet的值不一致啊:o:o

模拟小悟空 发表于 2014-4-8 18:36:34

RE:LSM330DLC陀螺仪的I2C通信

你可否确认一下操作的是Gyro的部分而非Acc的部分?:o

pythonworld 发表于 2014-4-8 20:02:18

RE:LSM330DLC陀螺仪的I2C通信问题

新片子?是否被改写过?

wkuang 发表于 2014-4-9 00:00:05

RE:LSM330DLC陀螺仪的I2C通信问题

可以仔细看看datasheet,可能和芯片批次或者芯片子型号有关。从你的描述,I2C读写应该没有问题。

dzc2001 发表于 2014-4-9 11:02:12

回复:LSM330DLC陀螺仪的I2C通信问题

 你用逻辑分析仪抓一下,看看

那片清茶 发表于 2014-4-9 11:48:18

RE:LSM330DLC陀螺仪的I2C通信问题

看一下IIC的波形对不对。。

dlyt03 发表于 2014-4-10 20:57:26

RE:LSM330DLC陀螺仪的I2C通信问题

俺描述,通讯和函数都是正确的,是否是新片?如果是转手的,会不会是修改过的?

有缘于你 发表于 2014-4-10 22:09:21

RE:LSM330DLC陀螺仪的I2C通信问题

这个寄存器应该是不能自己修改的, 应该是一个芯片的系列号之类的

fengye5340 发表于 2014-4-20 10:27:22

回复:LSM330DLC陀螺仪的I2C通信问题

这个陀螺仪也支持SPI通信的,为了验证你的IIC通信是否正确,你可以改用SPI通信,再去读哪个WHO_AM_I_G寄存器,看看是否读出来的是0x33或者是DATASHEET的默认值0xD4.如果你读取的是前者,证明你的IIC总线没问题。

龙少-2056135 发表于 2014-4-23 11:46:47

RE:LSM330DLC陀螺仪的I2C通信问题

楼主的问题解决没有?
页: [1]
查看完整版本: LSM330DLC陀螺仪的I2C通信问题