我有一个设备通过i2c协议进行通信。该器件的寄存器地址为16位,但linux i2c-tools仅支持8位地址。但我找到了处理它的东西。
例如,要读取0x0006地址的寄存器,我使用以下方法: (假设busId为0,设备i2c地址为0x48) i2cset -y 0 0x48 0x00 0x06(此命令将寄存器地址设置为0x0006) i2cget -y 0 0x48(此命令值0xBA为true) 当我再次调用i2cget -y 0 0x48命令时,它将返回下一个地址的值。
写作操作正如我所料。但是当我尝试写入同一个寄存器时,我失败了。我尝试以下命令:
i2cset -y 0 0x48 0x00 0x06 0xBA 0x0B i
此命令不会返回错误。但是当我再次读取寄存器时,我看到寄存器没有变化。
我使用的设备是AP0100CS。寄存器地址是可写的。我不知道i2cset有什么问题。