Raspberry Pi 作为从设备通过 I2C 发送多个字节时出现问题

问题描述 投票:0回答:0

我正在尝试在树莓派和微芯片之间进行双向通信,其中树莓派是奴隶。我目前的解决方案工作正常,除了树莓派似乎很难一次发送多个字节。

我目前的设置是树莓派在微控制器上设置一个 GPIO 引脚为高电平,告诉它开始交易。微控制器然后写入请求并基本上询问“怎么了?”通过 I2C 总线发送特定字节,然后发送读取请求。作为对此的响应,树莓派发送一个指令字节,基本上告诉芯片该做什么,这样它就知道下一次要读取多少字节以及采取什么行动。在几乎所有情况下,chipp 都会向树莓派发出某种写入请求。

这行得通,一切都很好,但问题是有时命令会重复。比如我告诉树莓派给它发command 0,command 0发送成功。接下来,我要求它发送命令 3。改为发送命令 0,然后如果我要求它再次发送命令 0,它将发送命令 3。我在发送命令之间也有很长的等待时间,以防止与树莓派内部的东西没有足够快地从 FIFO 中移除。

#This function is called every time i2c is received
def i2c(id, tick):
    global pi
    pi.write(GPIO, 0)
    s, b, d = pi.bsc_i2c(I2C_ADDR)
    if(b > 0):
            s, b, d = pi.bsc_i2c(I2C_ADDR, data=doI2CResponse(d, d[0]))
    return 1

doI2C_Respond 只返回一个数组,具体取决于微控制器所说的内容。在微控制器询问“怎么了”的情况下,它只返回一个数组,其中包含一个作为命令的元素。

raspberry-pi raspberry-pi3 i2c pigpio
© www.soinside.com 2019 - 2024. All rights reserved.