【经典总线协议】IIC

一、IIC协议介绍

  IIC是主从结构的,并且按位传输的串行半双工通信总线协议。IIC总线由SCL时钟信号线SDA数据信号线组成,支持一主多从,即一个IIC主机可以挂接多个IIIC从机,主机通过从机地址和相应的从机进行通信。
  在实际开发中,我们通过不同IIC器件对应的Data sheet中的IIC时序图来编写驱动程序,实现主从之间的数据传输。

二、IIC时序

图2.1

1、START开始信号

  首先由主机发送起始信号:即高电平跳变到低电平的脉冲
                在这里插入图片描述

2、发送寻址字节

  接下来主机发送一个寻址字节(8位:7位从机地址+1位读写位),其中第0位是读写位(表示写,1表示读),第1-7位表示从机地址(1-3位可自定义,4-7位为不可修改的默认地址)。
           在这里插入图片描述

3、ACK应答信号

  到第九位数据时,主机释放SDA,由从机驱动SDA,用以主机接收从机的应答信号。此时如果从机发现该地址是自己的,就把SDA拉为低电平作为ACK应答信号,由主机接收。

4、数据传输

           在这里插入图片描述

  主机接收到从机的应答信号之后,
  (1)如果第8位读写位是0,即主机向从机写数据,接下来继续由主机驱动SDA,向从机传输数据,期间主机每传送8位数据,从机就会产生一个应答信号ACK,由主机接收。
  (2)如果第8位读写位是1 ,即从机向主机写数据,接下来继续由从机驱动SDA,向主机传输数据,期间从机每传送8位数据,主机就会产生一个应答信号ACK,由从机接收。

  PS:并非每传输8位数据,都会产生ACK信号,以下3中情况例外;
  (1)从机不能响应主机发送的从机地址。例如从机正忙而无法响应IIC总线的操作,或者这个地址没有对应的从机,那么在第9个SCL周期内SDA线就没有被拉低,即没有ACK信号。这时,由主机发送一个停止信号终止传输,或者重新发送一个START信号开始新的传输。
  (2)如果从机无法接收更多的数据,即主机发送的数据超过从机的数据接收能力时,从机不会发出ACK信号,这时,由主机发出一个停止信号终止传输或者重新发送一个START信号开始新的传输。
  (3)主机接收器接收到最后一个字节后,也不会发出ACK信号。于是从机发送器释放SDA线,以允许主机发出停止信号结束传输。

5、停止信号

  数据传输完毕之后,以SCL为高电平时,SDA由低电平拉为高电平作为停止信号,来结束本次数据传输。
                    在这里插入图片描述

PS:
  每次向SDA发送一位数据,都需要在SCL高电平时保持,所以SDA上所传输每一位数据都会占用一个时钟周期

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值