iic通信协议

iic通信协议

一.iic通信原理

在这里插入图片描述

IIC通信协议采用2条信号线,1条时钟线(SCL)和1条数据线(SDA),属于串行半双工通信。标准模式的传输速率为100Kb/s,快速模式为400Kb/s。总线上可以接多个从设备,从设备的地址必须不同。也可也接多个主设备,但同一时刻只能有一个主设备控制总线。最大设备数量受总线的最大负载电容400pf限制。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
在这里插入图片描述

IIC总线上有两种状态,一种是MOS管导通总线被拉低,另外一种是MOS关断总线被上拉电阻拉高,如下图所示

在这里插入图片描述

IIC的一些特点:

  • IIC是半双工,而不是全双工
  • IIC是真正的多主机总线,(对比SPI在每次通信前都需要把主机定死,而IIC可以在通讯过程中,改变主机),如果两个或更多的主机同时请求总线,可以通过冲突检测和仲裁防止总线数据被破坏
  • 起始和终止信号都是由主机发出的,连接到I2C总线上的器件,若具有I2C总线的硬件接口,则很容易检测到起始和终止信号
  • 起始信号后必须发送一个7位从机地址+1位方向位,用“0”表示主机发送数据**,**“1”表示主机接收数据。
  • 每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据
  • 起始信号是必需的,结束信号和应答信号,都可以不要

:实际使用中,一般是单片机作为主机,其它器件作为从机,单片机先向器件发送信息表示要读取数据,之后转变传输方向,器件发送数据到单片机。

在这里插入图片描述

在这里插入图片描述

  • 起始:时钟线SCL为高时,数据线SDA由高到低

  • 停止:时钟线SCL为高时,数据线SDA由低到高

  • 开始标志(S)发出后,主设备会传送一个7 位的地址,并且后面跟着一个第8位,称为Read/Write 位。

  • R/W 位表示主设备是在接受从设备的数据还是在向其写数据。

  • 然后,主设备释放SDA 线,等待从设备的应答信号(ACK)。每个字节的传输都要跟随有一个应答位。

  • 应答产生时,从设备将SDA 线拉低并且在SCL 为高电平时保持低。

  • 数据传输以停止标志(P)结束,然后释放总线。但主设备也可以产生重复的开始信号去操作另一台从设备,而不发出结束标志。

  • 所有的SDA 信号变化都要在SCL 时钟为低电平时进行,除了开始和结束标志

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

下面这张图是通过示波器抓取的IIC波形,可以看到:

  • 时钟线SCL是一种间歇性的方波(需要通信时才产生方波)
  • 数据线SDA根据SCL提供的节拍,高电平代表数据1,低电平代表数据0
  • 没有数据传输时,SDA和SCL均为高电平状态
  • 起始信号后,数据是9个一组,包括8位的数据和另一方的1位回应

图中红色数字表示单片机发送的8位数据,黄色数字表示IIC器件回应的信号,低电平0表示器件收到了单片机发来的数据。

总的来说,iic通信协议是一种串行半双工的通信协议,它有两根总线,一根数据线,一根时钟线。

iic通信

  1. 先由主机发送一个起始信号启用总线(时钟线为高电平,数据线由高到低)。
  2. 然后主机发送一个地址(7位),指明要通信的从机,然后发送一个方向位(1位),用“0”表示主机发送数据**,**“1”表示主机接收数据。从机发送应答信号(1位)。(时钟线为低电平时是主机向总线上写数据,时钟线为高时是从机从总线上读数据,通常情况下iic一次发送9位,起始状态下是7位地址+1位方向+应答,发送数据状态下是8位数据+1位应答,有时从机不应答,就意味着通信结束)。
  3. 通信结束,发送停止信号,释放总线(时钟线为高电平,数据线由低到高)。

在这里插入图片描述

  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值