python-3.x 如何使用wiringpi?

lsmepo6l  于 2023-01-22  发布在  Python
关注(0)|答案(1)|浏览(126)

我正在用raspberry pi3b+和si7021来获取温度和湿度。但是现在我遇到了一个问题,我不知道如何正确地使用wiringpi。
这是我的代码:

import sys
import time
import wiringpi

I2C_ADDR = 0x40
SI7021_REG_NO_HOLD_HUMIDITY = 0xF5
SI7021_REG_NO_HOLD_TEMPERATURE = 0xF3

wiringpi.wiringPiSetup()
fd = wiringpi.wiringPiI2CSetup(0x40)
#fd = wiringpi.wiringPiI2CSetupInterface("/dev/i2c-0", I2C_ADDR)
while True:
    try:
        print(wiringpi.wiringPiI2CWriteReg8(fd,0x40,0xF3))
        time.sleep(0.3)
        print(fd, wiringpi.wiringPiI2CReadReg8(fd, 0x40))
       # print(wiringpi.wiringPiI2CRead(0x40))
        time.sleep(0.5)
    except KeyboardInterrupt:
        sys.exit(0)

问题是在wiringpi.wiringPiI2CWriteReg8(fd,0x40,0xF3)wiringpi.wiringPiI2CReadReg8(fd, 0x40)执行后我总是得到0或负值。根据他们的手册,这意味着一个错误。
我很确定我的连接是正确的,因为我可以使用i2cget来获得正确的值。有人能告诉我代码中的错误吗?提前感谢。

avwztpqn

avwztpqn1#

datasheet中提到的从机地址已经在wiringPiI2CSetup(0x40)调用中传递到wiringpi库。您无需重复,它已作为fd隐式传递。给定wiringpi documentation,您尝试将寄存器0x40设置为值0xF3。相反,您应该使用wiringPiI2CWrite来发出命令。之后类似地使用wiringPiI2CRead

相关问题