《IIC培训完整课件.ppt》由会员分享,可在线阅读,更多相关《IIC培训完整课件.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、I2C总线协议总线协议(内训)(内训)第一节I2C总线介绍1.1概述I2C(InterIntegrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。1.2I2C总线特性只要求两条总线线路一条串行数据线(SDA);一条串行时钟线(SCL)。每个连接到总线的器件都有唯
2、一的地址;主机可以作为主机发送器或主机接收器。它是一个真正的多主机总线,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏。串行的8 位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。片上的滤波器可以滤去总线数据线上的毛刺波,保证数据完整。连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。1.3I2C 总线的概念I2C 总线为两线总线串行数据(SDA)和串行时钟(SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器、LCD驱动器、存储器或键盘接口),而
3、且都可以作为一个发送器或接收器(由器件的功能决定)。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从机。I2C 总线是一个多主机的总线。这就是说可以连接多于一个能控制总线的器件到总线。在I2C 总线上产生时钟信号通常是主机器件的责任;当在总线上传输数据时,每个主机产生自己的时钟信号。主机发出的总线时钟信号只有在以下的情况才能被改变:慢速的从机器件控制时钟线并延长时钟信号,或者在发生仲裁时被另一个主机改变(表1)1.4总体特征SDA 和SCL 都是双向线路,都通过一个电流源或上拉电阻连
4、接到正的电源电压(见下图)。当总线空闲时,这两条线路都是高电平。连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。第二节I2C总线传输2.1数据的有效性SDA 线上的数据必须在时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。时钟都是由主机发出的。2.2起始和停止条件在I2C 总线中,唯一出现的是被定义为起始(S)和停止(P)条件(见图)的情况。在SCL 线是高电平时,SDA 线从高电平向低电平切换。这个情况表示起始条件。当SCL 是高电平时,SDA 线由低电平向高电平切换表示停止条件。起始和停止条件一般由主机产生。总线在起始条件后
5、被认为处于忙的状态。在停止条件的某段时间后,总线被认为再次处于空闲状态。如果产生重复起始(Sr)条件而不产生停止条件,总线会一直处于忙的状态此时的起始条件(S)和重复起始(Sr)条件在功能上是一样的。如果连接到总线的器件合并了必要的接口硬件,那么用它们检测起始和停止条件十分简便。但是,没有这种接口的微控制器在每个时钟周期至少要采样SDA 线两次来判别有没有发生电平切换。2.3字节格式发送到SDA 线上的每个字节必须为8 位。每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB)(见图6)。如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接
6、收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平迫使主机进入等待状态。当从机准备好接收下一个数据字节并释放时钟线SCL 后,数据传输继续。2.4响应数据传输必须带响应。相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间,发送器释放SDA 线(高)。在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平(见图)。此时发送器读取SDA线,当在相应的时钟脉冲期间读到低电平时表示应答成功。通常被寻址的接收器在接收到的每个字节后,必须产生一个响应。当从机不能响应从机地址时(例如它正在执行一些实时函数不能接收或发送),从机必须使数据线保持高电平。主机然
7、后产生一个停止条件终止传输或者产生重复起始条件开始新的传输。如果从机-接收器响应了从机地址但是在传输了一段时间后不能接收更多数据字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平,主机产生一个停止或重复起始条件。如果传输中有主机接收器,它必须通过在从机不产生时钟的最后一个字节不产生一个响应,向从机发送器通知数据结束。从机-发送器必须释放数据线,允许主机产生一个停止或重复起始条件。2.57位从设备地址格式数据的传输遵循下图所示的格式。在起始条件(S)后,发送了一个从机地址。这个地址共有7 位,紧接着的第8 位是数据方向位(R/W)-0 表示发送(
8、写),1 表示请求数据(读)。数据传输一般由主机产生的停止位(P)终止。但是,如果主机仍希望在总线上通讯,它可以产生重复起始条件(Sr)和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中可能有不同的读写格式结合。2.5.1可能的传输格式(一)主机-发送器发送到从机-接收器.传输的方向不会改变。2.5.2可能的传输格式(二)在第一个字节后,主机立即读从机。在第一次响应时,主机-发送器变成主机-接收器,从机-接收器变成从机-发送器。第一次响应仍由从机产生。之前发送了一个不响应信号的主机产生停止条件。2.5.3可能的传输格式(三)复合格式。传输改变方向的时侯,起始条件和从机地址都会被重复。但
9、R/W 位取反。如果主机接收器发送一个重复起始条件,它之前应该发送了一个不响应信号。2.6 第一个字节(从设备地址)的保留定义2.7广播呼叫2.7.1 广播呼叫(1)广播呼叫地址是用来寻址连接到I2C总线上的每个器件。使用这个地址时,理论上所有器件都会发出一个响应,但是如果器件在广播呼叫结构中不需要任何数据,它可以通过不发出响应来忽略这个地址。如果器件要求从广播呼叫地址得到数据,它会响应这个地址并作为从机-接收器运转。第二个和接下来的字节会被能处理这些数据的每个从机-接收器响应。广播呼叫地址的含意通常在第二个字节说明。这里要考虑两种情况 当最低位B 是0 当最低位B 是12.7.2 广播呼叫(
10、2)当位B 是0 时第二个字节的定义如下:00000110(H 06)。通过硬件写入和复位从机地址的可编程部分。接收到这个两字节序列时,所有打算响应这个广播呼叫地址的器件将复位并接受它们地址的可编程部分。00000100(H04)。通过硬件写从机地址的可编程部分。所有通过硬件定义地址可编程部分(和响应广播呼叫地址)的器件会在接收这两个字节序列时锁存可编程的部分。器件不会复位 00000000(H 00)。这个代码不允许在第二个字节使用注*编程过程的顺序请参考相应器件的数据表2.7.3 广播呼叫(3)当位B 是1 时,这个两字节序列是一个“硬件广播呼叫”(通用呼叫命令)。即序列由一个硬件主机器件
11、发送,例如键盘扫描器,它们不能编程来发送一个期望的从机地址。由于硬件主机预先不知道报文要传输给哪个器件,它只能产生这个硬件广播呼叫和它自己的地址-让系统识别它。这个地址被一个连接到总线的智能器件识别(例如:微控制器)并指引硬件主机的信息。如果硬件主机也可以作为从机,它的从机地址和主机地址一样。2.8起始字节2.8.1 起始字节(1)起始字节是提供给没有I2C总线接口的单片机查询I2C总线时使用的特殊字节。有片上硬件I2C 总线接口的微控制器可被编程为只由总线的请求中断。而不具备I2C总线接口的单片机,则必须通过软件不断地检测总线,以便及时地响应总线的请求。因此,具有快速硬件器件的微控制器和依靠
12、查询的慢速微控制器有速度差别。为此,I2C总线上的数据传送要由一个较长的起始过程加以引导。2.8.2 起始字节(2)请求访问总线的主机发出起始信号后,发送起始字节(0000 0001),另一个单片机可以用一个比较低的速率采样SDA线,直到检测到起始字节中的7个“0”中的一个为止。在检测到SDA线上的高电平后,单片机就可以用较高的采样率,以便寻找作为同步信号使用的第二个起始信号Sr.起始过程包括:起始过程包括:起始条件起始条件(S)起始字节起始字节(00000001)响应时钟脉冲响应时钟脉冲(ACK)重复起始条件重复起始条件(Sr)2.9标准模式I2C 总线规范的扩展标准模式I2C 总线规范在8
13、0 年代的初期已经存在,它规定数据传输速率可高达100kbit/s 而且7 位寻址。这个概念在普及中迅速成长,今天它已经作为一个标准被全世界接受,而且Philips Semiconductors和其他供应商提供了几百种不同的兼容IC。为了符合更高速度的要求以及制造更多可使用的从机地址给数量不断增长的新器件,标准模式I2C 总线规范不断升级,到今天它提供了以下的扩展:快速模式位速率高达400kbit/s。高速模式(Hs 模式),位速率高达3.4Mbit/s 10 位寻址,允许使用高达1024 个额外的从机地址。扩展I2C 总线规范主要有两个原因:现在很多应用需要传输大量的串行数据,要求的位速率远
14、远超过100kbit/s(标准模式),或者甚至是400kbit/s(快速模式)。半导体技术持续改进的结果使I2C 总线器件现在可以使用高达3.4Mbit/s(Hs)模式的位速率,而且接口电路的生产成本没有任何明显的提高。由于使用7 位寻址策略的大多数112 地址能被立即分配,很显然要求更多地址组合来防止为新器件分配从机地址的问题。这个问题可以用新的10 位寻址策略解决,它允许可使用的地址成10倍增长。谢谢每个I2C device和走线都有寄生电容的。电容主要是影响I2C上升下降时间。当寄生电容过大到会影响信号完整性的时候,总线就失效了。虽然说I2C接口是开路(open drain)的,减小上拉电阻也可以改善上升时间,但也不能太小。电阻太小I2C的低电压就会比较高,过不了规格,所以IC管脚的低电平最大值决定了上拉电阻的最小值。此外减少上啦会有很大的漏电流。附件1.1附件1.2关于开路输出和推挽输出推挽输出开路输出附件2表1附件3起始和停止条件附件4I2C总线的响应