除了文档以外,是否还有python-periphery库i2c代码示例或详细说明?

问题描述

这是我在Stackoverflow中的第一个问题,如果我在编写此问题时犯了一个错误,请给我一个反馈以纠正自己。

我想为树莓派使用i2c通信。我想使用python-periphery(我知道那里有smbus)。在文档https://python-periphery.readthedocs.io/en/latest/i2c.html中,没有太多有关如何使用该库的信息。这是文档中的代码:

from periphery import I2C

# Open i2c-0 controller
i2c = I2C("/dev/i2c-0")

# Read byte at address 0x100 of EEPROM at 0x50
msgs = [I2C.Message([0x01,0x00]),I2C.Message([0x00],read=True)]
i2c.transfer(0x50,msgs)
print("0x100: 0x{:02x}".format(msgs[1].data[0]))

i2c.close()

我尝试用传感器进行写/读,并且成功。但是,在我的测试代码中,我使用了以下代码:

#Write to 0x09 register,this byte: 0x13
W9 = [I2C.Message([0x09,0x13])]
i2c.transfer(DFLT_ADDRESS,W9)

#Read from 0x09 register
R = [I2C.Message([0x09]),read=True)]
i2c.transfer(DFLT_ADDRESS,R)
print(R[1].data[0])

(我已经使用smbus来检查数据是否已写入寄存器并正确读取。因此,测试代码正在工作。)

我想知道的是该行中的0x100(我认为[0x01,0x00]这是0x100)在哪里:msgs = [I2C.Message([0x01,read=True)],当我尝试这样做时,它将0x00写入传感器中的寄存器。是因为我的传感器只有8位,但是我尝试写16位吗?那么,有人可以解释文档示例中发生的情况吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)