嵌入式总线协议(三)——IIC总线

IIC总线概述

IIC总线是一种串行半双工总线,有以下特点:

  • 应用于低速、近距离的芯片之间。
  • 由两根双向的信号线组成:数据线SDA用于收发数据;时钟线SCL用于通信双方时钟的同步。
  • 多主机总线:
    1、连接在IIC总线上的器件分为主机和从机,主机可以发起和结束一次通信,从机只能被主机呼叫。
    2、冲突检测、仲裁功能:多个主机同时启用总线,防止错误。
    3、IIC总线上的器件都有一个唯一的地址(7bit),且每个器件既可以作为主机,也可以作为从机。但同一时刻只能有一个主机
    4、总线上的器件增加和删除不影响其他器件正常工作。

IIC总线通信过程

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

IIC总线寻址方式

  • IIC传输的数据,包括地址数据

  • 主机发送完起始信号后,发送一个字节数据指明从机地址(高7位)和后续字节(低位)的传送方向,从机接收后将高7位地址与自己的地址进行比较,相同则认为自己被寻址,再根据最后一位将自己定为发送器或接收器,且在一次通信过程中,只能作为发送器或接收器。
    0:主机给从机发数据;
    1:从机给主机发数据。

  • 与UART等通信方式不同,在一次通信中,IIC能发送多个字节的数据,而UART等只能发送一个字节数据。

IIC总线信号实现

IIC通信过程中,总共涉及四种信号模式:

  • 起始信号
  • 发送一个字节数据
  • 应答信号
  • 停止信号

起始信号、停止信号
在这里插入图片描述

  • 空闲时,SCL和SDA均为高电平
  • SCL为高电平,SDA由高电平变为低电平时表示起始信号,起始信号产生后,总线处于占用状态(主机发起)
  • SCL为高电平,SDA由低电平变为高电平时表示停止信号,停止信号产生后,总线处于空闲状态(主机发起)

字节传送、应答

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

同步信号
IIC总线在进行数据传输时

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

典型IIC时序

高亮部分表示数据由主机向从机传送,普通部分为从机向主机传送;
A表示有应答,A#表示无应答。

  • 主机向从机发送数据
S从机地址0A数据A数据A/A#P
  • 从机向主机发送数据
S从机地址1A数据A数据A#P
  • 主机先向从机发送数据,然后从机再向主机发送数据
S从机地址0A数据A/A#S从机地址1A数据A数据A#P
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值