温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
I2C
总线
规范
中文版
广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-1-I2C 总线规范 目录 1序言.3 1.1 版本 1.0-1992.3 1.2 版本 2.0-1998.3 1.3 版本 2.1-2000.3 1.4 购买 Philips 的 I2C 总线元件.3 2I2C 总线使设计人员和厂商都得益.3 2.1 设计人员的得益.4 2.2 厂商的得益.5 3介绍 I2C 总线规范.6 4I2C 总线的概念.6 5总体特征.7 6位传输.7 6.1 数据的有效性.7 6.2 起始和停止条件.8 7传输数据.9 7.1 字节格式.9 7.2 响应.9 8仲裁和时钟发生.10 8.1 同步.10 8.2 仲裁.10 8.3 用时钟同步机制作为握手.11 97 位的地址格式.12 107 位寻址.13 10.1 第一个字节的位定义.13 10.1.1 广播呼叫地址.14 10.1.2 起始字节.15 10.1.3 CBUS 的兼容性.16 11标准模式 I2C 总线规范的扩展.16 12快速模式.17 13Hs 模式.17 13.1 高速传输.17 13.2 Hs 模式的串行数据传输格式.19 13.3 从 F/S 模式切换到 Hs 模式以及返回.20 13.4 低速模式中的快速模式器件.21 13.5 串行总线系统的混合速度模式.21 13.5.1 在混合速度总线系统中的 F/S 模式传输.22 13.5.2 在混合速度总线系统中的 Hs 模式传输.22 13.5.3 混合速度总线系统中电桥的时序要求.24 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-2-1410 位寻址.24 14.1 头两个字节位的定义.24 14.2 10 位寻址的格式.24 14.3 广播呼叫地址和 10 位寻址的起始字节.26 15I/O 级和总线线路的电气规范和时序.26 15.1 标准和快速模式器件.26 15.2 Hs 模式器件.28 16I2C 总线器件到总线线路的电气连接.30 16.1 标准模式 I2C 总线器件电阻 Rp和 RS的最大和最小值.31 17应用信息.33 17.1 快速模式 I2C 总线器件的斜率控制输出级.33 17.2 快速模式 I2C 总线器件的开关上拉电路.34 17.3 总线线路的配线方式.34 17.4 快速模式 I2C 总线器件电阻 Rp和 RS的最大和最小值.35 17.5 Hs 模式 I2C 总线器件的电阻 Rp和 RS的最大和最小值.35 18F/S 模式 I2C 总线系统的双向电平转换器.35 18.1 连接逻辑电平不同的器件.36 18.1.1 电平转换器的操作.36 19Philips 提供的开发工具.37 20支持的文献.37 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-3-1序言 1.1 版本 1.0-1992 1992 I2C 总线规范的这个版本有以下的修正 删除了用软件编程从机地址的内容因为实现这个功能相当复杂而且不被使用 删除了低速模式实际上这个模式是整个 I2C 总线规范的子集不需要明确地详细说明 增加了快速模式它将位速率增加 4 倍到达 400kbit/s快速模式器件都向下兼容即它们可以在0100kbit/s 的 I2C 总线系统中使用 增加了 10 位寻址允许 1024 个额外的从机地址 快速模式器件的斜率控制和输入滤波改善了 EMC 性能 注意100kbit/s 的 I2C 总线系统或 100kbit/s 器件都没有改变 1.2 版本 2.0-1998 I2C 总线实际上已经成为一个国际标准在超过 100 种不同的 IC 上实现而且得到超过 50 家公司的许可但是现在的很多应用要求总线速度更高电源电压更低这个更新版的 I2C 总线规范满足这些要求而且有以下的修正 增加了高速模式Hs 模式它将位速率增加到 3.4Mbit/sHs 模式的器件可以和 I2C 总线系统中快速和标准模式器件混合使用位速率从 03.4Mbit/s 电源电压是 2V 或更低的器件的低输出电平和滞后被调整到符合噪声容限的要求而且保持和电源电压更高的器件兼容 快速模式输出级的 0.6V 6mA 要求被删除 新器件的固定输入电平被总线电压相关的电平代替 增加了双向电平转换器的应用信息 1.3 版本 2.1-2000 I2C 总线规范的 V2.1 版有以下微小的修改 在 Hs 模式的重复起始条件后可以延长时钟信号 SCLH见 13.2 节的图 2225 和 32 Hs 模式中的一些时序参数变得更随意见表 6 和表 7 1.4 购买 Philips 的 I2C 总线元件 购买 Philips 的 I2C 元件同时传递了一个在 Philips 的 I2C 专利下在 I2C 系统使用元件使系统符合由Philips 定义的 I2C 规范的许可证 2I2C 总线使设计人员和厂商都得益 在消费者电子电讯和工业电子中看上去不相关的设计里经常有很多相似的地方例如几乎每个系统都包括 一些智能控制通常是一个单片的微控制器 通用电路例如 LCD 驱动器远程 I/O 口RAMEEPROM 或数据转换器 面向应用的电路譬如收音机和视频系统的数字调谐和信号处理电路或者是音频拨号电话的DTMF 发生器 为了使这些相似之处对系统设计者和器件厂商都得益而且使硬件效益最大电路最简单Philips 开发了一个简单的双向两线总线实现有效的 IC 之间控制这个总线就称为 Inter IC 或 I2C 总线现在 Philips包括超过 150 种 CMOS 和双极性兼容 I2C 总线的 IC可以执行前面提到的三种类型的功能所有符合 I2C总线的器件组合了一个片上接口使器件之间直接通过 I2C 总线通讯这个设计概念解决了很多在设计数字控制电路时遇到的接口问题 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-4-下面是 I2C 总线的一些特征 只要求两条总线线路一条串行数据线SDA一条串行时钟线SCL 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地址主机可以作为主机发送器或主机接收器 它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏 串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s快速模式下可达 400kbit/s高速模式下可达 3.4Mbit/s 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整 连接到相同总线的 IC 数量只受到总线的最大电容 400pF 限制 图 1 是两个 I2C 总线应用的例子 2.1 设计人员的得益 符合 I2C 总线的 IC 允许系统设计快速向前推进直接从功能结构图到原型此外由于它们直接剪贴到 I2C 总线没有任何额外的外部接口所以允许简单地通过从或者向总线剪贴或不剪贴IC来修改或升级原型系统 符合 I2C 总线的 IC 还有一些功能特别吸引设计人员 结构图的功能模块与实际的 IC 对应设计快速从结构图向最后的原理图推进 不需要设计总线接口因为 I2C 总线接口已经集成在片上 集成的寻址和数据传输协议允许系统完全由软件定义 相同类型的 IC 经常用于很多不同的应用 由于设计人员快速熟悉了用兼容 I2C 总线的 IC 表示经常使用的功能模块使设计时间减少 在系统中增加或删除 IC 不会影响总线的其他电路 故障诊断和调试都很简单故障可被立即寻迹 通过聚集一个可再使用的软件模块的库减少软件开发时间 除了这些优点外符合 I2C 总线的 CMOS IC 还向设计者在特别吸引的可移植装置和电池供电系统方面提供了特殊的功能 它们都有 极低的电流消耗 抗高噪声干扰 电源电压范围宽 工作的温度范围广 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-5-SDASCLMICRO-CONTROLLERPCB83C528PLLSYNTHESIZERTSA5512NON-VOLATILEMEMORYPCF8582ESTEREO/DUALSOUNDDECODERTDA9840HI-FIAUDIOPROCESSORTDA9860SINGLE-CHIPTEXTSAA52XXM/S COLOURDECODERTDA9160APICTURESIGNALIMPROVEMENTTDA4670VIDEOPROCESSORTDA4685ON-SCREENDISPLAYPCA8510(a)SDASCLLINEINTERFACEPCA1070BURST MODECONTROLLERPCD5042ADPCMPCD5032(b)DTMFGENERATORPCD3311MICRO-CONTROLLERP80CLXXX 图 1 I2C 应用的两个例子a高性能的高度集成电视bDECT 无绳电话基站 2.2 厂商的得益 符合 I2C 总线的 IC 不只帮助了设计者它们也使设备厂商得到很多益处因为 简单的两线串行 I2C 总线将互联减到最小因此 IC 的管脚更少而且 PCB 的线路也减少结果使PCB 更小和更便宜 完全完整的 I2C 总线协议不需要地址译码器和其他胶合逻辑 I2C 总线的多主机功能允许通过外部连接到生产线快速测试和调整最终用户的设备 符合 I2C 总线的 IC 提供 SO小型VSO超小型以及 DIL 封装甚至减少了 IC 的空间要求 这些只是一些益处另外兼容 I2C 总线的 IC 通过允许简单地构造设备变量和保持设计是最新的简易升级功能增加了系统设计的灵活性这样整个装置系列可以围绕一个基本的模型开发新设备的升级或者功能增强的模型即扩展的存储器远程控制等等可以简单地通过剪贴相应的 IC 到总线上产生如果需要更大的 ROM只需要从我们广泛的 IC 中选择一个有更大 ROM 的微控制器就可以了由于新的 IC 要广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-6-取代旧的增加新功能到装置或者提升它的性能只要简单地从总线上移去过时的 IC 然后换上它的后续 IC就可以了 3介绍 I2C 总线规范 对于面向 8 位的数字控制应用譬如那些要求用微控制器的要建立一些设计标准 一个完整的系统通常由至少一个微控制器和其他外围器件例如存储器和 I/O 扩展器组成 系统中不同器件的连接成本必须最小 执行控制功能的系统不要求高速的数据传输 总的效益由选择的器件和互连总线结构的种类决定 产生一个满足这些标准的系统需要一个串行的总线结构 尽管串行总线没有并行总线的数据吞吐能力但它们只要很少的配线和 IC 连接管脚 然而 总线不仅仅是互连的线 还包含系统通讯的所有格式和过程 串行总线的器件间通讯必须有某种形式的协议避免所有混乱数据丢失和妨碍信息的可能性快速器件必须可以和慢速器件通讯系统必须不能基于所连接的器件否则不可能进行修改或改进应当设计一个过程决定哪些器件何时可以控制总线而且如果有不同时钟速度的器件连接到总线必须定义总线的时钟源所有这些标准都在 I2C 总线的规范中 4I2C 总线的概念 I2C 总线支持任何 IC 生产过程NMOSCMOS双极性两线串行数据SDA和串行时钟SCL线在连接到总线的器件间传递信息每个器件都有一个唯一的地址识别无论是微控制器LCD驱动器存储器或键盘接口而且都可以作为一个发送器或接收器由器件的功能决定很明显LCD驱动器只是一个接收器而存储器则既可以接收又可以发送数据除了发送器和接收器外器件在执行数据传输时也可以被看作是主机或从机见表 1主机是初始化总线的数据传输并产生允许传输的时钟信号的器件此时任何被寻址的器件都被认为是从机 表 1 I2C 总线术语的定义 术语 描述 发送器 发送数据到总线的器件 接收器 从总线接收数据的器件 主机 初始化发送产生时钟信号和终止发送的器件 从机 被主机寻址的器件 多主机 同时有多于一个主机尝试控制总线但不破坏报文 仲裁 是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使报文不被破坏的过程 同步 两个或多个器件同步时钟信号的过程 I2C 总线是一个多主机的总线 这就是说可以连接多于一个能控制总线的器件到总线 由于主机通常是微控制器让我们考虑以下数据在两个连接到 I2C 总线的微控制器之间传输的情况见图 2 这突出了 I2C 总线的主机从机和接收器发送器的关系应当注意的是这些关系不是持久的只由当时数据传输的方向决定传输数据的过程如下 1假设微控制器 A 要发送信息到微控制器 B 微控制器 A主机寻址微控制器 B从机 微控制器 A主机发送器发送数据到微控制器 B从机接收器 微控制器 A 终止传输 2如果微控制器 A 想从微控制器 B 接收信息 微控制器 A主机寻址微控制器 B从机 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-7-微控制器 A主机接收器从微控制器 B从机发送器接收数据 微控制器 A 终止传输 甚至在这种情况下主机微控制器 A也产生定时而且终止传输 连接多于一个微控制器到 I2C 总线的可能性意味着超过一个主机可以同时尝试初始化传输数据为了避免由此产生混乱发展出一个仲裁过程它依靠线与连接所有 I2C 总线接口到 I2C 总线 如果两个或多个主机尝试发送信息到总线在其他主机都产生0的情况下首先产生一个1的主机将丢失仲裁仲裁时的时钟信号是用线与连接到 SCL 线的主机产生的时钟的同步结合关于仲裁的更详细信息请参考第 8 章 SDASCLMICRO-CONTROLLERASTATICRAM OREEPROMLCDDRIVERGATEARRAYADCMICRO-CONTROLLERB 图 2 使用两个微控制器的 I2C 总线配置举例 在 I2C 总线上产生时钟信号通常是主机器件的责任当在总线上传输数据时每个主机产生自己的时钟信号主机发出的总线时钟信号只有在以下的情况才能被改变慢速的从机器件控制时钟线并延长时钟信号或者在发生仲裁时被另一个主机改变 5总体特征 SDA 和 SCL 都是双向线路都通过一个电流源或上拉电阻连接到正的电源电压见图 3当总线空闲时这两条线路都是高电平连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能I2C 总线上数据的传输速率在标准模式下可达 100kbit/s在快速模式下可达 400kbit/s在高速模式下可达 3.4Mbit/s 连接到总线的接口数量只由总线电容是 400pF 的限制决定 关于高速模式主机器件的信息请参考第 13 章 6位传输 由于连接到 I2C 总线的器件有不同种类的工艺CMOSNMOS双极性逻辑0低和1高的电平不是固定的它由 VDD的相关电平决定见第 15 章的电气规范每传输一个数据位就产生一个时钟脉冲 6.1 数据的有效性 SDA 线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在 SCL 线的时钟信号是低电平时才能改变见图 4 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-8-SCLKN1OUTSCLKINSCLKDATAN1OUTDATAINDEVICE 1SDA(Serial Data Line)SCL(Serial Clock Line)SCLKN2OUTSCLKINSCLKDATAN2OUTDATAINDEVICE 2VDDRpRppull-upresistors 图 3 标准模式器件和快速模式器件连接到 I2C 总线 data linestable;data validchangeof dataallowedSDASCL 图 4 I2C 总线的位传输 6.2 起始和停止条件 在 I2C 总线中唯一出现的是被定义为起始S和停止P条件见图 5的情况 其中一种情况是在 SCL 线是高电平时SDA 线从高电平向低电平切换这个情况表示起始条件 当 SCL 是高电平时SDA 线由低电平向高电平切换表示停止条件 起始和停止条件一般由主机产生总线在起始条件后被认为处于忙的状态在停止条件的某段时间后总线被认为再次处于空闲状态总线的空闲状态将在第 15 章详细说明 如果产生重复起始Sr条件而不产生停止条件总线会一直处于忙的状态此时的起始条件S和重复起始Sr条件在功能上是一样的见图 10因此在本文档的剩余部分符号 S 将作为一个通用的术语既表示起始条件又表示重复起始条件除非有特别声明的 Sr 如果连接到总线的器件合并了必要的接口硬件那么用它们检测起始和停止条件十分简便但是没有这种接口的微控制器在每个时钟周期至少要采样 SDA 线两次来判别有没有发生电平切换 SDASCLPSTOP conditionSDASCLSSTART condition 图 5 起始和停止条件 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-9-7传输数据 7.1 字节格式 发送到 SDA 线上的每个字节必须为 8 位 每次传输可以发送的字节数量不受限制 每个字节后必须跟一个响应位首先传输的是数据的最高位MSB见图 6如果从机要完成一些其他功能后例如一个内部中断服务程序才能接收或发送下一个完整的数据字节可以使时钟线 SCL 保持低电平迫使主机进入等待状态当从机准备好接收下一个数据字节并释放时钟线 SCL 后数据传输继续 在一些情况下可以用与 I2C 总线格式不一样的格式例如兼容 CBUS 的器件甚至在传输一个字节时用这样的地址起始的报文可以通过产生停止条件来终止此时不会产生响应见 10.1.3 节 7.2 响应 数据传输必须带响应相关的响应时钟脉冲由主机产生在响应的时钟脉冲期间发送器释放 SDA 线高 在响应的时钟脉冲期间 接收器必须将 SDA 线拉低 使它在这个时钟脉冲的高电平期间保持稳定的低电平见图 7当然必须考虑建立和保持时间在第 15 章详细说明 通常 被寻址的接收器在接收到的每个字节后 除了用 CBUS 地址开头的报文 必须产生一个响应 见10.1.3 节 当从机不能响应从机地址时例如它正在执行一些实时函数不能接收或发送从机必须使数据线保持高电平主机然后产生一个停止条件终止传输或者产生重复起始条件开始新的传输 如果从机接收器响应了从机地址但是在传输了一段时间后不能接收更多数据字节主机必须再一次终止传输这个情况用从机在第一个字节后没有产生响应来表示从机使数据线保持高电平主机产生一个停止或重复起始条件 如果传输中有主机接收器它必须通过在从机不产生时钟的最后一个字节不产生一个响应向从机发送器通知数据结束从机发送器必须释放数据线允许主机产生一个停止或重复起始条件 图 6 I2C 总线的数据传输 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-10-图 7 I2C 总线的响应 8仲裁和时钟发生 8.1 同步 所有主机在 SCL 线上产生它们自己的时钟来传输 I2C 总线上的报文 数据只在时钟的高电平周期有效因此需要一个确定的时钟进行逐位仲裁 时钟同步通过线与连接 I2C 接口到 SCL 线来执行这就是说SCL 线的高到低切换会使器件开始数它们的低电平周期而且一旦器件的时钟变低电平它会使 SCL 线保持这种状态直到到达时钟的高电平见图 8但是如果另一个时钟仍处于低电平周期这个时钟的低到高切换不会改变 SCL 线的状态因此SCL 线被有最长低电平周期的器件保持低电平此时低电平周期短的器件会进入高电平的等待状态 CLK1CLK2SCLcounterresetwaitstatestart countingHIGH period 图 8 仲裁过程中的时钟同步 当所有有关的器件数完了它们的低电平周期后时钟线被释放并变成高电平之后器件时钟和 SCL线的状态没有差别而且所有器件会开始数它们的高电平周期首先完成高电平周期的器件会再次将 SCL线拉低 这样产生的同步 SCL 时钟的低电平周期由低电平时钟周期最长的器件决定而高电平周期由高电平时钟周期最短的器件决定 8.2 仲裁 主机只能在总线空闲的时侯启动传输两个或多个主机可能在起始条件的最小持续时间tHD;STA内产生一个起始条件结果在总线上产生一个规定的起始条件 当 SCL 线是高电平时仲裁在 SDA 线发生这样在其他主机发送低电平时发送高电平的主机将断开它的数据输出级因为总线上的电平与它自己的电平不相同 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-11-仲裁可以持续多位它的第一个阶段是比较地址位有关的寻址信息请参考第 10 章和第 14 章如果每个主机都尝试寻址相同的器件仲裁会继续比较数据位如果是主机发送器或者比较响应位如果是主机接收器因为 I2C 总线的地址和数据信息由赢得仲裁的主机决定 在仲裁过程中不会丢失信息 丢失仲裁的主机可以产生时钟脉冲直到丢失仲裁的该字节末尾 由于 Hs 模式的主机有一个唯一的 8 位主机码因此一般在第一个字节就可以结束仲裁见第 13 章 如果主机也结合了从机功能而且在寻址阶段丢失仲裁它很可能就是赢得仲裁的主机在寻址的器件因此丢失仲裁的主机必须立即切换到它的从机模式 图 9 显示了两个主机的仲裁过程 当然 可能包含更多的内容 由连接到总线的主机数量决定此时产生 DATA1 的主机的内部数据电平与 SDA 线的实际电平有一些差别如果关断数据输出这就意味着总线连接了一个高输出电平这不会影响由赢得仲裁的主机初始化的数据传输 DATA1DATA2SDASCLSmaster 1 loses arbitrationDATA 1 SDA 图 9 两个主机的仲裁过程 由于 I2C 总线的控制只由地址或主机码以及竞争主机发送的数据决定没有中央主机总线也没有任何定制的优先权 必须特别注意的是在串行传输时当重复起始条件或停止条件发送到 I2C 总线的时侯仲裁过程仍在进行如果可能产生这样的情况有关的主机必须在帧格式相同位置发送这个重复起始条件或停止条件也就是说仲裁在不能下面情况之间进行 重复起始条件和数据位 停止条件和数据位 重复起始条件和停止条件 从机不被卷入仲裁过程 8.3 用时钟同步机制作为握手 时钟同步机制除了在仲裁过程中使用外还可以用于使能接收器处理字节级或位级的快速数据传输 在字节级的快速传输中器件可以快速接收数据字节但需要更多时间保存接收到的字节或准备另一个要发送的字节然后从机以一种握手过程见图 6在接收和响应一个字节后使 SCL 线保持低电平迫使主机进入等待状态直到从机准备好下一个要传输的字节 在位级的快速传输中器件例如对 I2C 总线有或没有限制的微控制器可以通过延长每个时钟的低电平周期减慢总线时钟从而任何主机的速度都可以适配这个器件的内部操作速率 在 Hs 模式中握手的功能只能在字节级使用见第 13 章 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-12-97 位的地址格式 数据的传输遵循图 10 所示的格式在起始条件S后发送了一个从机地址这个地址共有 7 位紧接着的第 8 位是数据方向位R/W0表示发送写1表示请求数据读数据传输一般由主机产生的停止位P终止但是如果主机仍希望在总线上通讯它可以产生重复起始条件Sr和寻址另一个从机而不是首先产生一个停止条件在这种传输中可能有不同的读写格式结合 图 10 完整的数据传输 可能的数据传输格式有 主机发送器发送到从机接收器传输的方向不会改变见图 11 在第一个字节后主机立即读从机见图 12在第一次响应时主机发送器变成主机接收器 从机接收器变成从机发送器 第一次响应仍由从机产生 之前发送了一个不响应信号A的主机产生停止条件 复合格式见图 13传输改变方向的时侯起始条件和从机地址都会被重复但 R/W 位取反如果主机接收器发送一个重复起始条件它之前应该发送了一个不响应信号A 注意 1 复合格式可以用于例如控制一个串行存储器在第一个数据字节期间要写内部存储器的位置在重复起始条件和从机地址后数据可被传输 2 自动增加或减少之前访问的存储器位置等所有决定都由器件的设计者决定 3 每个字节都跟着一个响应位在序列中用 A 或 A 模块表示 4 兼容 I2C 总线的器件在接收到起始或重复起始条件时必须复位它们的总线逻辑甚至在这些起始条件没有根据正确的格式放置它们也都期望发送从机地址 5 起始条件后面立即跟着一个停止条件报文为空是一个不合法的格式 图 11 主机发送器用 7 位地址寻址从机接收器传输方向不变 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-13-图 12 在第一个字节后主机立即读从机 图 13 复合格式 107 位寻址 I2C 总线的寻址过程是通常在起始条件后的第一个字节决定了主机选择哪一个从机 例外的情况是可以寻址所有器件的广播呼叫地址使用这个地址时理论上所有器件都会发出一个响应但是也可以使器件忽略这个地址 广播呼叫地址的第二个字节定义了要采取的行动 这个过程将在 10.1.1 节详细介绍有关 10 位寻址的信息请参考第 14 章 10.1 第一个字节的位定义 第一个字节的头 7 位组成了从机地址见图 14最低位LSB是第 8 位它决定了报文的方向第一个字节的最低位是0表示主机会写信息到被选中的从机1表示主机会向从机读信息 当发送了一个地址后系统中的每个器件都在起始条件后将头 7 位与它自己的地址比较如果一样器件会任务它被主机寻址至于是从机接收器还是从机发送器都由 R/W 位决定 R/WLSBMSBslave address 图 14 起始条件后的第一个字节 从机地址由一个固定和一个可编程的部分构成由于很可能在一个系统中有几个同样的器件从机地址的可编程部分使最大数量的这些器件可以连接到 I2C 总线上器件可编程地址位的数量由它可使用的管脚决定例如如果器件有 4 个固定的和 3 个可编程的地址位那么相同的总线上共可以连接 8 个相同的器件 I2C 总线委员会协调 I2C 地址的分配进一步的信息可以从最后列出的 Philips 代理商处获得保留的两组 8 位地址0000XXX 和 1111XXX的用途见表 2从机地址的 11110XX 位组合保留给 10 位寻址见第 14 章 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-14-表 2 第一个字节中位的定义 从机地址 R/W 位 描述 0000 000 0 广播呼叫地址 0000 000 1 起始字节1 0000 001 X CBUS 地址2 0000 010 X 保留给不同的总线格式3 0000 011 X 保留到将来使用 0000 1XX X Hs 模式主机码 1111 1XX X 保留到将来使用 1111 0XX X 10 位从机寻址 注 1 没有器件允许在接收到起始字节后响应 2 CBUS 地址已被保留使可以在相同的系统内部混合兼容 CBUS 和兼容 I2C 总线的器件接收到这个地址时兼容 I2C 总线的器件不能响应 3 保留给不同总线格式的地址包括使能 I2C 和其他协议混合只有可以在这种格式和协议下工作兼容 I2C 总线的器件才能响应这个地址 10.1.1 广播呼叫地址 广播呼叫地址是用来寻址连接到 I2C 总线上的每个器件但是如果器件在广播呼叫结构中不需要任何数据它可以通过不发出响应来忽略这个地址如果器件要求从广播呼叫地址得到数据它会响应这个地址并作为从机接收器运转第二个和接下来的字节会被能处理这些数据的每个从机接收器响应广播呼叫地址的含意通常在第二个字节说明见图 15 这里要考虑两种情况 当最低位 B 是0 当最低位 B 是1 LSBsecond byte00000000AXXXXXXXBAfirst byte(general call address)图 15 广播呼叫地址格式 当位 B 是0时第二个字节的定义如下 00000110H06通过硬件写入和复位从机地址的可编程部分接收到这个两字节序列时所有打算响应这个广播呼叫地址的器件将复位并接受它们地址的可编程部分要采取预防措施确保器件不会在加上电源电压后将 SDA 或 SCL 线拉低因为这些低电平会阻塞总线 00000100 H 04通过硬件写从机地址的可编程部分 所有通过硬件定义地址可编程部分 和响应广播呼叫地址的器件会在接收这两个字节序列时锁存可编程的部分器件不会复位 00000000H00这个代码不允许在第二个字节使用 编程过程的顺序请参考相应器件的数据表 剩下的代码没有被确定器件必须忽略它们 当位 B 是1时这个两字节序列是一个硬件广播呼叫即序列由一个硬件主机器件发送例如键盘扫描器它们不能编程来发送一个期望的从机地址由于硬件主机预先不知道报文要传输给哪个器件广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-15-它只能产生这个硬件广播呼叫和它自己的地址让系统识别它见图 16 第二个字节中剩下的 7 位是硬件主机的地址这个地址被一个连接到总线的智能器件识别例如微控制器并指引硬件主机的信息如果硬件主机也可以作为从机它的从机地址和主机地址一样 图 16 硬件主机发送器的数据传输 在一些系统中可以选择在系统复位后在从机接收器模式中设置硬件主机发送器这样系统的配置主机可以告诉硬件主机发送器现在处于从机接收器模式数据必须发送到哪个地址见图 17这个编程过程后硬件主机仍处于主机发送器模式 10.1.2 起始字节 微控制器可以用两种方法连接到 I2C 总线有片上硬件 I2C 总线接口的微控制器可被编程为只由总线的请求中断当器件没有这种接口时它必须经常通过软件监控总线很显然微控制器监控或查询总线的次数越多用于执行自己功能的时间越少 因此快速硬件器件和相关的依靠查询的慢速微控制器有速度差别 此时数据传输前应有一个比正常时间长的起始过程见图 18起始过程包括 起始条件S 起始字节00000001 响应时钟脉冲ACK 重复起始条件Sr 图 17 由可以直接转储数据到从机器件的硬件发送器 a)配置主机发送转储地址到硬件主机 b)硬件主机转储数据到选中的从机 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-16-S9821Sr7ACKdummyacknowledge(HIGH)start byte 00000001SDASCL 图 18 起始字节过程 在要求总线访问的主机发送起始条件 S 后发送起始字节00000001因此另一个微控制器可以采样以低采样速率采样 SDA 线直到在启动字节检测到 7 个 0在 SDA 线检测到这个低电平后微控制器切换到一个更高的采样速率寻找用于同步的重复起始条件 Sr 接收到重复起始条件 Sr 后硬件接收器会复位从而忽略了起始字节 在起始字节后产生一个相关的响应时钟脉冲这只在遵守总线的字节处理格式时出现没有器件允许响应起始字节 10.1.3 CBUS 的兼容性 CBUS 接收器可以连接到标准模式的 I2C 总线但是必须连接第三条叫 DLEN 的线而且要省略响应位通常I2C 的传输是 8 位的字节序列兼容 CBUS 的器件有不同的格式 在混合的总线结构中I2C 总线器件必须不能响应 CBUS 的报文因此保留了一个兼容 I2C 总线器件不会相应的特殊 CBUS 地址0000001X发送 CBUS 地址后DLEN 线被激活发送 CBUS 格式的报文见图 19在停止条件后所有器件再次准备好接收数据 主机发送器可以在发送 CBUS 地址后发送 CBUS 格式传输由能被所有器件识别的停止条件结束 注意如果已知 CBUS 配置而且不能预见 CBUS 兼容器件的扩展 设计者允许根据所用器件的特殊要求调整保持时间 SPSTOPconditionCBUSload pulsen-data bitsCBUSaddressSTARTconditionR/WbitACKrelatedclock pulseSDASCLDLEN 图 19 CBUS 发送器接收器的数据传输格式 11标准模式 I2C 总线规范的扩展 标准模式 I2C 总线规范在 80 年代的初期已经存在它规定数据传输速率可高达 100kbit/s 而且 7 位寻址这个概念在普及中迅速成长今天它已经作为一个标准被全世界接受而且 Philips Semiconductors和其他供应商提供了几百种不同的兼容 IC为了符合更高速度的要求以及制造更多可使用的从机地址给数量不断增长的新器件标准模式 I2C 总线规范不断升级到今天它提供了以下的扩展 快速模式位速率高达 400kbit/s 高速模式Hs 模式位速率高达 3.4Mbit/s 10 位寻址允许使用高达 1024 个额外的从机地址 广州周立功单片机发展有限公司 Tel:(020)38730976 38730977 Fax:38730925 http:/-17-扩展 I2C 总线规范主要有两个原因 现在很多应用需要传输大量的串行数据要求的位速率远远超过 100kbit/s标准模式或者甚至是 400kbit/s快速模式半导体技术持续改进的结果使 I2C 总线器件现在可以使用高达3.4Mbit/sHs 模式的位速率而且接口电路的生产成本没有任何明显的提高 由于使用 7 位寻址策略的大多数 112 地址能被立即分配很显然要求更多地址结合来防止为新器件分配从机地址的问题这个问题可以用新的 10 位寻址策略解决它允许可使用的地址成 10 倍增长 带有快速或 Hs 模式 I2C 总线接口的新从机器件可以有 7 位或 10 位的从机地址如果可能的话首选7 位地址因为它是最便宜的硬件解决方案而且报文长度最短有 7 位和 10 位地址的器件可以在相同的I2C 总线系统中混合使用不需要考虑它是 F/S 模式还是 Hs 模式的系统现有的和未来的主机都能产生 7位或 10 位的地址 12快速模式 已经在标准模式 I2C 总线规范提出的协议格式逻辑电平和 SDA 以及 SCL 线的最大电容负载在快速模式 I2C 总线规范都没有修改 带 I2C 总线接口的新器件必须至少符合快速模式或 Hs 模式规范的最小要求见第 13 章 快速模式器件可以在 400kbit/s 下接收和发送最小要求是它们可以和 400kbit/s 传输同步可以延长 SCL 信号的低电平周期来减慢传输快速模式器件都向下兼容可以和标准模式器件在 0100kbit/s 的I2C 总线系统通讯但是由于标准模式器件不向上兼容所以不能在快速模式 I2C 总线系统中工作因为它们不能跟上这么快的传输速率因而会产生不可预料的状态 快速模式 I2C 总线规范与标准模式相比有以下额外的特征 最大位速率增加到 400kbit/s 调整了串行数据SDA和串行时钟SCL信号的时序没有必要与其他总线系统例如CBUS兼容它们不能在增加的位速率下工作 快速模式器件的输入有抑制毛刺的功能SDA 和 SCL 输入有 Schmitt 触发器 快速模式器件的输出缓冲器对 SDA 和 SCL 信号的下降沿有斜率控制功能 如果快速模式器件的电源电压被关断SDA 和 SCL 的 I/O 管脚必须悬空不能阻塞总线 连接到总线的外部上拉器件必须调整以适应快速模式 I2C 总线更短的最大允许上升时间对于负载最大是 200pF 的总线每条总线的上拉器件可以是一个电阻对于负载在 200pF400pF 之间的