🥬Arduino和Raspberry Pi之间的I2C通讯
Arduino | Raspberry Pi | I2C
介绍
Arduino和Raspberry Pi都支持I2C,但是,由于它们无法在相同的逻辑电压电平下工作,因此连接它们可能会带来特殊的挑战。 Raspberry Pi使用3.3伏逻辑,而大多数Arduino(包括Arduino Uno)使用5伏逻辑。
但是,尽管存在这些电压差,仍可以将两个设备连接。实际上,有两种方法可以做到这一点。
I2C电平
在研究混合多个具有不同逻辑级别的I2C器件的问题之前,最好先确保我们熟悉i2c总线及其运行方式。
如果您需要有关I2C总线的详细说明,请参阅本系列的第一篇文章。如果您只需要快速更新,请继续阅读。
I2C操作
作为快速回顾的I2C或“内部集成电路总线”,是一种在两个或多个设备之间交换串行数据的方法。 I2C电路由一个总线“主”和一个或多个总线“从”组成。
总线使用四个连接:
SDA –串行数据线。这是一条双向数据线,处理主站和从站之间的所有通信。
SCL –时钟线。这提供了时钟信号以同步SDA线上的数据。
VCC –这是逻辑电平参考电压,通常为5伏或3.3伏。在许多配置中,此电压还用于为从设备供电。
GND –接地参考。
主机和从机的配置如下所示。
注意上拉电阻的使用。这些电阻将逻辑和时钟电平拉至VCC参考电压的电平。了解与混合逻辑电平的设备接口时,这一概念非常重要。
另一个重要概念是由主机来确定逻辑电压电平。当我们开始连接Raspberry Pi和Arduino时,请记住这一点。
混合逻辑电平
5伏逻辑(有时也称为“ TTL逻辑”)已经存在了数十年。 1970年代的原始微处理器使用了这种类型的逻辑,就像之前的离散CPU设计一样。
尽管有5伏逻辑,但5伏逻辑仍然很普遍,标准USB电压为5伏并非偶然(尽管较新的USB-C可以利用多个电压)。
3.3伏逻辑器件也已经存在了很多年,它们由于消耗较少的电流而很受欢迎,因此非常适合电池供电的器件。
将两个逻辑系列连接在一起的规则非常简单:
您可以将3.3伏输出连接到5伏输入。
您不得将5伏输出连接到3.3伏输入。
有趣的是,连接到5伏输入时,3.3伏逻辑信号能够正常工作。 这是因为大多数5伏逻辑芯片的阈值都小于3伏,换句话说,3伏或更大的逻辑信号将被识别为有效信号。
施密特触发器是一个例外,该逻辑门的门限非常小,为零和一。这种类型的门通常用于“清理”嘈杂的逻辑线,不会被3.3伏信号触发。
直接连接
双向逻辑电平转换器
Raspberry Pi I2C设置
Arduino 从站 I2C Sketch
Raspberry Pi 主站 I2C 代码
Last updated