🥬Arduino多传感器I2C通讯
Arduino | I2C | 传感器
Arduino I2C Arduino
Arduino I2C 传感器
介绍
在使用I2C的系列的第一部分中,我们讨论了I2C是什么以及如何实现它。我们还连接了几个Arduino,并使用I2C和Arduino Wire Library在它们之间发送数据。
我们将研究I2C用来传输数据和建立从机地址的协议。我们还将构建自己的I2C传感器。
I2C内部
您将在上一篇文章和视频中回忆到,I2C是一种在集成电路,传感器,微型计算机和微控制器之间交换数据的方法。它使用两根电线进行通信,另外两根电线用于电源和接地。
这两个通信连接如下:
SDA –这是串行数据线。 I2C是一种单向系统,因此数据在任何给定时刻只能沿一个方向传播。
SCL –时钟信号,用于同步数据。
I2C按照主机和从机的原理工作,主机提供时钟信号并协调所有通信。在任何给定时刻,只有一个设备可以成为主设备,可以有多个从设备。
I2C寻址
每个I2C从站都有一个在I2C总线上唯一的地址。主站没有地址。主设备使用该地址与从设备(一次只能与一台设备)进行通信。
大多数I2C设备使用7位寻址方案,一些较新的设备使用10位地址。
在更常见的7位寻址系统中,低位(位0)用于确定主机是要向从机发送数据还是从从机读取数据。
如果位0为高电平,则主机请求从机读取数据。
如果位0为低电平,则主机将向从机写入数据。
其余的7位是主机要与之通信的从机的I2C地址。
保留地址
理论上,使用7位寻址将最多允许128个地址。可能超出您的项目所需。但是,实际上并非如此。
I2C总线上实际上只有“ 112个”可用地址,因为有几个保留地址。 主机在呼叫所有I2C设备时会使用其中的几个地址,一个地址用于更改为10位寻址模式,另外几个地址则留作将来使用。
I2C总线组织提供了下表的数据。如果要构建I2C设备,则应避免使用这些地址,因为它们是保留的:
分配地址
除了保留的地址外,您还需要避免使用I2C总线实现中使用的另一个I2C设备的地址。通常,这仅是确定正在使用的地址,将来可能使用的地址,然后为您的自制设备选择一个无冲突的地址即可。
但是,如果要创建供其他人使用的I2C设备,则地址选择将变得更具挑战性。如果您要开发商业产品,那么恩智浦的I2C总线委员会可以为您分配地址(收费)。否则,对于业余爱好和非营利性项目,您自己可以决定。
奇怪的是,没有I2C总线分配的“主列表”。
I2C协议
发送数据
Arduino I2C多传感器
Arduino I2C Raspberry Pi
Last updated