IIC 原理讲解
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 原理讲解的更多相关文章
- OAuth的机制原理讲解及开发流程
本想前段时间就把自己通过QQ OAuth1.0.OAuth2.0协议进行验证而实现QQ登录的心得及Demo实例分享给大家,可一直很忙,今天抽点时间说下OAuth1.0协议原理,及讲解下QQ对于Oaut ...
- pureMVC简单示例及其原理讲解五(Facade)
本节将讲述Facade,Proxy.Mediator.Command的统一管家.自定义Facade必须继承Facade,在本示例中自定义Facade名称为ApplicationFacade,这个名称也 ...
- pureMVC简单示例及其原理讲解四(Controller层)
本节将讲述pureMVC示例中的Controller层. Controller层有以下文件组成: AddUserCommand.as DeleteUserCommand.as ModelPrepCom ...
- pureMVC简单示例及其原理讲解三(View层)
本篇说的是View层,即视图层,在本示例中包括两个部分:MXML文件,即可视控件:Mediator. 可视控件 可视控件由UserForm.mxml(图1)和UserList.mxml(图2)两个文件 ...
- php 变量原理讲解
php 变量原理讲解 一.变量概念 所谓变量,是指在程序中其值可以变化的量. 程序是管理和处理数据的.在程序运行过程中,我们需要存贮这些数据,变量和常量就是用于保存程序运行时的数据的. 变量通常由 ...
- ElasticSearch之 控制相关度原理讲解
控制相关度 相关度评分背后的理论 如何计算评分的 Lucene 使用布尔模型(Boolean model) 查找匹配文档 并主要的借鉴了 词频/逆向文档频率(term frequency/invers ...
- MongoDB优化,建立索引实例及索引机制原理讲解
MongoDB优化,建立索引实例及索引机制原理讲解 为什么需要索引? 当你抱怨MongoDB集合查询效率低的时候,可能你就需要考虑使用索引了,为了方便后续介绍,先科普下MongoDB里的索引机制(同样 ...
- 【SpringBoot】单元测试进阶实战、自定义异常处理、t部署war项目到tomcat9和启动原理讲解
========================4.Springboot2.0单元测试进阶实战和自定义异常处理 ============================== 1.@SpringBoot ...
- 马士兵hadoop第四课:Yarn和Map/Reduce配置启动和原理讲解
马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...
随机推荐
- 【codeforces 805A】Fake NP
[题目链接]:http://codeforces.com/contest/805/problem/A [题意] 问你在l..r这个区间内的所有数字: 对于每个数的因子; 出现次数最多的是哪一个; [题 ...
- Spring学习总结(15)——Spring AOP 拦截器的基本实现
一个程序猿在梦中解决的 Bug 没有人是不做梦的,在所有梦的排行中,白日梦最令人伤感.不知道身为程序猿的大家,有没有睡了一觉,然后在梦中把睡之前代码中怎么也搞不定的 Bug 给解决的经历?反正我是有过 ...
- [置顶]
大数据架构hadoop
摘要:Admaster数据挖掘总监 随着互联网.移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.8万亿GB,对这些海 ...
- OA项目知识总结2
BaseAction的抽取 项目中的每个实体类都对应一个action 每个action都都要继承ActionSupport类 已以及实现ModelDriver接口 并且需要注入service 虽然 ...
- 文件上传前端操作-增加文件与删除文件按钮(jquery实现)
初始 删除与添加 <!DOCTYPE html> <html> <head> <title></title> <meta charse ...
- maven下载的jar包可以查看源码
1:Maven命令下载源码和javadocs 当在IDE中使用Maven时如果想要看引用的jar包中类的源码和javadoc需要通过maven命令下载这些源码,然后再进行引入,通过mvn命令能够容易的 ...
- 基于STM32的学习型通用红外遥控设备的设计实现(三)
CPU: STM32 调试平台: STM32F103ZET和STM32F103VBT 软件平台: Keil uVision4 电路设计: Altium Designer v6.9 http://blo ...
- ym—— Android网络框架Volley(终极篇)
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103).谢谢支持! 没看使用过Volley的同学能够,先看看Android网络框架Volley(体验篇)和 ...
- 关于QObject类的一些理解
QRunnable并没有继承自QObject,所以它和其他QObject组件的通信不能使用传统的信号和槽,要是用信号和槽我们必须将其继承自QObject自动的添加 QThread的退出最好用exit( ...
- Session会在浏览器关闭后消失吗?
转 http://blog.csdn.net/rongwenbin/article/details/51784310 Cookie的两种类型 在项目开发中我们时常将需要在客户端(浏览器)缓存的数 ...