Raspberry Pi SMBus支持组合数据传输?

2024-09-26 17:58:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用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库中找不到任何允许我使用组合数据传输的函数,因此目前我使用的是“总线写入字节函数模拟“组合数据传输”。下面是规范的屏幕截图。在

ACS764 Datasheet Snapshoot

我现在的问题是如何使用pythonsmbusi2c库来执行ACS764芯片的“组合数据传输”读取?在

请告知,谢谢。在


Tags: the代码import规范outputdatagpio传感器
1条回答
网友
1楼 · 发布于 2024-09-26 17:58:50

在谷歌搜索了几天之后,我终于找到了上述问题的解决方案。答案是,Raspberry I2C接口支持“组合数据传输”(也称为重复启动),但默认情况下不启用。您需要通过以下命令启用设置。在

sudo su -
echo -n 1 > /sys/module/i2c_bcm2708/parameters/combined
exit

有关详细信息,请参阅i2c repeated start transactions 。在

基于smbus规范,支持重复启动的函数是i2c_smbus_read_i2c_block_data(),在Python库中称为read_i2c_block_data()。在

有关详细信息,请参阅SMBus Protocol Summary。在

下面是我的示例代码,从ACS764霍尔效应传感器芯片读取数据,需要重复启动。在

^{pr2}$

我很高兴找到解决办法,并希望那些面临同样问题的人能从这篇文章中得到帮助。谢谢大家!在

相关问题 更多 >

    热门问题