我尝试使用ACS764霍尔效应电流传感器与树莓皮。该传感器将感测电流并通过芯片内置的I2C接口返回电流值。我已经按照说明书把电路连接好了。在我的Raspberry-Pi Python代码中,我可以向传感器写入和读取数据,但是我读取的数据总是相同的值。在
下面是我读取传感器的简单代码:
import datetime
import smbus
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(37, GPIO.OUT) #Connected to the ACS764 Freeze pin
bus=smbus.SMBus(1)
#Freeze the data
GPIO.output(37, True)
#Read the values
bus.write_byte(0x60, 0x00) #Simulate the combined data transmission format
data=bus.read_i2c_block_data(0x60, 0x00)
print data
#Unfreeze the data
GPIO.output(37, False)
GPIO.cleanup()
然而,当我运行脚本时,值总是显示相同的,即使我已经改变了当前要被感知的值。在
^{pr2}$根据ACS764规范,要读取传感器值,需要使用“组合数据传输”格式。但是,我在Python SMBus库中找不到任何允许我使用组合数据传输的函数,因此目前我使用的是“总线写入字节函数模拟“组合数据传输”。下面是规范的屏幕截图。在
我现在的问题是如何使用pythonsmbusi2c库来执行ACS764芯片的“组合数据传输”读取?在
请告知,谢谢。在
在谷歌搜索了几天之后,我终于找到了上述问题的解决方案。答案是,Raspberry I2C接口支持“组合数据传输”(也称为重复启动),但默认情况下不启用。您需要通过以下命令启用设置。在
有关详细信息,请参阅i2c repeated start transactions 。在
基于smbus规范,支持重复启动的函数是i2c_smbus_read_i2c_block_data(),在Python库中称为read_i2c_block_data()。在
有关详细信息,请参阅SMBus Protocol Summary。在
下面是我的示例代码,从ACS764霍尔效应传感器芯片读取数据,需要重复启动。在
^{pr2}$我很高兴找到解决办法,并希望那些面临同样问题的人能从这篇文章中得到帮助。谢谢大家!在
相关问题 更多 >
编程相关推荐