常见通信协议之IIC

IIC总线
  • IIC特点
    • 串行半双工总线,主要用于近距离、低俗芯片之间的通信
    • 组成
      • IIC总线有两根双向的信号线一根数据线SDA用于收发数据,一根时钟SCL用于双方时钟同步
    • 多主机总线协议—多个挂在可以作为主机
      • 主机
        • 主机有权发起和结束一次通信
      • 从机
        • 只能被主机呼叫
      • 多主机同时启用总线
        • 有冲突检测功能及仲裁功能,防止错误产生
      • 每个IIC总线上都有一个唯一的地址(7bit)—这个地址是硬件决定的
      • 挂载器件既可以当主机又可以当从机,但是同一时间只能有一个身份
    • 发送数据的叫发送器,接收数据的叫接收器接收器和发送器与主机从机无关
  • 通信过程—宏观分析
    • 主机发送起始信号启用总线—总线被占用,其余主机无法使用
    • 主机发送一个字节数据指明从机地址(高7bit)和后续字节的传送方向(最低1bit)
      • 所有从机都能收到地址,与自己进行比较,最后决定是否与主机通信
      • 传输方向问题—最后一位如果是0则主机给从机发数据,如果1则从机给主机发数据
      • 自此,虽然字节数不受限制但发送方向不可以改变
    • 被寻址的从机发送应答信号回应主机
    • 发送器发送一个字节数据
    • 接收器发送应答信号回应发送器
    • 循环上述两步—可以发送n个字节
    • 通信完成后主机发送停止信号释放总线
    • IIC的寻址方式
      • IIC总线上传送的数据是广义的,既包括地址,又包括真正的数据
      • 发送起始信号后的一字节由主机发给从机,包含地址信息和收发器的定义
  • IIC总线信号的实现—两根线空闲时都是高电平
    • 起始信号和停止信号—主机发送
      • SCL为高电平,SDA由高变低表示起始信号
      • SCL为高电平,SDA由低变高表示停止信号
      • 在这两个信号之间其他主机无法启用地址
    • 字节传送与应答
      • IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后,接收器必须发送1bit的应答位(负脉冲)
    • 同步信号
      • 两个问题
        • 两个不同器件之间不知道什么时候发送数据和接收数据
        • 两个连续的相同信号0011和01如何区别
      • 第一个问题使用起始信号就可以解决
      • SCL就解决了第二个问题
      • 当SCL为低电平时,发送器可以向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,当SCL变为高电平时,数据必须稳定,这样才可以进行数据读取
    • 如何记住SCL与SDA的关系所决定的信号呢?
      • SCL在高电平期间,如果出现了SDA电平下降沿则表示起始信号,出现SDA上升沿则表示停止信号,如果不变,那么此时正在传输数据,当SCL为低电平,SDA为负脉冲信号信号出现时,则为应答信号
    • 为什么IIC可以传输任意多个字节呢?
      • 原因就在于共用一根SCL,不存在偏差
  • IIC的典型时序
    • 主机向从机发送数据
      • 主机发送起始信号给从机
      • 主机发送一个字节的数据包括地址和读写方向0
      • 从机应答
      • 主机发数据从机应答—循环
      • 停止信号发送的前提后两个
        • 当主机发送最后一个bit从机发送应答后,主机发送结束信号
        • 当主机发送最后一个bit从机未应答,主机发送结束信号
    • 从机向主机发送数据—寻址后
      • 主机发送起始信号给从机
      • 主机发送一个字节的数据包括地址和读写方向1
      • 从机应答
      • 从机发送数据主机应答
      • 从机发送最后一个bit后,主机不去应答,而后发送停止信号
    • 主机先向从机发送数据,然后从机再向主机发送数据
      • 主机发送起始信号给从机
      • 主机发送一个字节的数据包括地址和读写方向0
      • 从机应答
      • 主机发数据从机应答—循环
      • 主机发送起始信号给从机
      • 主机发送一个字节的数据包括地址和读写方向1
      • 从机应答
      • 从机发送数据主机应答—循环
      • 从机发送最后一个bit后,主机不去应答,而后发送停止信号
    • 要转变方向直接发送起始信号即可,不用停止信号,这样避免总线被其他主机占用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值