传感器i2c与arduino连接_Arduino中进行I2C通信发送数据案例分析

在之前的文章中,我们介绍了Arduino之间的SPI通信。今天我们将学习另一种串行通信协议:I2C(内部集成电路)。比较I2C和SPI,I2C只有两条线,而SPI使用四条,I2C可以有多个主机和从机,而SPI只能有一个主机和多个从机。因此,如果项目中有多个微控制器需要作为主机,那么就采用I2C。I2C通信通常用于与陀螺仪、加速度计、气压传感器、LED显示器等进行通信。

在本篇文章中,我们将使用I2C总线在两个arduino开发板之间进行通信,并且使用电位计将值(0到127)相互发送。这些值将显示在连接到每个Arduino的1602液晶显示屏上。文章中,一个Arduino开发板作为主机,另一个开发板作为从机。现在让我们从关于I2C通信的介绍开始吧。

什么是I2C通信协议?

术语IIC代表“InterIntegratedCircuits”。它通常表示为I2C或IIC,甚至在某些地方表示为2线接口协议(TWI),但它们代表的含义是一样的。I2C是同步通信协议,也就是说共享信息的设备必须共享公共时钟信号。它只有两根线来共享信息,其中一根用于时钟信号,另一根用于发送和接收数据。

I2C通信如何工作?

I2C通信最初由Phillips引入。如前所述,它有两根导线,这两根导线将连接在两个设备上。这里一个设备称为主机,另一个设备称为从机。通信应该并且将始终发生在一个主机和一个从机之间。I2C通信的优点是可以将多个从机连接到一个主机。

a1942f948f7b6ac3680e1f3a1138f910.png

完整的通信通过这两条导线进行,即串行时钟(SCL)和串行数据(SDA)。

●串行时钟(SCL):与主设备共享主设备生成的时钟信号

●串行数据(SDA):在主机和从机之间发送数据。

在任何给定时间,只有主机才能启动通信。由于总线中有多个从站,因此主站必须使用不同的地址来引用每个从站。当被寻址时,只有具有该特定地址的从机将应答该信息,而其他地址继续退出。这样我们就可以使用相同的总线与多个设备进行通信。

I2C的电压电平未预定义。I2C通信灵活,意味着由5v电源供电的器件,可以使用5v用于I2C,3.3v器件可以使用3v进行I2C通信。但是,如果两个运行在不同电压下的设备需要使用I2C进行通信呢?5VI2C总线不能与3.3V器件连接。在这种情况下,电压移位器用于匹配两个I2C总线之间的电压电平。

有一些条件可以构成传输。传输的初始化从SDA的下降沿开始,在下图中定义为“START”条件,其中主机将SCL设为高电平,同时将SDA设置为低电平。如下图所示,

b4c04ff27a5f616b6b50c72d467d543d.png

SDA的下降沿是START条件的硬件触发。在此之后,同一总线上的所有设备都进入监听模式。

同样的,SDA的上升沿停止传输,在上图中显示为“STOP”条件,其中主机将SCL置为高电平并且还释放SDA以变为高电平。因此,SDA的上升沿会阻止传输。

  • 4
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值