1.09k likes | 1.22k Vues
5.4 I 2 C 总线. 5.4.1 I 2 C 总线概述 5.4.2 I 2 C 总线的数据传送 5.4.3 寻址 5.4.4 仲裁和时钟同步化 5.4.5 I 2 C 总线的电气特性 5.4.6 I 2 C 时序 规范 5.4.7 直接采用 I 2 C 接口芯片的应用 5.4.8 I 2 C 总线模拟实用程序. 5.4 I C 总线. 2. I 2 C 总线 PHILIPS 公司推出的串行总线。 高性能串行总线 具备总线裁决、高低速设备同步等功能。 可用于多主机系统。
E N D
5.4 I2C总线 • 5.4.1 I2C总线概述 • 5.4.2I2C总线的数据传送 • 5.4.3 寻址 • 5.4.4 仲裁和时钟同步化 • 5.4.5I2C总线的电气特性 • 5.4.6 I2C时序规范 • 5.4.7 直接采用I2C接口芯片的应用 • 5.4.8I2C总线模拟实用程序
5.4 I C总线 2 • I2 C总线 PHILIPS公司推出的串行总线。 • 高性能串行总线 具备总线裁决、高低速设备同步等功能。 • 可用于多主机系统。 要求系统中所用单片机及外围芯片内部都要有 I2 C 总线接口。 • 应用较多。 微机控制技术
具有 I2C 总线接口的单片机 具有 I2C 总线接口的产品: PHILIPS公司 80C51系列单片机 (8XC552、8XC652等)。 Motorola公司 M68HC05系列单片机。 三星公司、三菱公司也都有含 I2 C 总线接口的 单片机系列。 2 2 微机控制技术
5.4.1 I C 总线概述 2 • I 2 C串行总线只有两根信号线 双向的数据线 SDA,时钟线 SCL。 • 所有连接到 I2C 总线上的设备的串行数据都接到总线的 SDA 线上,而各设备的时钟均接到总线的SCL上。 如 图5.31所示。 2 微机控制技术
图5.27 I C总线结构 (P167) 2 如 图5.31 微机控制技术
5.4.1 I C总线概述 2 • I 2 C总线是一个多主机总线, 总线运行(数据的传送)由主机控制:。 发出启动信号、时钟信号,发停止信号。 • 通常主机由微处理器组成。 • 被主机寻访的设备叫从机 可以是微处理器, 也可以是其他的器件,如存储器、LED、LCD驱动器、 A/D、D/A转换器等。 • 每个接到 I2C 总线上的设备都有一个惟一的地址, 供主机寻访。 2 微机控制技术
在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免这种情况引起的冲突,保证数据的可靠传送,任一时刻总线只能由某一台主机控制。为此,该总线需要通过总线裁决过程,决定哪一台主机控制总线。在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免这种情况引起的冲突,保证数据的可靠传送,任一时刻总线只能由某一台主机控制。为此,该总线需要通过总线裁决过程,决定哪一台主机控制总线。 微机控制技术
5.4.1 I C总线概述 2 • I2C 总线的 SDA 和 SCL都是双向I/O总线,通过上拉电阻接 正电源,如图5.32所示。 • 每一个I2 C总线接口电路都有如图中虚线所示的接口电路。 • 总线空闲时,两根总线均为高电平。 • 连到总线上的器件的输出极必须是漏极开路(或集电极开路)。 • 任一设备输出的低电平,都将使总线的信号变低,也就是说各设备的 SDA是 “与” 的关系,SCL也是“与”的关系。 • 标准模式下,数据传输速率为 100Kbps, 在高速模式下可达 400Kbps。 微机控制技术
图5.28 I C总线各设备的连接 2 微机控制技术
5.4.2 I C总线的数据传送 2 I2C 总线上主-从机之间一次传送的数据称为一帧,由启动信号、若干个数据字节和应答位以及停止信号组成。数据传送的基本单元是一位数据。 1、一位数据的传送 I2C总线规定: SCL 上一个时钟周期只能传送一位数, 且要求 SDA上的信号电平在 SCL 的高电平期间必须稳定(除启动和停止信号外), 数据线上的信号变化只允许在 SCL 的低电平期间产生, 如 图5.33 所示。 微机控制技术
图5.33 I C总线上一位数据的传送 2 微机控制技术
5.4.2 I C总线的数据传送 2 2. 启动和停止信号 I2C总线协议规定:在 I2C总线传送过程中, • 当 SCL 线为高电平时, 向 SDA线上送一个由高到低的电平,表示启动信号; • 当 SCL 线为低电平时, 向 SDA 线上送一个由低到高的电平,为停止信号。 如图 5.34 所示。 微机控制技术
图5.34 启动和停止信号 微机控制技术
5.4.2 I C总线的数据传送 2 ① 如果接到总线上的设备具备I2C 的接口硬件, 就可以很容易地检测到启动和停止信号。 ② 若微处理器没有 I2 C 接口电路, 就必须在每个时钟周期内至少采样两次SDA 线, 才能检测到启动和停止信号。 说明 2 微机控制技术
5.4.2 I C总线的数据传送 2 3.数字字节的传送 (1)送到 SDA 线上的每个字节必须为 8 位长度, 每个字节后边必须跟一个应答位。 每次传送的字节数不受限制。 (2)数据传送时,先传送最高位,如图5.35所示。 • 如接收设备不能接收下一个字节, 可以把 SCL线拉成低电平,迫使主机处于等待状态。 • 当从机准备好接收下一个字节时再释放时钟线 SCL, 使数据传送继续进行。 微机控制技术
图5.35 I C总线上的数据传送 p169 2 微机控制技术
5.4.2 I C总线的数据传送 2 4. 应答 • I2C总线协议规定, • 每个字节传送完后,要有一个应答位。 • 应答位的时钟脉冲也主机产生。 • 发送设备在应答时钟脉冲高电平期间释放 SDA 线(高电平),转由接收器控制。 • 接收设备在这个时钟内必须将 SDA 线拉为低电平,以便产生有效的应答信号,如图5.36所示。 微机控制技术
图5.36 I C总线上的应答位 2 高电平(结束) 交接收机控制 低电平(ASK) 微机控制技术
5.4.2 I C总线的数据传送 2 ① 若一个从机暂不能接收(或不能产生应答)时, 从机必须使 SDA 保持高电平。此时主机产生一个结束 信号,使传送异常结束。 ② 如果从机对地址作了应答,后来在传送中不能接收 更多的数据字节,主机也必须异常结束传送。 ③ 若主机接收,则对最后一个字节不予应答,以向从 机指出数据传送的结束,从发送器释放 SDA 线,代 替主机产生一个结束信号。 微机控制技术
5.4.2 I C总线的数据传送 2 5. 一帧完整数据的格式 ①一帧完整数据包括 开始信号、从设备地址(7位)、方向位(R/ )、 应答信号、数据(n 字节+应答)、结束信号。 ②若主设备希望继续通信, 将再次产生另一个开始信号和寻址另一个从设备,(不需要先产生一个停止信号)。在这种传送方式中,就可能有读写方式的组合。完成上述传送可能的数据格式如图5.37所示。 微机控制技术
图5.37 完整的数据传送过程 P170 从设备产生 主设备产生 主设备产生 微机控制技术
图5.38 可能的数据传送格式 从设备产生 主设备产生 微机控制技术
5.4.2 I2 C总线的数据传送 • 主接收方式中,在第一应答位时 主发送器变成主接收器, 从接收器变成从发送器。 (该应答位仍旧由从设备产生, 结束信号仍旧由主设备产生)。 • 在传送中方向改变时, 要重复发送信号和地址,R/ 位反向。 说明 微机控制技术
5.4.3 寻址 1. 第一个字节各位的定义 (图5.39 ) 启动信号后,主机发送一个字节数据: 高 7 位组成从机的地址,最低位是 R/ 确定信息的方向 串行总线中通过数据线传输地址码的方式 寻址数据接收方。 微机控制技术
图5.39 启动信号后的第一个字节 微机控制技术
5.4.3 寻址 • 启动信号出现后, 系统中各设备将本机地址和主设备送到总线上的地址比较, 若相同,该设备确认被主设备寻址,接收或发送由 R/ 确定。 • 设备的从地址由固定位和可编程位两部分组成。 如果希望在系统中使用 1个以上相同的设备,从地址的可编程部分确定了在I2C总线上可接的这种设备的最多数目。1个设备从地址的可编程位数取决于该设备可用来编程的引脚数。例如,如果1个设备从地址有4个固定位和3个可编程位,在总线上以接 8个相同的这种设备。I2C总线约定可以调整I2C地址的分配。 2 微机控制技术
5.4.3 寻址 保留地址 • 扩展地址1111111 寻址过程在下一个地址继续进行(两个地址字节)。 不使用扩展地址的器件收到这个地址后不做响应。 • 7位其他可能的组合中高4位为1111作为扩展目的用, 但还没有对它分配。 • 0000×××定义为一种特殊组合,如表 5.3 所示 • 的分配。 微机控制技术
表5.3 0000XXX特殊组合表 微机控制技术
5.4.3 寻址 2.通用呼叫地址 (1)启动信号后的 8 位全为 0 的第一字节称为通用 呼叫地址,用于寻访接到 I2C 总线上所有设备。 (2)不需要从通用呼叫地址命令获取数据的设备可 以不响应通用呼叫地址。否则,接收到这个地 址后应做应答,并把自己置为从机接收器方式 以接收随后的各字节数据; (3)当遇到不能处理的数据字节时,不做应答,否 则收到每个字节后都应做应答。 微机控制技术
5.4.3 寻址 (3)通用呼叫地址的用意在第二个字节中说明。 如 图5.40 所示。 ①当第二字节为 06H 时: 要求从机设备复位; 由硬件写从机地址的可编程部分。 ( 要求能响应命令的从机设备复位时 不拉低 SDA 和 SCL 线的电平,以免堵塞总线。 微机控制技术
图5.40 通用呼叫地址的格式 P172 微机控制技术
5.4.3 寻址 ② 第二字节为 04 H 时: 设备不复位; 从机设备由硬件写从机地址的可编程部分, ( 重写过程见设备的手册说明)。 ③ 第二字节的最低位 A 为1: ♂这两个字节命令称为硬件通用呼叫命令, (由“硬件主机设备”发出) ♂ 在这第二字节的高7位中说明命令发出者的地址, 如图5.41所示。 总线上的智能设备如微控制器能识别这个地址,并与之传送数据。 不能发送所要寻访从机设备地址的发送器,如键盘扫描器等 也是作从机使用时的地址, 微机控制技术
图5.41 硬件主机发送的数据 微机控制技术
5.4.3 寻址 ④ 系统复位时硬件主机设备工作在从机接收器方式时: 由系统中的主机先告诉主机设备数据应送往的从机 设备地址,当硬件主机设备要发送数据时就可以直 接向指定从机设备发送数据了。 微机控制技术
5.4.3 寻址 3.起始字节 单片机连到 I2C 总线上可有两种方式: ① 片内提供 I2C 总线接口 由总线接口电路向 CPU 发中断申请; ② 片内不具备 I2C 总线接口 ♂ 可通过软件不断监视总线状态,以及时响应 总线请求。 2 高速的硬件设备和靠软件查询的微机之间在速度上 有一定的差别。 需要一个比正常启动过程时间长得多的启动过程。 ♂ 微机控制技术
图5.42 开始字节的启动过程 0 0 0 0 0 0 0 1 微机控制技术
5.4.3 寻址 图5.42 中,起始字节由下面几部分组成: • 启动信号 S • 起始字节 00000001 • 应答时钟脉冲 • 重复启动信号 Sr 微机控制技术
5.4.3 寻址 ♂请求访问总线的主机发出启动信号 S 后,发送起 始字节(00000001),总线上另一台微机可以以比 较低的速率采样 SDA 线,直到检测到起始字节中 的7个“0”中的1个“1”为止。 ♂ 在检测到SDA线上的低电平后,微机切换到高速 采样,以便寻找作为同步信号用的第二个启动信号 Sr。 ♂ 硬件接收器将在接收到第二个启动信号Sr时复位, 所以此时第一个启动信号不起作用。 微机控制技术
5.4.3 寻址 启动信号后的应答时钟脉冲仅仅是为了和总线所用的格式一致,并不要求设备在这个脉冲期间做应答。 微机控制技术
5.4.3 寻址 4.CBUS 兼容性 常规的CBUS(控制总线)接收器可以接到I2C总线。在这种情况下,必须连接第3根线(称为DLEN),并省略认可位。通常在I C上传送多个8位字节,但CBUS器件具有不同的格式。 在混合的总线结构中,不允许I C器件对CBUS信息响应。正是由于这个原因,保留了特殊的CBUS地址(0000001X)。没有I C器件能对此地址做出响应。在CBUS地址送出以后,激活DLEN,并根据CBUS格式进行数据传送(如图5.43所示)。在结束信号以后,所有的器件又准备好接收数据。 2 2 2 微机控制技术
图5.43 CBUS接收器/发送器数据传送格式 微机控制技术
5.4.3 寻址 5. 10位地址格式 10位地址是近年来在原有7位地址格式基础上发展出来的,以便I C总线上能连接更多设备。10位地址格式并未改变I C总线原有协议,所以,采用10位地址的设备和7位地址的设备可以接入同一I C总线。 主机寻访10位地址设备,在发出启动信号后要发送两个字节的地址数据。其格式如下。 2 2 2 微机控制技术
5.4.3 寻址 第一字节 第二字节 微机控制技术
5.4.3 寻址 第一字节的高5位为11110,位6、位7为10位地址的最高两位地址,位8是读/写位(意义和用法与8位地址相同)。10位地址的从机设备接收到第一个字节,取位6和位7与自己地址的高二位进行比较,相同者做出应答A1,并记住R/ 位(高二位地址相符的从机设备可能不只一台);然后,接收第二字节,也就是10位地址的低8位,再与自己地址的低8位地址进行比较,只有一台从机设备会与之相符,做出应答A2,并根据R/位设置为对应的发送/接收方式。接下来就是主机-从机之间传送数据,直到主机发出停止信号。 微机控制技术
5.4.4 仲裁和时钟同步化 1. 时钟的同步 主机总是向SCL发送自己的时钟脉冲,以控制I C总线上的数据传送。由于设备是经过开漏或开集电极电路接到SCL线上的,所以多台主机同时发送时钟时,只要有一个设备向SCL输出低电平,SCL线就是低电平;只有当所有向SCL输出时钟脉冲的设备都输出高电平时,SCL线才是高电平,这是“与”的关系。时钟同步就是利用电路上的这个特点。总线的SCL线上电平由高到低的变化,使I C接口硬件从这个下降沿起开始计算时钟的低电平时间。 2 2 微机控制技术
5.4.4 仲裁和时钟同步化 当低电平持续时间达到片内设定的时钟低电平时间,就向SCL线输出高电平。但SCL线要等所有输出时钟的设备都输出为高时,才变高。SCL线的低电平时间为时钟周期最长设备的低电平时间。各设备从SCL线由低变高的上升沿开始计算高电平时间,当达到片内设定的高电平时间时,向SCL线送出低电平。尽管别的主机仍向SCL线输出高电平,但SCL线已变低。总线上SCL的电平变化如图5.44所示。 微机控制技术
5.4.4 仲裁和时钟同步化 由此可见,SCL线的低电平时间等于时钟周期最长的主机时钟的低电平时间;SCL线的高电平时间等于时钟周期最短的主机的时钟的高电平时间。几台主机同时工作时,时钟就是按这种方式同步的。 微机控制技术
5.4.4 仲裁和时钟同步化 2. 仲裁(裁决) 为了保证I C上数据的可靠传送,在任一时刻总线应由一台主机控制。这就要求总线上连接的多个具有主机功能的设备,在别的主机使用总线时,不应再向总线发送启动信号以试图控制总线。但几台主机有可能同时向总线发送启动信号,要求控制总线,这时就需要一个判断处理过程,决定哪些主机放弃总线控制权,而仅由一台主机控制总线。这个过程称为仲裁,仲裁过程和时钟的同步是同时进行的。 2 微机控制技术
5.4.4 仲裁和时钟同步化 仲裁是一位一位进行的。如前所述,时钟线通过各主机时钟线的“与”关系实现同步,仲裁则利用各主机数据线的“与”关系来实现。当SCL线为高电平时,SDA线上应出现稳定有效的数据电平。各主机在各自时钟的低电平期间送出各自要发送的数据到SDA线,并在SCL为高电平时检测SDA线的状态。如果SDA线的状态与自己发出的数据不同,即发出的是1,而检测到的是0(必然有别的主机发送0,因为SDA是各主机数据信号相“与”的结果),就失去仲裁,则自动放弃总线控制权,终止自己的主机工作方式。图5.45所示表示出了两台主机的仲裁过程。 微机控制技术