通信协议——I2C协议/IIC协议解析

本文详细介绍了I2C协议的基本概念、通信原理和时序。I2C是一种同步半双工通信协议,使用两根线(SCL和SDA)进行数据传输,支持主从模式,每个从设备有唯一的7位地址。通信过程中包括起始位、地址传输、应答信号、数据传输和停止位等步骤。此外,还提及了读写操作和应答信号的细节,以及I2C在实际应用中的例子,如SHT20温湿度传感器。
摘要由CSDN通过智能技术生成

目录

I2C协议概述

I2C通信原理

I2C通信时序


I2C协议概述

同步通信 半双工(分时) 串行传输 电平信号

特点:①有两根传输线(时钟线SCL、双向数据线SDA)

  ②主从模式:通信双方为主设备(Master)和从设备(Slave),在总线上的每一个设备都可以作为主设备或从设备,但一个总线上一般只有一个主设备和多个从设备。主设备是用来产生允许传输的时钟信号,并初始化总线的数据传输,所以主设备通常是CPU,而从设备只能被动相应主设备发起的通信请求,所以各种I2C接口芯片作为从设备使用

  ③I2C上每个从设备都有7bit的物理地址(MSB),且该地址是唯一的,固化在芯片上,可以从datasheet中获取。I2C地址中全0为广播地址,所以I2C总线上理论可以有2^7-1个从设备


I2C通信原理

通过对SCL和SDA线高低电平时序的控制,来产生协议信号进行数据的传递。在I2C总线上传递的每一位数据都由一个同步时钟脉冲相对应,即在SCL串行时钟的配合下,数据在SDA上从高位向低位依次串行传送每一位的数据。


I2C通信时序

1)起始位 (主设备发起)

I2C总线在空闲的时候,两根传输线都是高电平(通过上拉电阻变成高电平)。当要开始通信的时候,主设备就发起一个START(S)信号,告诉所有的从设备准备开始通信。当要结束通信的时候,主设备会发起一个STOP(P)信号结束此次通信。

  1. 起始位:当SCL保持高电平时,SDA产生一个下降沿,从而发起一个起始位
  2. 停止位:当SCL保持高电平时,SDA产生一个上升沿,从而发起一个停止位

 

2)读写地址

主设备在第一时序中发起START信号,在第二个时序要紧跟从设备的地址。除了从设备的地址7bit之外,还要加上一位作为读写位(0表示写、1表示读)。所以相当于从设备读地址是为一个字节,高7位是从设备物理地址,最低位表示读写状态。

例如: 0x44<<1 | 1 表示读 0x44<<1 表示写

 

3)应答信号

当主机在总线上传输从设备地址时,各个从设备开始进行地址匹配,如果地址匹配成功,那么从设备将发出ACK应答信号。当主机收到应答信号,则表示通信成功建立,否则表示寻址失败。

地址匹配从设备发送应答信号,在第九个时钟,然后这时候发送端是释放SDA线控制权(注意:这里是主设备内部上拉,不是外部上拉电阻,因为如果是外部,从设备无法下拉电阻,没有控制权),将SDA拉高,由接收方控制。

  1. 若要继续通信,从设备发出ACK应答信号,即是SDA为低电平
  2. 若不要继续通信,从设备发出NAK非应答信号,即是SDA为高电平

 

4)数据位收发

主机收到从设备应答信号之后,开始给从设备发送数据,SDA数据线上的每个字节必须是8位,并且是以MSB方式发送,每次传输的字节数量没有限制,但是每个字节发送完成之后,从机都要发送一个应答信号,代表是否继续通信。

发送数据位的时候,高电平代表数据位为1,低电平代表数据位为0。当传输的数据位发生变化时(由1变为0、由0变为1),此时必须要确保SCL保持低电平。

 

5)主机发送数据流程

  1. 当总线空闲的时候,主机发送一个起始信号S,代表开始通信
  2. 主机接着发送一个从机的物理地址7bit和一位读写控制位(0为写、1为读)
  3. 从机进行地址匹配,匹配成功后发送一个应答信号ACK(低电平为0)
  4. 主机收到应答信号,接着开始发送第一个字节的数据
  5. 从机收到数据后返回一个ACK
  6. 主机收到应答信号后,接着发送下一个字节
  7. 当主机发送完最后一个字节,并且接收到从机的应答信号时,接着发送一个停止信号P结束通信,并且释放总线
  8. 从机收到P信号之后也推出和主机之间的通信

 

6)主机接收数据流程

  1. 当总线空闲的时候,主机发送一个起始信号S,代表开始通信
  2. 主机接着发送一个从机的物理地址7bit和一位读写控制位(0为写、1为读)
  3. 从机进行地址匹配,匹配成功后发送一个应答信号ACK(低电平为0),接着开始发送第一个字节数据
  4. 主机收到数据之后向从机返回一个ACK
  5. 从机收到应答信号后,接着发送下一个字节
  6. 当主机接收完数据之后,向从机发送一个NAK信号,从机收到非应答信号后停止发送数据
  7. 主句发送ACK之后,发送一个停止信号结束通信,并释放总线

 

Ps:主机接收数据的时候,就是Master控制时钟线,当有一个脉冲的时候,从设备就发送一个位的数据。因为是MSB,所以收到一个数据就左移一位,主机收到一个字节的数据后,就给从机发一个应答信号。

典型代表:SHT20温湿度传感器、SHT30温湿度传感器、OLED显示屏、RTC、触摸屏

SHT20温湿度传感器工作原理

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值