zoukankan      html  css  js  c++  java
  • IIC原理及简单流程

    IIC 即 inter-integrated-circuit,又称 I2C 一种总线结构,具体接受请度娘。

    I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。

    以下为mini2440的IIC设备:AT24C08

    IIC遵从 主/从结构,通信由主机发起,并且由主机结束。

    开始信号(s):当时钟信号处于高电平,向数据信号线发送下降沿。

    结束信号(p):当时钟信号处于高电平,向数据信号线发送上升沿。

    由于IIC总线上可能连有多个设备,因此我们应该在开始信号后进行设备选择,也就是发送地址信号,当设备收到符合自己地址的信号后会返回响应。

    一般地址位宽为7位,而发送的数据位为8位,除了7位地址,剩下的一位为读写位。

    如果为写,则在设备返回ack信号后,接着主机发送8位数据,当设备收到数据后,设备返回ack信号。

    如果为读,则在设备返回ack信号后,接着设备返回8位数据,当主机接收到信号后,接下来的ack信号就由主机发送。

    Data Transferred段周而复始,直到数据传输完成。

    而在主机发送(R)或者接受(W)到ack信号后,会产生中断,我们可以在中断处理程序中对数据进行进一步处理,或者在中断处理程序内继续发送/接收数据。

    当传输完成后,

           如果主机作为数据发送方,可以发送停止信号,终止IIC传输过程。

           如果主机作为数据接收方,可以不发送响应信号ack,终止传输过程。

    寄存器配置:

    根据芯片手册,IICCON用于初始化,其余用于数据传输的相关操作。

    IICCON:  IIC控制寄存器

    IICDS:  IIC数据移位寄存器

    IICSTAT:  IIC状态寄存器

    IICADD:   IIC地址寄存器

    流程如下

    主机发送流程:

    主机接收流程:

    设备发送流程:

    设备接收流程:

    另外,对于AT24C08,值得注意的是,该设备是先进行地址选择(非IIC设备的地址选择,而是AT24C08内部的地址选择),然后进行数据读写。

    因此,AT24C08来说,当该设备被选择后(IIC地址匹配),然后对收到的第一个数据进行片内地址选择(写地址),然后:

    如果需要写数据,因为同为写模式,所以可以直接进行

    如果需要读数据,因为要转换为读模式,所以需要重新发送开始信号,在当前地址读数据

    AT24C08是10位地址,所以8位的word address根本不够进行地址选择,因此以device address的最后两位,加上word address 的8位,一共10位数据进行地址选择。

  • 相关阅读:
    挑战图像处理100问(15)——Sobel滤波器
    图像处理作业4——图像金字塔多尺度特征提取(初始版)
    林sir课程学习proj9——Socket错误代码10040
    如何查看OpenCV中函数的源代码
    VS编译提示:无法打开xxx.exe进行写入
    OpenCV鼠标响应函数(setMouseCallback)
    EasyBCD误删win10启动项后的修复方法
    图像查看器--能同时打开多个图片
    win10配置opencv4.0.0+pycharm2018.2.5+python3.7.1
    查看数据库内产生了哪些锁
  • 原文地址:https://www.cnblogs.com/TaigaCon/p/2782584.html
Copyright © 2011-2022 走看看