I2C串行总线的组成及工作原理
I 2C串行总线的组成及工作原理
811C串行总线的组成及工作原理 采用串行总线技术可以使系统的硬件设计大大简 化、系统的体积减小、可靠性提高。同时,系统的 更改和扩充极为容易 常用的串行扩展总线有:I2C( Inter IC bus)总 线、单总线(1- WIRE BUS)、SPI( Serial Peripheral Interface)总线及 Microwire/PLUS等。 本章仅讨论IC串行总线
8.1 I 2C串行总线的组成及工作原理 ◼采用串行总线技术可以使系统的硬件设计大大简 化、系统的体积减小、可靠性提高。同时,系统的 更改和扩充极为容易。 ◼常用的串行扩展总线有: I 2C (Inter IC BUS)总 线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线及Microwire/PLUS等。 本章仅讨论I 2C串行总线
8.1.1IC串行总线概述 IC总线是 PHLIPS公司推出的一种串行总线,是具备多 主机系统所需的包括总线裁决和高低速器件同步功能的高 性能串行总线。 IC总线只有两根双向信号线。一根是数据线SDA,另 根是时钟线SCL。 SCI SDA SCI SDA SCL SDA SCL SDA SCL SDA SCL SDA 单片机 单片机 B SRAM或 A/D或 日历 其它PC E- PROM A 时钟 外围设备
8.1.1 I 2C串行总线概述 I 2C总线是PHLIPS公司推出的一种串行总线,是具备多 主机系统所需的包括总线裁决和高低速器件同步功能的高 性能串行总线。 I 2C总线只有两根双向信号线。一根是数据线SDA,另 一根是时钟线SCL
I?C总线通过上拉电阻接正电源。当总线空闲时,两根线均 为高电平。连到总线上的任一器件输出的低电平,都将使总 线的信号变低,即各器件的SDA及SCL都是线“与”关系。 +VDD ISDA SCL SCI SDA SCI SDA CLKI DATAI CLK2 DATAZ OUT OUT OUT OUT CLKI DATA⊥ CLK2 DATA2 IN IN IN IN 器件1 器件2
I 2C总线通过上拉电阻接正电源。当总线空闲时,两根线均 为高电平。连到总线上的任一器件输出的低电平,都将使总 线的信号变低,即各器件的SDA及SCL都是线“与”关系
每个接到rC总线上的器件都有唯一的地 址。主机与其它器件间的数据传送可以是 由主机发送数据到其它器件,这时主机即 为发送器。由总线上接收数据的器件则为 接收器。 在多主机系统中,可能同时有几个主机企图启 动总线传送数据。为了避免混乱,IC总线要通 过总线仲裁,以决定由哪一台主机控制总线。 在80C51单片机应用系统的串行总线扩展中, 我们经常遇到的是以80C51单片机为主机,其它 接口器件为从机的单主机情况
每个接到I 2C总线上的器件都有唯一的地 址。主机与其它器件间的数据传送可以是 由主机发送数据到其它器件,这时主机即 为发送器。由总线上接收数据的器件则为 接收器。 在多主机系统中,可能同时有几个主机企图启 动总线传送数据。为了避免混乱, I 2C总线要通 过总线仲裁,以决定由哪一台主机控制总线。 在80C51单片机应用系统的串行总线扩展中, 我们经常遇到的是以80C51单片机为主机,其它 接口器件为从机的单主机情况
8.1.2IC总线的数据传送 数据位的有效性规定 IC总线进行数据传送时,时钟信号为高电平期间,数据 线上的数据必须保持稳定,只有在时钟线上的信号为低电 平期间,数据线上的高电平或低电平状态才允许变化。 SCI SDA 要求数 允许数 要求数 据稳定 据变化据稳定
一、数据位的有效性规定 I 2C总线进行数据传送时,时钟信号为高电平期间,数据 线上的数据必须保持稳定,只有在时钟线上的信号为低电 平期间,数据线上的高电平或低电平状态才允许变化。 8.1.2 I 2C总线的数据传送
二、起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平 的变化表示起始信号;SCL线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号。 SCL SDA 起始信号S 终止信号P
二、起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平 的变化表示起始信号;SCL线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号
起始和终止信号都是由主机发出的,在起始信号产生 后,总线就处于被占用的状态;在终止信号产生后,总线 就处于空闲状态。 连接到I?C总线上的器件,若具有rC总线的硬件接口,则 很容易检测到起始和终止信号。对于不具备Ⅰ2C总线硬件接 口的有些单片机来说,为了检测起始和终止信号,必须保证 在每个时钟周期内对数据线SDA采样两次。 接收器件收到一个完整的数据字节后,有可能需要完成 些其它工作,如处理内部中断服务等,可能无法立刻接收 下一个字节,这时接收器件可以将SCL线拉成低电平,从而 使主机处于等待状态。直到接收器件准备好接收下一个字节 时,再释放SCL线使之为高电平,从而使数据传送可以继续 进行
起始和终止信号都是由主机发出的,在起始信号产生 后,总线就处于被占用的状态;在终止信号产生后,总线 就处于空闲状态。 连接到I 2C总线上的器件,若具有I 2C总线的硬件接口,则 很容易检测到起始和终止信号。对于不具备I2C总线硬件接 口的有些单片机来说,为了检测起始和终止信号,必须保证 在每个时钟周期内对数据线SDA采样两次。 接收器件收到一个完整的数据字节后,有可能需要完成 一些其它工作,如处理内部中断服务等,可能无法立刻接收 下一个字节,这时接收器件可以将SCL线拉成低电平,从而 使主机处于等待状态。直到接收器件准备好接收下一个字节 时,再释放SCL线使之为高电平,从而使数据传送可以继续 进行
数据传送格式 (1)字节传送与应答 每一个字节必须保证是8位长度。数据传送时,先传 送最高位(MSB),每一个被传送的字节后面都必须跟 随一位应答位(即一帧共有9位)。 SCL (主机) /=/L (主机) 非应答 SDA (从机) 应答 起始信号S
三、数据传送格式 (1)字节传送与应答 每一个字节必须保证是8位长度。数据传送时,先传 送最高位(MSB),每一个被传送的字节后面都必须跟 随一位应答位(即一帧共有9位)
由于某种原因从机不对主机寻址信号应答时(如从机 正在进行实时性的处理工作而无法接收总线上的数据) 它必须将数据线置于高电平,而由主机产生一个终止信号 以结束总线的数据传送。 如果从机对主机进行了应答,但在数据传送一段时间后 无法继续接收更多的数据时,从机可以通过对无法接收的 第一个数据字节的“非应答”通知主机,主机则应发出终 止信号以结束数据的继续传送。 当主机接收数据时,它收到最后一个数据字节后,必须 向从机发出一个结束传送的信号。这个信号是由对从机的 2非应答”来实现的。然后,从机释放SDA线,以允许主 机产生终止信号
由于某种原因从机不对主机寻址信号应答时(如从机 正在进行实时性的处理工作而无法接收总线上的数据), 它必须将数据线置于高电平,而由主机产生一个终止信号 以结束总线的数据传送。 如果从机对主机进行了应答,但在数据传送一段时间后 无法继续接收更多的数据时,从机可以通过对无法接收的 第一个数据字节的“非应答”通知主机,主机则应发出终 止信号以结束数据的继续传送。 当主机接收数据时,它收到最后一个数据字节后,必须 向从机发出一个结束传送的信号。这个信号是由对从机的 “非应答”来实现的。然后,从机释放SDA线,以允许主 机产生终止信号