【问题标题】:How to read data from i2c using i2cget?如何使用 i2cget 从 i2c 读取数据?
【发布时间】:2014-05-08 20:11:30
【问题描述】:

我是嵌入式设备的新手,正在尝试了解如何使用 i2cget(或整个 I2C 协议)。

我使用的是加速度计 MMA8452,数据表显示从地址为 0x1D(如果我的 SAO=1,我认为这是指 I2C 总线位于我的 raspberrypi v2 的通道 1 上)。

从命令行,我输入

sudo i2cget -y 1 0X1d

返回

0X00

我认为这意味着我连接到了正确的设备。

所以现在,我想弄清楚如何从加速度计获取实际数据?

i2c 规范说

i2cget [-y] i2cbus chip-address [data-address [mode]]

所以我试过了

sudo i2cget -y 1 0x1D 0x01

其中 0x01 是 OUT_X_MSB。我不完全确定我期望得到什么,但我想如果我看到 0x00 以外的一些数据,我也许能够弄清楚。

我使用 ic2get 是不是错了?有没有更好的方法从 i2c 学习和获取数据?

我的加速度计芯片的数据表位于 http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Accelerometers/MMA8452Q.pdf

【问题讨论】:

标签: linux i2c


【解决方案1】:

我来得太晚了,但这可能对其他人有所帮助。每次使用 i2cget 时可能会得到 0x00 输出,因为您可能忘记设置某些模式。例如,我正在研究pcf8583,它是一个时钟和日历芯片,也可以用作计数器。 我的目标是用这个芯片作为计数器。它通过设备地址 0x51 连接到 i2cbus1。所以阅读数据表,我发现,当控制寄存器 0x​​00 中的模式设置为 0x20 时,芯片将作为计数器工作。我用于执行此操作的命令:

i2cset 1 0x51 0x00 0x20

现在,我可以使用以下命令从风传感器读取计数器脉冲:

观看 i2cget -y 1 0x51

watch 只是一个 linux 命令,它重复运行指定的命令并在标准输出上显示结果。

【讨论】:

    【解决方案2】:

    datasheet 可以清楚地看出,状态寄存器地址 0x00 的默认值为 0x00,所以我猜你做得很好。请参见数据表中的表 11 寄存器映射地址。

    您可以尝试读取寄存器地址 0x0D 处的设备 ID。当您读取此寄存器(0x0D)时,您应该得到值 0x2A。

    【讨论】:

      猜你喜欢
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      相关资源
      最近更新 更多