您好、欢迎来到现金彩票网!
当前位置:秒速快3平台 > 双向总线 >

IIC总线解析

发布时间:2019-06-12 00:40 来源:未知 编辑:admin

  IIC开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互连方式。电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memory-mapped I/O)的方式来互连微控制器和外围设备的。要实现内存映射,设备必须并行连入微控制器的数据线和地址线,这种方式在连接多个外设时需大量线路和额外地址解码芯片,很不方便并且成本高。

  为了节省微控制器的引脚和和额外的逻辑芯片,使印刷电路板更简单,成本更低,位于荷兰的Philips实验室开发了IIC(Inter-Integrated Circuit),它是由数据线 SDA和时钟线SCL两根线构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送

  IIC数据传输速率有标准模式(100 kbps)、快速模式(400 kbps)和高速模式(3.4 Mbps),另外一些变种实现了低速模式(10 kbps)和快速+模式(1 Mbps)

  每一个I2C总线器件内部的SDA、SCL引脚电路结构都是一样的,引脚的输出驱动与输入缓冲连在一起。其中输出为漏极开路的场效应管、输入缓冲为一只高输入阻抗的同相器。这种电路具有两个特点:

  由于 SDA、SCL 为漏极开路结构,借助于外部的上拉电阻实现了信号的“线与”逻辑;

  IIC总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。

  原理上讲,使用上拉电阻来设置逻辑1会限制总线的最大传输速度。而速度是限制总线应用的因素之一。这也说明为什么要引入高速模式(3.4 Mbps)。在发起一次高速模式传输前,主设备必须先在低速的模式下(例如快速模式)发出特定的“High Speed Master”信号。为缩短信号的周期和提高总线速度,高速模式必须使用额外的I/O缓冲区。另外,总线仲裁在高速模式下可屏蔽掉。

  在 IIC 通信中,主设备决定了时钟速度。因为时钟脉冲信号是由主设备显式发出的。但是,当从设备没办法跟上主设备的速度时,从设备需要一种机制来请求主设备慢一点。这种机制称为时钟拉伸,而基于I²C结构的特殊性,这种机制得到实现。当从设备需要降低传输的速度的时候,它可以拉下时钟线,逼迫主设备进入等待状态,直到从设备释放时钟线. 通信过程

  首先,主设备发一个START信号,然后其它设备开始监听总线以准备接收数据。接着,主设备发送一个7位设备地址加一位的读写操作的数据帧。当所有从设备接收数据后,比对地址自己是否目标设备。如果比对不符,设备进入等待状态,等待STOP信号的来临;如果比对相符,设备会发送一个应答信号——ACK作回应。

  当主设备收到应答后便开始传送或接收数据。数据帧大小为8位。主设备发送数据,从设备应答;相反从设备发送数据,主设备应答。当数据传送完毕,主设备发送一个STOP信号,向其它设备宣告释放总线,其它设备回到初始状态。

  在IIC总线系统中,寻址字节由七位地址位(它占据了D7-D1位)和一位方向位(为D0位)组成。方向位为0时表示主控器将数据写入被控器,为 1时表示主控器从被控器读取数据。主控器发送开始信号后,立即发送寻址字节,这时总线上的所有器件都将寻址字节中的7位地址与自己器件地址比较。如果两者相同,则该器件认为被主控器寻址,并发送应答信号,被控器根据读/写位确定自身是作为发送器还是接收器。

  主器件作为被控器时,其7位从地址在IIC总线地址寄存器中给定,为纯软件地址。而非单片机类型的外围器件地址完全由器件类型与引脚电平给定。IIC总线系统中,没有两个从机的地址是相同的。主控器不应该传输一个和它本身的从地址相同的地址。

  低三位为引脚设定地址,可以由外部引脚来设定(并非所有器件都可以设定);

  常用IIC接口通用器件的器件地址是由种类型号以及寻址码组成的,共7位。如格式如下:

  器件类型由:D7-D4 共4位决定的。这是由半导公司生产时就已固定的了,也就是说这4位已是固定的。用户自定义地址码:D3-D1共3位。这是由用户自己设置的,通常的作法如EEPROM这些器件是由外部IC的3个引脚所组合电平决定的(用常用的名字如A0,A1,A2)。这也就是寻址码。所以为什么同一IIC总线上同一型号的IC只能最多共挂8片同种类芯片的原因了。

  当主机发送最后一个数据字节并收到从机的 ACK 后,通过向从机发送一个停止信号P结束本次通信并释放总线。从机收到P信号后也退出与主机之间的通信

  注意:①主机通过发送地址码与对应的从机建立了通信关系,而挂接在总线上的其它从机虽然同时也收到了地址码,但因为与其自身的地址不相符合,因此提前退出与主机的通信;②主机的一次发送通信,其发送的数据数量不受限制。主机是通过 P 信号通知发送的结束,从机收到 P 信号后退出本次通信;③主机的每一次发送后都是通过从机的 ACK 信号了解从机的接收状况,如果应答错误则重发。

  当主机完成接收数据后,向从机发送一个“非应答信号(ACK=1)”,从机收到ACK=1 的非应答信号后便停止发送

  注意:主机所接收数据的数量是由主机自身决定,当发送“非应答信号/A”时从机便结束传送并释放总线(非应答信号的两个作用:前一个数据接收成功,停止从机的再次发送)。

  1.8. 总线C总线写操作过程中,主机在产生启动信号后控制SCL产生8个时钟脉冲,然后拉低SCL信号为低电平,在这个时候,从机输出应答信号,将SDA信号拉为低电平。如果这个时候主机异常复位,SCL就会被释放为高电平。此时,如果从机没有复位,就会继续I2C的应答,将SDA一直拉为低电平,直到SCL变为低电平,才会结束应答信号。而对于主机来说,复位后检测SCL和SDA信号,如果发现SDA信号为低电平,则会认为I2C总线被占用,会一直等待SCL和SDA信号变为高电平。这样,主机等待从机释放SDA信号,而同时从机又在等待主机将SCL信号拉低以释放应答信号,两者相互等待,I2C总线进人一种死锁状态。同样,当I2C进行读操作时,从机应答后输出数据,如果在这个时刻主机异常复位而此时从机输出的数据位正好为0,也会导致I2C总线进入死锁状态。

  在主机中增加I2C总线恢复程序。每次主机复位后,如果检测到SDA被拉低,则控制SCL产生=9个时钟脉冲(针对8位数据的情况),每发送一个时钟脉冲就检测SDA是否被释放,如果SDA已经被释放就再模拟产生一个停止信号,这样从机就可以完成被挂起的读写操作,从死锁状态中恢复过来。这种方法有一定的局限性,因为大部分主机的I2C模块由内置的硬件电路来实现,软件并不能够直接控制SCL信号模拟产生需要的时钟脉冲

  任何IIC设备都有一个7位地址,理论上,现实中只能有127种不同的IIC设备。实际上,已有IIC的设备种类远远多于这个限制,在一条总线上出现相同的地址的IIC设备的概率相当高。为了突破这个限制,很多设备使用了双重地址——7位地址加引脚地址(external configuration pins)。IIC 标准也预知了这种限制,提出10位的地址方案。

  物理结构上,IIC系统由一条串行数据线SDA和一条串行时钟线SCL组成。主机按一定的通信协议向从机寻址和进行信息传输。在数据传输时,由主机初始化一次数据传输,主机使数据在SDA线上传输的同时还通过SCL线传输时钟。信息传输的对象和方向以及信息传输的开始和终止均由主机决定。

  每个器件都有一个唯一的地址,而且可以是单接收的器件(例如:LCD驱动器)或者可以接收也可以发送的器件(例如:存储器)。发送器或接收器可以在主模式或从模式下操作,这取决于芯片是否必须启动数据的传输还是仅仅被寻址。

  什么是IIC呢:    一个时钟线SCL和一个数据线SDA;半双工通信;    在我看来就是用于IC与IC之间的通信,两条线上可以挂在多个设备,每个设备的地址不同,至于主机如何确定从机地址,每个IC都...

  Rayone_的博客IIC 总线.概述IIC=InterIntegrated-Circuit总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线,它支持多主控(multi...

  三轴陀螺仪的芯片MPU-6050芯片驱动是采用IIC总线协议和处理器进行通信。学习一下IIC总线的协议并总结在此:处理器和芯片间的通信可以形象的比喻成两个人讲线、你说的别人得能听懂:双方约定信号的...博文来自:zailushangha的专栏

  IIC总线转自:总线物理拓扑结构     I2C总线在物理连接上非常简单,分别由SDA(串行数据线)和...

  IIC总线(Inter-IntegratedCircuit,集成电路总线C,是由飞利浦半导体公司在20世纪80年代设计出来的两线式串行总线,用于连接微控制器和其他的外设设备。I2C总线是微...

  基础知识介绍时序图本文所有时序图均来自AT24C02的芯片手册IIC    I2C 总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,两条线可以挂多个设备。IIC...

  本文的程序是主控室STM32F207,读取的芯片是PCF8563。各种宏定义和文件会在末尾说明。 1、IIC的定义:IIC即Inter-IntegratedCircuit(集成电路总线),这种总线类型...博文来自:人生一路,点滴记录

  IIC总线C(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线年代,最初为音频和视频设备开发,如今主要...博文

  一、IIC总线连接图IIC总线简单来说就是一根线来控制时钟和一个线来发送数据。时钟线为SCL,数据线为SDA,两个线按照一定的传输协议来进行传输数据。由于只有一根线来传输数据,也就意味着同一时间只能有...博文来自:RainMi的博客

  一、IIC总线、简介: IIC即Inter-IntegratedCircuit(集成电路总线C总线是PHLIPS公司推出的一种串行总线C总线只有两根双向信号线。一根是数据线SDA,...博文来自:

  一、IIC(一)、IIC有什么作用穿插:上垃电阻一般接电源,下拉电阻一般接地上拉电阻作用:1、增加驱动电流2、让线悬空电平不好确定,让总线在浮空的状态下,有确定的电平,滤除干扰(二)、IIC通信协议1...

  感谢原著作者对人类文化的传播做出的努力!以下内容直译为主,意译为辅,同时笔者可能会加入个人观点以方便理解。如有翻译不当的地方希望各位同仁积极指出,如有必要的话请做出引证,以助于笔者翻译水平的提高,同时...

  10-24ADS1115是12位AD转换芯片,使用广泛,电子设计比赛中经常用到。此历程经过历年比赛积累,可靠好用,对其他MSP430和电赛程序有需求的可以点击作者头像。下载

  iic总线C总线中唯一出现的是被定义为起始S和停止P条件见图5的情况其中一种情况是在SCL线是高电平时SDA线从高电平向低电平切换这个情况表示起始条件当SCL是高电平时SDA线由低电平向高电平切换表示停止...博文来自:All sad people like poetry, happy people like song

  IIC总线是PHILIPS公司推出的一种串口总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串口总线。IIC总线只有两根双向信号线。一根是数据线SDA,一根是时钟线SCL。连接到相...

  IIC总线读写IIC串行总线一般有两根信号线,一根双向数据线SDA,一根时钟线SCLIIC总线协议包括:起始信号、停止信号、数据位DATA、应答位ACK[①]IIC总线四种操作模式:主设备发送模式...

  【STM32】IIC的基本原理(实例:普通IO口模拟IIC时序读取24C02)

  spi,iIC,uart,usart区别01-22求各位大神帮我详解下标题四个的区别,感谢感谢;越详细越好

  IIC详解 1、I2C总线具有两根双向信号线,一根是数据线SDA,另一根是时钟线、IIC总线上可以挂很多设备:多个主设备,多个从设备(外围设备)。上图中主设备是两个单片机,剩下的都是从设...博文来自:海底月

  阅读数 1158IIC的使用总结IIC(Inter-IntegratedCircuit)总线是一种由飞利浦公司开发的两线式串行总线,用用户连接微控制器及其外围设备。它是由数据线SDA和时钟线SCL构成的串行总线,可发...

  该资源包含了除网络上陶晶池串口屏上位机调试视频和一些文档之外,还有一个我自己写的STM32F103的通信程序,以及一个说明文档。该文档详细说明了STM32F1是如何给串口屏发送数据的 相关下载链接:/论坛IIC

  大致的一个数据传输流程是:主机向SDA线上发送一个起始信号,表示有信号进行传输,此时所有连接到IIC总线上的芯片都处于接收状态,接下来,主机发送想要与其进行数据传输的从机地址信号,所有的从机都会接收...

  09-08异步通信主要特点就是有开始位,停止位而且约定传输速度,这些都和iic相符。 但百度百科上说iic是同步通信的一种特殊形式。 论坛

  这几天刚开始搞STM32F103ZET6 的I2C,看完数据手册和一些视频教程(有原子的的和刘凯老师的),最后发现向我这种C都不怎么样的人来说抄袭他们的源代码就有点困难了,只能自己边参考边自己敲,所以论坛

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文来自:我走小路的博客

  Intellij IDEA 如何通过数据库表生成带注解的实体类图文详细教程 Intellij IDEA 如何通过数据库表生成带注解的实体类 Contents 第一步:新建...

  用以前以前写过的自定义课表软件 ,Android 自定义View课程表表格 原生View截图合成分享的图片 看到的是图片只显示到11节处,下面的没有...博文

  阅读数 2万+本matplotlib安装过程在一定程度上参考了 因为学习机器学习的需要,又准备参考《机器学...

  阅读数 3万+目录 前言Jackson使用工具类Jackson配置属性Jackson解析JSON数据Jackson序列化Java对象 前言 Json数据格式这两年发展的很快,其声称相对XML格式有很对好处...

  阅读数 9683首先,确定你已经有了CSR证书请求、开发证书和App ID。如果你不是第一次开发iOS应用程序,那么你可能已经有了这些东西。那么你可以继续以下的步骤。一、配置App ID登录你的provisionin...

  阅读数 2444目前还没有写出这个demo,不过可以参考下面这两个链接,一个是显示日期的,还有一个是合并单元格: 合并单元格:

  阅读数 3171以回归为例吧,回归在某些场合可能更精准 支持连续变量和类别变量,类别变量就是某个属性有三个值,a,b,c,需要用Feature Transformers中的vectorindexer处理 上来是一堆...

  阅读数 18万+扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...

  阅读数 66万+强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...

  阅读数 54万+jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...

  阅读数 2万+简述关于gif的使用在实际项目中我用的并不多,因为我感觉瑕疵挺多的,很多时候锯齿比较严重,当然与图存在很大的关系。关于生成gif的方法可以提供一个网站preloaders,基本是可以满足需求的。简述 ...

  阅读数 2万+今天为了休息下,换换脑子,于是就找到了我之前收藏的一篇python的文章,是关于ddos攻击的一个脚本,正好今天有空,就实践下了。 附上源码pyDdos.py: #!/usr/bin/env ...

  持之以恒授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

  授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。

http://raggedydreams.com/shuangxiangzongxian/242.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有