zoukankan      html  css  js  c++  java
  • IIC协议

    1. 概述

    IIC(Inter-Integrated Circuit),集成电路总线。
    (1)工作特点:

      1)同步串行;
      2)半双工;
      3)主/从模式(支持一主多从);
      4)应答通信机制;
      5)传输速率:标准模式(100 kbps)、快速模式(400 kbps)和高速模式(3.4 Mbps)。

    PS:通过调整时钟频率,可更改IIC传输速率;传输速率还跟IIC引脚所接的上拉电阻的阻值有关。

    (2)应用场景:

    IIC适用于近距离、低速器件间的通信;主要应用于字节设备,譬如触摸屏、一些传感器芯片等。

    (3)标准硬件接口:

      1)SCL:时钟信号线,由主设备产生;
      2)SDA:数据信号线。

    2. 通信时序

    (1)IIC总线物理拓扑结构

    (2)空闲状态:SDA和SCL同时处于高电平状态。

    (3)起始信号、停止信号

      1)起始信号(START):当SCL为高期间,SDA由高到低的跳变;

      2)停止信号(STOP):当SCL为高期间,SDA由低到高的跳变。

    PS:起始信号和停止信号是一种电平跳变时序信号,而不是一个电平信号。

    (4)应答信号、非应答信号

    发送方每发送一个字节,在第9个时钟脉冲期间释放总线,由接收方反馈一个应答信号。若发送方接收应答信号超时,则表明此次数据传输无效。

      1)应答信号(ACK):接收方在第9个时钟脉冲之前的低电平期间,将SDA拉低,并确保其在该时钟脉冲的高电平期间处于稳定的低电平状态;

      2)非应答信号(NACK):接收方在第9个时钟脉冲期间,SDA保持稳定的高电平状态。

    PS:当主设备作为接收方,在其接收完最后一个字节后,主设备应当发送一个NACK信号,以通知从设备停止发送数据,最后主设备再发送STOP信号至从设备。

    (5)数据传输

    IIC总线上传输的数据的每一个Bit都与一个时钟脉冲相对应。在时钟信号SCL的配合下,SDA串行传送每一个Bit。

    IIC总线的数据传输,需满足以下两个条件:

      1)IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定;只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化;

      2)SDA上数据位的传输是边沿触发的,即数据位在SCL的上升沿被打入设备;所以SDA必须在SCL的上升沿之前,保持稳定。

    3. IIC总线操作

    (1)字节写
    (2)字节读
    (3)页写
    (4)页读

     

    4. 调试技巧

    (1)IIC协议的数据传输在低速率下较稳定,在低速率模式下调试成功后,再提高其通信速率;

    (2)在从设备地址不可知情况下,可从0至地址最高值遍历地写入从设备,直至收到从设备发送的ACK信号,即可确定从设备的地址;

    (3)IIC的SCL、SDA信号引脚必须接上拉电阻,芯片内置上拉电阻可能无效;

    (4)不同的从设备的IIC总线特性存在差别,如通信速率、高电平保持时间等;调试时需根据从设备的特性调整IIC时序。

  • 相关阅读:
    【原】 POJ 1308 Is It A Tree? 并查集树结构 解题报告
    终于决定投身Linux怀抱
    Inside the C++ Object Model
    Fedora 下 OpenCV 的安装
    sed 与 awk
    工具链接收藏
    [转] 计算机视觉领域稍微容易中的期刊
    QtCreator开发多文档编辑器(Project 1)
    Fedora 17: Grub Rescue
    做文档类的工作总是让我感到一些烦躁
  • 原文地址:https://www.cnblogs.com/linfeng-learning/p/11985662.html
Copyright © 2011-2022 走看看