zoukankan      html  css  js  c++  java
  • IIC 原理讲解

      IIC具体是什么这里我就不细说了,只收集一些关于IIC的原理。

    IIC总线优点是节约总线数,稳定,快速, 是目前芯片制造上非常

    流行的一种总线,大多数单片机已经片内集成了IIC总线接口,无

    需用户自己模拟,只需配置相关寄存器即可使用。

      IIC总线有两条串行线,其一是时钟线SCK,其二是数据线SDA

      在寻常的应用之中,单片机常常作为主机,外围器件作为从机使用。

      每一个从机器件都拥有唯一的一个地址,这个地址在芯片手册上会

    有详细的介绍,一般还需要自行配置芯片管脚上的高低电平,来实现确

    定从机地址的目的。硬件设计上,SCK线和SDA线通过典型的4.7K电阻

    进行上拉,保证两条线空闲时保持高电平状态。

      IIC主要由一下几部分组成(代码可以看上一篇文章):

        1.开始信号;

        2.结束信号;

        3.应答信号;

        4.等待应答;

        5.数据发送;

        6.数据接收;

        7.非应答信号

      SDA上的数据在SCK高电平期间必须稳定,SDA上的数据在SCK期间才可以被更改。

    起始信号:在SCK高电平期间,SDA一个下降沿,即构成了IIC的起始信号。

    终止信号:在SCK高电平期间,SDA一个上升沿,即构成了IIC的终止信号。

      IIC的一些时序就如上图所示,信号的收发结合时序一起看更加容易理解。

    下面就说一些IIC的通信过程。

      1.发送启动信号;

      2.发送寻址地址(8位组成:前7位是从机地址,最后一位是读写确认位,

    eg:1010101 0/1 ,若最后一位为0,则表示主机发送数据,若为1表示主机

    接收数据。)主机发送地址时,总线上的每个从机都将这7位地址码(这7位

    地址码前4位是固定的,后3位是可编程的  eg: 1010 xxx)与自己的地址进行

    比较,若相同,则认为自己正在被主机寻址,根据R/T位将自己确定为发送器

    和接收器;

      3.等待应答;

      4.发送 / 读取 数据;

      5.发送停止信号。

    在IIC总线的一次数据传输中,可以有一下几种组合方式:

      1.主机向从机发送数据,数据传送方向在整个传递过程中不变:

      

      2.主机在第一个字节后,立即从从机读数据(传输方向不变):

      

      3.在传送过程中,当需要改变传递方向时,起始信号和从机地址都

         被重复一次产生一次,但两次读/写方向位正好相反:

      

    注:主机做的都是编程控制,从机做的都是自主控制,也可以说是硬件控制,

    如主机给应答信号是编程控制,但是从机给应答信号是硬件控制,我们只需

    要检查在SDA为高期间,SCL保持低电平一些时间,即可判定从机给了主机

    应答信号。

      

  • 相关阅读:
    怎样打印日志
    log4j(一)
    idea没有subversion问题
    tomcat启动报异常(一)
    HashSet
    spring容器初始化bean和销毁bean之前进行一些操作的定义方法
    MyBatis中$和#的区别
    基本数据类型与引用数据类型
    Access restriction: The method 'CharacterEncoder.encode(byte[])' is not API...
    Object源码
  • 原文地址:https://www.cnblogs.com/xingboy/p/9585755.html
Copyright © 2011-2022 走看看