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

标签 python raspberry-pi3 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]), I2C.Message([0x00], read=True)]
i2c.transfer(DFLT_ADDRESS,R)
print(R[1].data[0])

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

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

最佳答案

也许你可以试试我在我的 raspberry pi zero 上使用的这段代码:

# coding=utf-8
# date : 25/05/2021
# dossier : piPeri
# fichier : pP_readByte01.py
# check the result with these commands : 
# i2cset -y 1 0x51 0x10 0x01
# i2cget -y 1 0x51
# 3x times 

from periphery import I2C

print(" Read 3 bytes starting at register address 0x1001 of EEPROM at I2C address 0x51 ")


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

# create array to hold received data ( 3 bytes in my case )
dataRX = [0,0,0]

# create message to place 16 bits in memory register of eeprom
msgWritePointer = I2C.Message([0x10,0x01],read=False)

# create message to read data according to length of array 'dataRX'
msgRead = I2C.Message(dataRX,read=True)

# messages are assembled, order is important 
msgs = [msgWritePointer, msgRead]

# call transfer function 
i2c.transfer(0x51, msgs)

# print received bytes
for i in range(0,len(msgs[1].data)):
    print(hex(msgs[1].data[i]))

i2c.close()

关于python - 除了文档之外,是否有 python-periphery 库 i2c 代码示例或详细说明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63843243/

相关文章:

python - 为什么在我的 Beaglebone Black 上运行此 i2c 示例代码时会出现 IOError?

python - 数据传输错误 I2C RasPi->Arduino

python - 通过kaggle内核中的代码生成的文件存储在哪里?

python:与 pandas 一起工作。获取计数

python - 从 Django 中的模型发出加载对象

python-3.x - 使用 python3 在 Raspberry Pi 上打开和关闭带有 Tkinter GUI 的显示

android - Node.js - 结束错误后写入

javascript - TypeError : serialport. parsers.readline 不是函数

c++ - i2c smbus* 函数在 centos 7 i2c-dev.h 上不存在

python - 如何从列表中为数据框的特定列名附加后缀