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

转载于:https://www.cnblogs.com/TaigaCon/archive/2012/11/22/2782584.html

IIC原理及简单流程相关推荐

  1. Android 10.0 PackageManagerService(一)工作原理及启动流程-[Android取经之路]

    摘要:PackageManagerService是Android系统核心服务之一,在Android中的非常重要,主要负责APK.jar包等的管理. 阅读本文大约需要花费50分钟. 文章的内容主要还是从 ...

  2. springboot启动原理_SpringBoot启动原理及相关流程

    一.springboot启动原理及相关流程概览 springboot是基于spring的新型的轻量级框架,最厉害的地方当属自动配置.那我们就可以根据启动流程和相关原理来看看,如何实现传奇的自动配置 二 ...

  3. redux的原理、工作流程及其应用

    redux的原理.工作流程及其使用 Redux对于JavaScript应用而言是一个可预测状态的容器.换言之,它是一个应用数据流框架,而不是传统的像underscore.js或者AngularJs那样 ...

  4. (转载)深入分析HDFS原理及读写流程

    一.架构体系 1.1.什么是HDFS? HDFS即Hadoop Distributed File System的简称,采用Master/Slave主从结构模型来管理数据.在设计上采用了分而治之的思想, ...

  5. 3D知识:3D电影的技术原理及制作流程

    3D知识:3D电影的技术原理及制作流程 3D电影,即立体电影,1952年,世界电影史上第一部真正的3D电影<非洲历险记>诞生.此后,虽然3D电影的技术以及电影制作都在得到蓬勃的发展,但是直 ...

  6. 【2021软件创新实验室暑假集训】SpringMVC框架(设计原理、简单使用、源码探究)

    系列文章目录 20级 Java篇 [2021软件创新实验室暑假集训]计算机的起源与大致原理 [2021软件创新实验室暑假集训]Java基础(一) [2021软件创新实验室暑假集训]Java基础(二) ...

  7. mybatis+springMVC+spring原理及工作流程

    做自己没做过的事情叫做成长 做自己不愿做的事情叫做改变 做自己不敢做的事情叫做突破 共勉 引言 本人在学习ssm中,已经能熟练的编写配置文件与代码了.但于前几天朋友问其原理与工作流程时却只能答出一二, ...

  8. KNN算法原理与简单实现

    KNN算法原理与简单实现 K最近邻(k-Nearest Neighbor,KNN)分类算法,是最简单的机器学习算法之一,涉及高等数学知识近乎为0,虽然它简单,但效果很好,是入门机器学习的首选算法.但很 ...

  9. Android:安卓学习笔记之OkHttp原理的简单理解和使用

    Android OkHttp使用原理的简单理解和使用 OkHttp 0.前言 1.请求与响应流程 1.1 请求的封装 1.2 请求的发送 1.3 请求的调度 1.4 请求的处理 2.拦截器 2.1 R ...

最新文章

  1. 《数据结构》知识点Day_02
  2. Java xml 工具 JDOM 使用详解.
  3. struts 权限控制
  4. 第7章-选择器+伪类
  5. 【HDU - 1022】Train Problem I (栈模拟,水题,思维)
  6. 【Elasticsearch】使用 Grok 和 Elasticsearch 为数据添加结构
  7. ETL 工具的比较:Talend,Kettle,Informatica 等
  8. 向量间的距离和范数到线性空间、赋范空间、內积空间
  9. python运行代码时标红_PyCharm 中写 Turtle代码没提示以及标黄问题
  10. AI上推荐 之 协同过滤
  11. ISO9000、CMM(I)、6sigma与对象分析技术
  12. win10打开热点的时候提示我们无法设置热点
  13. 上海大学c语言吉米试题,求c语言大神学长学姐解答题目
  14. solidworks 资料分享
  15. IT十年人生过客-八-银总和2011总结
  16. qq农场不换html5还用flash,QQ农场使用问题完整解答(6)
  17. stm32f030烧录一次程序就不能检测到解决方法
  18. stata构造所在区县的平均互联网使用状况语句
  19. ERP系统维护的心得,需要的工作技能
  20. 20位硅谷大佬讲给年轻创业者:我20岁时明白这些就好了

热门文章

  1. bootstrap源码分析之form、navbar
  2. cacti系统性能监控(CENTOS/UBUNTU)
  3. virtualenv 模块
  4. commonJs原理解析
  5. Linux 下 YUM 安装 PHP 5.5
  6. 我更喜欢用 Intellij IDEA 部署应用
  7. 2014年9月28日 18:35:01
  8. Android使用ViewPager实现左右滑动效果
  9. android 禁止Viewpager左右滑动功能
  10. SQL注入原理深度解析