I2C时序分析和基础知识总结
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、仲裁
是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使报 文不被破坏的过程。
所有主机在SCL 线上产生它们自己的时钟来传输I2C 总线上的报文。数 据只在时钟的高电平周期有效。因此,需要一个确定的时钟进行逐位仲裁。 时钟同步通过线与连接I2C 接口到SCL 线来执行。这就是说:SCL 线的 高到低切换会使器件开始数它们的低电平周期,而且一旦器件的时钟变低电 平,它会使SCL 线保持这种状态直到到达时钟的高电平。但是,如果另一个 时钟仍处于低电平周期,这个时钟的低到高切换不会改变SCL 线的状态。因 此,SCL 线被有最长低电平周期的器件保持低电平。此时,低电平周期短的 器件会进入高电平的等待状态。 当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变成高 电平,之后器件时钟和SCL线的状态没有差别,而且所有器件会开始数它们 的高电平周期。首先完成高电平周期的器件会再次将SCL线拉低,这样产生 的同步SCL 时钟的低电平周期由低电平时钟周期最长的器件决定,而高电平 周期由高电平时钟周期最短的器件决定。
•
连接到I2C总线上的器件,若具有I2C总线的硬件接口,则 很容易检测到起始和终止信号。对于不具备I2C总线硬件接 口的有些单片机来说,为了检测起始和终止信号,必须保证 在每个时钟周期内对数据线SDA采样两次。
• 接收器件收到一个完整的数据字节后,有可能需要完成 一些其它工作,如处理内部中断服务等,可能无法立刻接收 下一个字节,这时接收器件可以将SCL线拉成低电平,从而 使主机处于等待状态。直到接收器件准备好接收下一个字节 时,再释放SCL线使之为高电平,从而使数据传送可以继续 进行。
这发生在仲裁之前,这部分称为同步。
仲裁
主机只能在总线空闲的时侯启动传输。两个或多个主机可能在起始条件的 最小持续时间 (tHD; STA) 内产生一个起始条件,结果在总线上产生一个规定 的起始条件。 当SCL 线是高电平时,仲裁在SDA 线发生;这样,在其他主机发送低电 平时,发送高电平的主机将断开它的数据输出级,因为总线上的电平与它自 己的电平不相同。
下图 显示了两个主机的仲裁过程,当然可能包含更多的内容(由连接到 总线的主机数量决定)。此时,产生DATA1 的主机的内部数据电平与SDA 线的实际电平有一些差别,如果关断数据输出,这就意味着总线连接了一 个高输出电平。这不会影响由赢得仲裁的主机初始化的数据传输。
由于I2C 总线的控制只由地址或主机码以及竞争主机发送的数据决定, 没有中央主机,总线也没有任何定制的优先权。
• •
3、数据传送格式 (1)字节传送与应答
每一个字节必须保证是8位长度。数据传送时,先传 பைடு நூலகம்最高位(MSB),每一个被传送的字节后面都必须跟 随一位应答位(即一帧共有9位)。
•
由于某种原因从机不对主机寻址信号应答时(如从 机正在进行实时性的处理工作而无法接收总线上的数 据),它必须将数据线置于高电平,而由主机产生一个 终止信号以结束总线的数据传送。 如果从机对主机进行了应答,但在数据传送一段时间 后无法继续接收更多的数据时,从机可以通过对无法接 收的第一个数据字节的“非应答”通知主机,主机则应 发出终止信号以结束数据的继续传送。 当主机接收数据时,它收到最后一个数据字节后,必 须向从机发出一个结束传送的信号。这个信号是由对从 机的“非应答”来实现的。然后,从机释放SDA线,以 允许主机产生终止信号。
• (2)寻址字节中的特殊地址 • 固定地址编号0000和1111已被保留作为 特殊用途。
•
起始信号后的第一字节的8位为“0000 0000”时, 称为通用呼叫地址。通用呼叫地址的用意在第二字 节中加以说明。格式为:
•
第二字节为 06H时,所有能响应通用呼叫地址的从机器 件复位,并由硬件装入从机地址的可编程部分。能响应命 令的从机器件复位时不拉低SDA和SCL线,以免堵塞总线。 第二字节为 04H时,所有能响应通用呼叫地址并通过硬 件来定义其可编程地址的从机器件将锁定地址中的可编程 位,但不进行复位。
•
•
但如果从机要完成一些其他功能后才能接收或发送下一个完 整的数据字节,那么可以使时钟信号保持低电平迫使主机进入等 待状态。这也是唯一一个从机改变主机时钟的情况。 当从机准备好接受下一个字节时,释放时钟线SCL,数据传 输继续。
• (2)数据帧格式 • I2C总线上传送的数据信号是广义的,既包括地 址信号,又包括真正的数据信号。
•
I2C总线只有两根双向信号线。一根是数据线SDA, 另一根是时钟线SCL。
•
I2C总线通过上拉电阻接正电源。当总线空闲时,两根 线均为高电平。连到总线上的任一器件输出的低电平,都 将使总线的信号变低,即各器件的SDA及SCL都是线“与” 关系。
• 1、数据位的有效性规定
• I2C总线进行数据传送时,时钟信号为高电平期间,数 据线上的数据必须保持稳定,只有在时钟线上的信号为 低电平期间,数据线上的高电平或低电平状态才允许变 化。
2、子地址
带有 I2C 总线的器件除了有从机地址(Slave Address)外,还可能有子地址。 从机地址是指该器件在 I2C 总线上被主机寻址的地址, 而子地址是指该器件内部不 同部件或存储单元的编址。例如,带 I2C 总线接口的 E2PROM 就是拥有子地址器 件的典型代表。 某些器件(只占少数)内部结构比较简单,可能没有子地址,只有必须的从机 地址。 与从机地址一样,子地址实际上也是像普通数据那样进行传输的,传输格式 仍然是与数据相统一的,区分传输的到底是地址还是数据要靠收发双方具体的逻辑 约定。子地址的长度必须由整数个字节组成,可能是单字节(8 位子地址) ,也可 能是双字节(16 位子地址) ,还可能是 3 字节以上,这要看具体器件的规定。
•
•
如果第二字节的方向位B为“1”,则这两个字节命令 称为硬件通用呼叫命令。 • 在这第二字节的高7位说明自己的地址。接在总线上的 智能器件,如单片机或其他微处理器能识别这个地址, 并与之传送数据。硬件主器件作为从机使用时,也用这 个地址作为从机地址。格式为:
•
在系统中另一种选择可能是系统复位时硬件主 机器件工作在从机接收器方式,这时由系统中的 主机先告诉硬件主机器件数据应送往的从机器件 地址,当硬件主机器件要发送数据时就可以直接 向指定从机器件发送数据了。
• (4)10位寻 址 10 位寻址向下兼容7 位寻址,而且可以结合使用。10 位寻址不会
影响已有的7 位寻址。有7 位和10 位地址的器件可以连接到相同的I2C 总线,它们都能用于F/S 模式和Hs 模式系统。 10 位从机地址是由在起始条件(S )或重复起始条件(Sr) 后的 头两个字节组成。 第一个字节的头7 位是11110XX 的组合,其中最后两位(XX) 是 10 位地址的两个最高位(MSB);第一个字节的第8 位是R/W 位, 决定了报文的方向。第一个字节的最低位是‘0 ’表示主机将写信息到 选中的从机。‘1 ’表示主机将向从机读信息。如果R/W 位是0 ,则第 二个字节是10 位从机地址剩下的8 位。如果R/W 位是1 ,则下一个字 节是从机发送给主机的数据。
• 2、起始和终止信号
•
SCL线为高电平期间,SDA线由高电平向低 电平的变化表示起始信号;SCL线为高电平期 间,SDA线由低电平向高电平的变化表示终止 信号。
SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电 平的期间,SDA状态的改变被用来表示起始和停止条件。
I2C 总线是双向传输的总线,因此主机和从机都可能成为发 送器和接收器。如果主机向从机发送数据,则主机是发送器, 而从机是接收器;如果主机从从机读取数据,则主机是接收器, 而从机是发送器。不论主机是发送器还是接收器,时钟信 号 SCL 都要由主机来产生。 每个器件都有一个唯一的地址识别,而且都可以作为一个 发送器和接收器(由器件的功能决定)。很明显,LCD驱动器 只能是接收器,而存储器既可以接收又可以发送数据。
一、什么是I2C
二、I2C时序分析
三、I2C基础知识 四、I2C注意事项
I2C(Inter-Integrated Circuit)总线是由PHILIPS公司(现在的NXP半导体)开发的两 线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种 总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式 小,通信速率较高等优点。
•
• a、主机向从机发送数据,数据传送方向在 整个传送过程中不变:
• 注:有阴影部分表示数据由主机向从机传送,无阴影部分 则表示数据由从机向主机传送。 • A表示应答, A表示非应答(高电平)。S表示起始信号, P表示终止信号。
• b、主机在第一个字节后,立即由从机读数 据 • c、在传送过程中,当需要改变传送方向 时,起始信号和从机地址都被重复产生一 次,但两次读/写方向位正好反相。
1、关于400pF负载电容
(1)波形畸变:电容越大,其滤波效果越明显。当这个电容过大时,很明显 部分通讯信号会被滤除,引起波形畸变,I2C将可能会产生误码,从而无法正常 通信。 (2)总线驱动能力:负载电容决定了总线在某一速率下的稳定性。当输出为 高时,电流通过上拉电阻对负载电容充电。上拉越大,电容越大,所需要的时间 就越长,如果超过了通信周期的10%,那么这个上升沿就太缓了,相应的建立时 间会受到影响。 I2C规范的最大负载电容是400pF,快速模式下是100pF,高速模式下是20pF
• 在起始信号后必须传送一个从机的地址(7位), 第8位是数据的传送方向位(R/),用“0”表示主 机发送数据(T),“1”表示主机接收数据(R)。 每次数据传送总是由主机产生的终止信号结束。 但是,若主机希望继续占用总线进行新的数据传 送,则可以不产生终止信号,马上再次发出起始 信号对另一从机进行寻址。 在总线的一次数据传送过程中,可以有以下几 种组合方式:
• (3)起始字 • 节 起始字节是提供给没有I2C总线接口的单片机查询I2C
总线时使用的特殊字节。 • 不具备I2C总线接口的单片机,则必须通过软件不断地 检测总线,以便及时地响应总线的请求。单片机的速度 与硬件接口器件的速度就出现了较大的差别,为此,I2C 总线上的数据传送要由一个较长的起始过程加以引导。
引导过程由起始信号、起始字节、应答位、 重复起始信号(Sr)组成。
•请求访问总线的主机发出起始信号后,发送起始字 节(0000 0001),另一个单片机可以用一个比较低 的速率采样SDA线,直到检测到起始字节中的7个 “0”中的一个为止。在检测到SDA线上的高电平后, 单片机就可以用较高的采样速率,以便寻找作为同 步信号使用的第二个起始信号Sr。 •在起始信号后的应答时钟脉冲仅仅是为了和总线所 使用的格式一致,并不要求器件在这个脉冲期间作 应答。
No Image
主机-发送器用10 位地址寻址从机-接收器
No Image
主机-接收器用10 位地址寻址从机-发送器
No Image
组合格式。主机用10 位地址寻址从机,然后发送数据到这个从机并向这个从机读数据
1、I2C总线数据传送速率
I2C 总线的通信速率受主机控制,能快能慢。但是最高速率是有限制的,I2C 总 线上数据的传输速率在标准模式(Standard-mode)下为 100kbps(每 秒 100k 位) ,在快速模式下为400kbps。按照后来修订的版本,位速率最高可 达 3.4Mbps。
4、总线的寻址 • I2C总线协议有明确的规定:采用7位的寻址字 节(寻址字节是起始信号后的第一个字节)。 • (1)寻址字节的位定义
•
D7~D1位组成从机的地址。D0位是数 据传送方向位,为“0”时表示主机向从机 写数据,为“1”时表示主机由从机读数据。
•主机发送地址时,总线上的每个从机都将这7 位地址码与自己的地址进行比较,如果相同, 则认为自己正被主机寻址,根据R/位将自己确 定为发送器或接收器。 •从机的地址由固定部分和可编程部分组成。 在一个系统中可能希望接入多个相同的从机, 从机地址中可编程部分决定了可接入总线该类 器件的最大数目。如一个从机的7位寻址位有 4位是固定位,3位是可编程位,这时仅能寻 址8个同样的器件,即可以有8个同样的器件 接入到该I2C总线系统中。