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. 苏联曾经的AI有多强?一段几乎已被世人遗忘的往事
  2. 视频检测分割--Deep Feature Flow for Video Recognition
  3. 基于angular2实现用户登录并信息持久化的一些理解(二)
  4. Django: jQuery中的function学习(一)
  5. Pedestrian Identification (1) ——前景目标检测
  6. 论文浅尝 | Data Intelligence - 多篇语义资源论文
  7. 苹果手机电越充越少怎么回事_手机充着电,电量缺越来越少是怎么回事?
  8. Java之HashMap用法
  9. HTML+JS好例子集锦
  10. Photoshop插件--删除暗调通道--脚本开发--PS插件
  11. pyqt+pyqtgraph+lka(界面制作)--优化版
  12. 基于python的手机销售系统
  13. 【Verilog基础】数字电路-逻辑式化简公式(附吸收律推导过程)
  14. 解除浏览器hao123首页
  15. 输出二叉树中从每个叶子结点到根结点的路径
  16. 【生成模型】浅析玻尔兹曼机的原理和实践
  17. 如何在企业微信中打通私域闭环?
  18. 详谈redis命令之列表(List)
  19. Java使用S7协议连接西门子PLC1200、1500
  20. keras.layers.Embedding层介绍

热门文章

  1. iOS沙盒目录结构解析
  2. Gray Code LeetCode 89
  3. JavaScript语言调试技巧
  4. Linux学习笔记:安装python
  5. android愤怒小鸟游戏、自定义View、掌上餐厅App、OpenGL自定义气泡、抖音电影滤镜效果等源码...
  6. iOS 调用h5页面 视频不自动播放的问题
  7. 【302天】跃迁之路——程序员高效学习方法论探索系列(实验阶段60-2017.12.04)...
  8. ORACLE wallet实现无需输入用户名与密码登陆数据库
  9. 中国计算机考试区别及求职的相关思考
  10. 团队冲刺站立会议03