通信协议学习:IIC总线协议

IIC总线协议简介

  • IIC是一种串行,半双工总线,用于近距离,低速的芯片间的通信。
  • IIC总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步。
  • IIC总线是一种多主机总线,连接的器件分为主机和从机,主机可以进行发起和结束一次通信,从机只能接收。
  • 每个连接到IIC总线上的期间都有唯一的地址,且为7bit
  • 多主机同时启用总线,IIC具有冲突检测仲裁的功能防止出现错误。
  • IIC总线的设备的SCL和SDA均要配置成开漏输出模式
  • SCL和SDA各要添加一个上拉电阻,组织4.7千欧左右

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==编辑

IIC总线通信过程(宏观) 

1)主机发送起始信号启用总线 

2)主机发送一个字节数据指明从机地址后续字节传送方向:主机发送的一个字节中,[7:1]位表示被寻址的从机地址,第0位表示发送方向,为0时表示主机发从机收,为1时则相反。

3)被寻址的从机发送应答信号回应主机

4)发送器发送一个字节数据

5)接收器发送回应信号回应发送器

6)不断循环 4、5

7)主机发起停止信号,释放总线

IIC总线信号实现

起始信号和停止信号

起始信号: 在 SCL 为高电平时, SDA 由高变低
停止信号: 在 SCL 为高电平时, SDA 由低变高

备注:起始信号和停止信号只能由主机发出,当起始信号产生,总线就处于占用状态,停止信号后总线则处于空闲状态。

字节传送和应答信号

 IIC总线通信发送的每个字节是8位,且和串口相反,是先发送高位在发送低位,并且接收器每接收1个字节数据后都要发送应答信号来回应,也就是说,每一帧通信都是9位。

同步信号

IIC总线进行数据传送时,为了保证主机和从机同步,发送数据的规定如下,

当时钟线SCL为低电平时,发送器向数据线上发送一位数据,且在此期间数据线上的信号允许变化;时钟线SCL高电平时,接收器从数据线上读取一位数据,此期间数据线上的信号不允许变化。

总结就是,SCL这条线就是告诉发送器和接收器什么时候发送数据,什么时候接收数据。

典型IIC时序

  • 主机向从机发送数据
  • 从机向主机发送数据
  • 主机先向从机发送数据,然后从机在向主机发送数据

备注:阴影部分代表主机向从机发数据,无阴影部分表示数据由从机发送给主机;

此外A表示应答,A非表示不应答,S表示起始信号,P表示停止信号。 

        从时序3中我们会发现,主机向从机发送数据后,为了切换收发数据方向,直接再次发送起始位而没有先发送停止位在发送起始位,这个是因为如果先发送停止位的话,那这个期间很可能总线的使用权被其他主机抢占,就导致无法正常切换完成整个时序,所以这种方式是被允许的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值