IIC通信

1.IIC总线

  1. IIC总线是一种串行、半双工总线。
  2. IIC总线有两根双向的信号线一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步。
  3. 主要用于近距离、低速的芯片之间的通信。
  4. IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用。

        可以看到在SDA和SCL接了上拉电阻,在空闲时它们是高电平。

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

 2.通信过程

  1.  主机发送起始信号启用总线  
  2. 主机发送一个字节数据指明从机地址和后续字节的传送方向  
  3. 被寻址的从机发送应答信号回应主机  
  4. 发送器发送一个字节数据
  5. 接收器发送应答信号回应发送器
  6.  … … (循环步骤4、5)  
  7. 通信完成后主机发送停止信号释放总线

3.IIC总线的寻址方式

      IIC总线上传送的数据是广义的,既包括地址,又包括真正的数据

  1. 主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位为从机地址,最低位表示后续字节的传送方向,'0'表示主机发送数据,'1'表示主机接收数据
  2. 总线上所有的从机接收到该字节数据后都将这7位地址与自己的地址进行比较,如果相同,则认为自己被主机寻址,然后再根据第8位将自己定为发送器或接收器 

4.起始信号和停止信号

  1. SCL为高电平时,SDA由高变低表示起始信号
  2.  SCL为高电平时,SDA由低变高表示停止信号  
  3. 起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态 停止信号产生后总线处于空闲状态

         起始信号S   终止信号P

 5.字节传送与应答

         IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答位来回应发送器即一帧共有9位。ACK为0时,视为有效应答,ACK为1时,视为无效应答

 6.同步信号

        IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定。

 7.典型的IIC通信时序

        1.主机向从机发送数据

  • 主机先发起始位信号 S 
  • 主机再发从机地址 + 0(读写位) 0代表主机向从机发送数据
  • 从机发送ACK应答
  • 主机向从机发送数据
  • 从机发送ACK应答
  • 主机向从机发送数据
  • 从机发送ACK应答或者非应答
  • 主机发起停止信号P

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

        2.从机向主机发送数据,主机读数据 

  •  主机先发起始位信号 S 
  • 主机再发从机地址 + 1(读写位) 1代表从机向主机发送数据
  • 从机发送ACK应答
  • 从机向主机发送数据
  • 主机发送ACK应答
  • 从机向主机发送数据
  • 主机发送ACK非应答
  • 主机发起停止信号P

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

        3.主机先向从机发送数据,从机读取数据,然后从机再向主机发送数据,主机读数据  

 注意:这里中间主机再次发送S起始信号,是为了保持占用,防止其他设备抢占。

  •  主机先发起始位信号 S 
  • 主机再发从机地址 + 0(读写位) 0代表主机向从机发送数据
  • 从机发送ACK应答
  • 主机向从机发送数据
  • 从机发送ACK应答或者非应答
  • 主机再次发起始位信号 S 
  • 主机再发从机地址 + 1(读写位) 1代表从机向主机发送数据
  • 从机发送ACK应答
  • 从机向主机发送数据
  • 主机发送ACK非应答
  • 主机发起停止信号P

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

8.IIC、SPI的异同

1 .相同点

  • (1)均采用串行、同步的方式。
  • (2)均采用TTL电平,传输距离和应用场景类似。
  • (3)均采用主从方式工作。

2.不同点

  1. (1)IIC为半双工,SPI为全双工。
  2. (2)IIC有应答机制,SPI无应答机制。
  3. (3)IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能信号来寻址。
  4. (4)IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调。
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值