我有一个设备通过 i2c 协议进行通信。设备的寄存器地址是16位,但Linux i2c-tools仅支持8位地址。但我找到了一些东西来处理它。
例如,要读取地址为0x0006的寄存器,我使用以下方法:(假设为busId0并且设备i2c地址为0x48)
i2cset -y 0 0x48 0x00 0x06 # this command sets the register address to 0x0006
i2cget -y 0 0x48 # this command the value 0xBA which is true
Run Code Online (Sandbox Code Playgroud)
当我再次调用该i2cget -y 0 0x48命令时,它返回下一个地址处的值。
写入操作按我的预期进行。但是当我尝试写入同一个寄存器时,我失败了。我尝试以下命令:
i2cset -y 0 0x48 0x00 0x06 0xBA 0x0B i
Run Code Online (Sandbox Code Playgroud)
此命令不会返回错误。但是当我再次读取寄存器时,我看到寄存器没有变化。
我使用的设备是AP0100CS。寄存器地址可写。我不知道 i2cset 有什么问题。
| 归档时间: |
|
| 查看次数: |
4259 次 |
| 最近记录: |