IIC具体是什么这里我就不细说了,只收集一些关于IIC的原理。

IIC总线优点是节约总线数,稳定,快速, 是目前芯片制造上非常

流行的一种总线,大多数单片机已经片内集成了IIC总线接口,无

需用户自己模拟,只需配置相关寄存器即可使用。

  IIC总线有两条串行线,其一是时钟线SCK,其二是数据线SDA

  在寻常的应用之中,单片机常常作为主机,外围器件作为从机使用。

  每一个从机器件都拥有唯一的一个地址,这个地址在芯片手册上会

有详细的介绍,一般还需要自行配置芯片管脚上的高低电平,来实现确

定从机地址的目的。硬件设计上,SCK线和SDA线通过典型的4.7K电阻

进行上拉,保证两条线空闲时保持高电平状态。

  IIC主要由一下几部分组成(代码可以看上一篇文章):

    1.开始信号;

    2.结束信号;

    3.应答信号;

    4.等待应答;

    5.数据发送;

    6.数据接收;

    7.非应答信号

  SDA上的数据在SCK高电平期间必须稳定,SDA上的数据在SCK期间才可以被更改。

起始信号:在SCK高电平期间,SDA一个下降沿,即构成了IIC的起始信号。

终止信号:在SCK高电平期间,SDA一个上升沿,即构成了IIC的终止信号。

  IIC的一些时序就如上图所示,信号的收发结合时序一起看更加容易理解。

下面就说一些IIC的通信过程。

  1.发送启动信号;

  2.发送寻址地址(8位组成:前7位是从机地址,最后一位是读写确认位,

eg:1010101 0/1 ,若最后一位为0,则表示主机发送数据,若为1表示主机

接收数据。)主机发送地址时,总线上的每个从机都将这7位地址码(这7位

地址码前4位是固定的,后3位是可编程的  eg: 1010 xxx)与自己的地址进行

比较,若相同,则认为自己正在被主机寻址,根据R/T位将自己确定为发送器

和接收器;

  3.等待应答;

  4.发送 / 读取 数据;

  5.发送停止信号。

在IIC总线的一次数据传输中,可以有一下几种组合方式:

  1.主机向从机发送数据,数据传送方向在整个传递过程中不变:

  

  2.主机在第一个字节后,立即从从机读数据(传输方向不变):

  

  3.在传送过程中,当需要改变传递方向时,起始信号和从机地址都

     被重复一次产生一次,但两次读/写方向位正好相反:

  

注:主机做的都是编程控制,从机做的都是自主控制,也可以说是硬件控制,

如主机给应答信号是编程控制,但是从机给应答信号是硬件控制,我们只需

要检查在SDA为高期间,SCL保持低电平一些时间,即可判定从机给了主机

应答信号。

  

IIC 原理讲解的更多相关文章

  1. OAuth的机制原理讲解及开发流程

    本想前段时间就把自己通过QQ OAuth1.0.OAuth2.0协议进行验证而实现QQ登录的心得及Demo实例分享给大家,可一直很忙,今天抽点时间说下OAuth1.0协议原理,及讲解下QQ对于Oaut ...

  2. pureMVC简单示例及其原理讲解五(Facade)

    本节将讲述Facade,Proxy.Mediator.Command的统一管家.自定义Facade必须继承Facade,在本示例中自定义Facade名称为ApplicationFacade,这个名称也 ...

  3. pureMVC简单示例及其原理讲解四(Controller层)

    本节将讲述pureMVC示例中的Controller层. Controller层有以下文件组成: AddUserCommand.as DeleteUserCommand.as ModelPrepCom ...

  4. pureMVC简单示例及其原理讲解三(View层)

    本篇说的是View层,即视图层,在本示例中包括两个部分:MXML文件,即可视控件:Mediator. 可视控件 可视控件由UserForm.mxml(图1)和UserList.mxml(图2)两个文件 ...

  5. php 变量原理讲解

    php 变量原理讲解 一.变量概念   所谓变量,是指在程序中其值可以变化的量. 程序是管理和处理数据的.在程序运行过程中,我们需要存贮这些数据,变量和常量就是用于保存程序运行时的数据的. 变量通常由 ...

  6. ElasticSearch之 控制相关度原理讲解

    控制相关度 相关度评分背后的理论 如何计算评分的 Lucene 使用布尔模型(Boolean model) 查找匹配文档 并主要的借鉴了 词频/逆向文档频率(term frequency/invers ...

  7. MongoDB优化,建立索引实例及索引机制原理讲解

    MongoDB优化,建立索引实例及索引机制原理讲解 为什么需要索引? 当你抱怨MongoDB集合查询效率低的时候,可能你就需要考虑使用索引了,为了方便后续介绍,先科普下MongoDB里的索引机制(同样 ...

  8. 【SpringBoot】单元测试进阶实战、自定义异常处理、t部署war项目到tomcat9和启动原理讲解

    ========================4.Springboot2.0单元测试进阶实战和自定义异常处理 ============================== 1.@SpringBoot ...

  9. 马士兵hadoop第四课:Yarn和Map/Reduce配置启动和原理讲解

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

随机推荐

  1. 洛谷 1144 最短路计数 bfs

    洛谷1144 最短路计数 传送门 其实这道题目的正解应该是spfa里面加一些处理,,然而,,然而,,既然它是无权图,,那么就直接bfs了,用一个cnt记录一下每一个点的方案数,分几种情况讨论一下转移, ...

  2. 使用SeaJS,require加载Jquery的时候总是为null

    这个问题困扰了我两天,使用别人的例子.官网down下来的example都没有问题.但是放到自己项目里就 var $=require("jquery") 为null. 后来发现,jq ...

  3. BigInteger类(高精度整型)

    位置:java.math.BigInteger 作用:提供高精度整型数据类型及相关操作 一.基本介绍 BigInteger为不可变的任意精度的整数(对象创建后无法改变,每次运算均会产生一个新的对象). ...

  4. rails 修改数据库之后注意修改controller

    rails 修改数据库之后注意修改controller 在view中进行修改之后,注意修改controller中的内容: 这样才可以进行参数的传递:

  5. CF 372B Counting Rectangles is Fun [dp+数据维护]

    题意,给出一个n行m列的矩阵 里面元素是0或者1 给出q个询问 a,b,c,d 求(a,b)到(c,d)有多少个由0组成的矩形 我们定义 watermark/2/text/aHR0cDovL2Jsb2 ...

  6. _DataStructure_C_Impl:AOE网的关键路径

    //_DataStructure_C_Impl:CriticalPath #include<stdio.h> #include<stdlib.h> #include<st ...

  7. nyoj--1185--最大最小值(线段树)

    最大最小值 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 给出N个整数,执行M次询问. 对于每次询问,首先输入三个整数C.L.R: 如果C等于1,输出第L个数到第R个数 ...

  8. Oracle 常见的33个等待事件

    一. 等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指Oracle正等待某种工作,在诊断和优化数据库的时 ...

  9. [SCOI 2007] 排列

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1072 [算法] 状压DP [代码] #include<bits/stdc++. ...

  10. ACM/OI 出题用

    之前出题,很苦恼出数据和检查程序,因为很多繁琐的工作,还很可能小手一抖出问题. 最近又在出题...想起之前的对拍脚本,感觉不能更方便,于是撸了一套出题用的小工具,也学习了一点点的DOS命令 首先是输入 ...