• IIC通信


    IIC通信:
    特点:
      IIC总线是两线式串行总线(连同GND为3线),仅需要时钟和数据两根线就可以进行数据传输,仅占用两个IO口。
      IIC总线可以在同一总线上连接多个器件,每个器件都有自己的器件地址。
    引脚:
      芯片上有A0、A1..是用来设置器件地址的
      SDA是串行数据引脚,用于在芯片读写时输入或输出数据和地址,是双向引脚。
      SCL是器件的串行同步时钟信号输入端,由单片机的IO口提供。(时钟信号一直由主机控制,即单片机)
      WP是保护引脚,但输入高电平时,禁止写入。但有时候没用,所以一般不用

      D7-D4是固定地址,D3-D1是可变地址,就是A2.A1.A0 还有D0(LSB) 就是控制读写(R/W)的地址,
      写入时R/W为0,读取时R/W为1
    一个字节一个字节得传输:
      使用:
        读写操作时需要先发送器件的地址,与器件地址相符合的器件得到确认就开始执行操作。
      传输:
        开始:
          SCL为高电平、SDL有一个从高到低的电平跳变动作
        保持:
          器件在SCL、SDL都为高电平是才会从数据线上采取数据,而芯片可以在SCL在低电平的时候写入,然后拉高电平,然后再变低电平。SDL不应该有电平跳变(为高?)数据只有在SDL为高时才是有效数据。
        停止:(数据传输完毕)
          SCL为高电平、SDL有一个从低到高的电平跳变动作


          连接在IIC总线上的器件在每接收完一个字节(8个二进制位)后,在第9个时钟信号时,会在SDA上回应一个低电平的ACK应答信号,以此表明当前受控的器件已经接收完一个字节,可以开始下一个字节了编程的时候就可以在传送完一个字节后,把连接SDA的IO口设置成回读数据(比如把IO口设置为高电平),然后在SCL操作一个脉冲,在SCL为高时读取SDA,如不为低电平就说明器件状态不空闲或出错,由于SDA是双向的IO,每个字节接收完成后,接收方都可以发送一个ACK回应



      状态保持的最少时间:
        开始、停止: 高至少要保持4.7us,低电平要保持4us。
        保持和空闲:高电平保持至少4us
      数据写入要求:
        每一位的写入是用时钟上升沿同步数据,也就是说时钟上升沿后从器件开始检测输入的数据SDL为高
        每一位的读取是用时钟下降沿同步数据,也就是说时钟下降沿后从器件开始输出的数据 SDL为高高到低,变化时间最大 300ns结束低到高,1us

      综上所述:在IIC总线上,每一位数据都有一个时钟脉冲相对应,即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。进行数据传递时,在SLC呈现高电平期间,SDA的电平必须稳定,只有在SCL为低电平时,才允许SDA上的电平改变

      主机(单片机)是产生起始信号、停止信号并输出时钟信号的器件,此时任何被寻址的器件都被认为是从机

    多个字节传输:
      也需要先发送一个字节作为器件地址,每次通信都要先发送一个字节的器件地址和读写标识,称为器件寻址

      有的芯片有高四位和低四位,高四位是不同IIC类型器件固有的编码,芯片出厂就已经给定,低四位中A2.A1.A0是器件地址,对应芯片A2.A1.A0引脚

      D7-D4是固定地址,D3-D1是可变地址,就是A2.A1.A0 还有D0(LSB) 就是控制读写(R/W)的地址,写入时R/W为0,读取时R/W为1

      读取:
        读取当前地址数据:
          这种读取模式是读取当前芯片内部地址指针指向的数据。每次读写操作后,芯片会把最后一次操作过的地址最为当前的地址,在这里要注意的是,单片机在接收完芯片传送的数据后不必发送低电平的ACK给芯片,直接拉高SDA等待一个时钟后发送停止位。


        读取任意地址数据:
          在读取当前地址时,在这个指令前加一个“伪操作”,这个“伪操作”传送一个写指令,但这个写指令在地址传送完成后就要结束,这时芯片内部的地址指针指到这个地址上,再用读取当前地址指令就可以读取写入的地址数据


        连续读取
          连续读取操作只要在上面两种读取方式中,让芯片每传送完一个字节数据后,单片机回应给芯片一个低电平的ACK应答,那么芯片地址指针自动加一并继续传送数据,直到单片机不回应并停止操作。

     

  • 相关阅读:
    Android -- 自定义View小Demo,动态画圆(一)
    Android -- 自定义View小Demo,绘制四位数随机码(一)
    Android设计模式---观察者模式小demo(一)
    Android -- 自定义View小Demo,绘制钟表时间(一)
    Android -- 自定义View小Demo,关于Rect绘制Android机器人(一)
    Android -- 自定义View小Demo,关于Path类的使用(一)
    Android -- 自定义View小Demo(一)
    Android -- 自定义View(一)
    自定义Scrollview--实现仿淘宝Toolbar透明度渐变效果
    究竟什么是技术——非科班程序员两年的内心挣扎
  • 原文地址:https://www.cnblogs.com/otome/p/12727397.html
Copyright © 2020-2023  润新知