IIC协议

Posted Shemesz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IIC协议相关的知识,希望对你有一定的参考价值。

一、IIC总线概述

  • IIC总线简介
    IIC总线是Philips公司在八十年代初推出的一种串行、半数工总线主要用于近距离、低速的芯片之间的通信.IIC总线有两根双向的信号线一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步, IIC总线硬件结构简单结构简单,成本较低,因此在各个领城得到了广泛的应用

  • IIC总线介绍
    IIC总线是一种多主机总线, 连接在IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误发生;每个连接到IIC总线的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件可以删除和增加不影响其他器件正常工作;IIC总线在通信时总线上发送数据的器件叫做发送器,接受数据的器件叫做接收器。
    在这里插入图片描述

  • IIC通信过程

  1. 主机发送起始信号启用总线
  2. 主机发送一个字节数据指明从机地址和后续字节的传送方向
  3. 被寻址的从机发送应答信号回应主机
  4. 发送器发送一个字节数据
  5. 接收器发送应答信号回应发送器
  6. ··· ··· (循环步骤4、5)
  7. 通信完成后主机发送停止信号释放总线
  • IIC总线寻址方式
    (1)IIC总线上传送的数据是广义的,既包括地址,又包括真正的数据
    (2)主机在发送起始信号后,必须先发送一个字节的数据,该数据的高七位为从机地址, 最低位表后续字节的传送方向,‘0’表示主机发送数据,‘1’表示主机接收数据;总线上所有的从机接收到该字节的数据后都将这7位地址与自身地址比较,如果相同,则认为自己被主机寻址,然后再根据第8位置将自己定为发送器或接收器。
    在这里插入图片描述

二、IIC总线信号实现

(1)起始信号和终止信号

  • SCL为高电平时,SDA由高变低表示起始信号
  • SCL为高电平时,SDA由低变高表示停止信号
  • 起始信号和停止信号都是由主机发出的,起始信号产生后总线处于占用状态;停止信号产生后总线处于空闲状态
    在这里插入图片描述
    (2)字节的传送和应答
  • IIC总线通信时每个字节为8位长度, 数据传送时,先传送高位,后传送低位,发送器发送完一个字节的数据后接收器必须发送1位应答位来回应发送器,即一帧共有9位
    在这里插入图片描述
    (从机用一个低电平来表示应答)
    (3)同步信号
  • IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化
  • 时钟线SCL为高电平期间,接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定
    在这里插入图片描述

三、IIC典型时序

注意:阴影部分表示数据由主机向从机传递,无阴影部分则表示数据由从机向主机传递;A表示应答,A非表示非应答,S表示起始信号,P表示终止信号。

  • 主机向从机发送数据
    在这里插入图片描述
  • 从机向主机发送数据
    在这里插入图片描述
  • 主机先向从机发送数据,然后从机再向主机发送数据

在这里插入图片描述
( 注意:一次通信用了n次S起始信号表明数据的来回传输,而只用了一次最后的终止信号,这样呢在一次通信过程中不会释放总线,避免了总线被其他器件抢占。例子:就像你拿起电话拨给了好几个电话也接到了好几个电话,但是你没有放下电话,这样电话就不会被其他人占用)

以上是关于IIC协议的主要内容,如果未能解决你的问题,请参考以下文章

IIC协议

FPGA基础设计:IIC协议

模拟IIC协议时序

IIC协议理解(转)

iic通信协议是什么

SCCB协议与IIC协议的对比