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位数据进行地址选择。

  • 相关阅读:
    非域,非匿名用户访问远程企业服务的详细步骤
    调用远程的企业服务的安全问题
    未能加载文件或程序集“****”或它的某一个依赖项的一种情况
    XAMPP使用非80端口的安装配置修改
    Lucene 的存储结构概述
    .NET Framework 4.0 SDK的安装
    lucene 文件存储相关的几个类
    ASP.NET 状态服务 及 session丢失问题解决方案总结
    不安装.net framework框架运行.Net 程序的方法<收藏>
    net面试题集及答案
  • 原文地址:https://www.cnblogs.com/TaigaCon/p/2782584.html
Copyright © 2011-2022 走看看