弗原創IT教育中心 第13讲IC总线编程技术 2C总线简介: 12C总线是一双线串行总线,它提供一小型网络系统, 为总线上的电路共享公共的总线。总线上的器件有单片 机、LCD驱动器以及上E2PROM器等等。自从菲利普 公司提出2C总线规范以来,12C器件得到了广泛的应用。 2C器件的应用大大减少了电路间连线,减小了电路板 尺寸,降低了硬件成本,并提高了系统可靠性
第13讲 IIC总线编程技术 I2C总线简介: I2C 总线是一双线串行总线,它提供一小型网络系统, 为总线上的电路共享公共的总线。总线上的器件有单片 机、LCD 驱动器以及上E2PROM 器等等。自从菲利普 公司提出I2C总线规范以来,I2C器件得到了广泛的应用。 I2C器件的应用大大减少了电路间连线,减小了电路板 尺寸,降低了硬件成本,并提高了系统可靠性
弗原創IT教育中心 介绍2C总线规范 对于面向8位的数字控制应用譬如那些要求用微控制器的 要建立一些设计标准: 个完整的系统通常由至少一个微控制器和其他外围器 件例如存储器和/O扩展器组成。 系统中不同器件的连接成本必须最小 ≯执行控制功能的系统不要求高速的数据传输 总的效益由选择的器件和互连总线结构的种类决定 生一个满足这些标准的系统需要一个串行的总线结构 尽管串行总线没有并行总线的数据吞吐能力,但它们只 要很少的配线和C连接管脚然而总线不仅仅是互连的线 还包含系统通讯的所有格式和过程
介绍I2C 总线规范 对于面向8 位的数字控制应用譬如那些要求用微控制器的 要建立一些设计标准: ¾一个完整的系统通常由至少一个微控制器和其他外围器 件例如存储器和I/O 扩展器组成。 ¾系统中不同器件的连接成本必须最小。 ¾执行控制功能的系统不要求高速的数据传输。 ¾总的效益由选择的器件和互连总线结构的种类决定 产生一个满足这些标准的系统需要一个串行的总线结构 尽管串行总线没有并行总线的数据吞吐能力,但它们只 要很少的配线和IC 连接管脚然而总线不仅仅是互连的线 还包含系统通讯的所有格式和过程
弗原創IT教育中心 I2C总线的概念 I2C总线支持任何IC生产过程 NMOS CMOS双极性两线 串行数据SDA和串行时钟SCL线在连接到总线的 器件间传递信息每个器件都有一个唯一的地址识别无 论是微控制器LCD驱动器存储器或键盘接口而且都可以 作为一个发送器或接收器由器件的功能决定很明显LCD 驱动器只是一个接收器而存储器则既可以接收又可以 发送数据除了发送器和接收器外器件在执行数据传输 时也可以被看作是主机或从机。主机是初始化总线的 数据传输并产生允许传输的时钟信号的器件此时任何 被寻址的器件都被认为是从机
I2C 总线的概念 I2C 总线支持任何IC 生产过程NMOS CMOS 双极性两线 ――串行数据SDA 和串行时钟SCL 线在连接到总线的 器件间传递信息每个器件都有一个唯一的地址识别无 论是微控制器LCD驱动器存储器或键盘接口而且都可以 作为一个发送器或接收器由器件的功能决定很明显LCD 驱动器只是一个接收器而存储器则既可以接收又可以 发送数据除了发送器和接收器外器件在执行数据传输 时也可以被看作是主机或从机。 主机是初始化总线的 数据传输并产生允许传输的时钟信号的器件此时任何 被寻址的器件都被认为是从机
心I2C总线名词解释 发送器:发送数据到总线上的器件 接收器:从总线上接收数据的器件 主器件:启动数据传送并产生时钟信号的器件 从器件:被主器件寻址的器件 I2C总线时序定义 起始位:SCL=1时,在SDA上有下降延 停止位:SCL=1时,在SDA上有上升延 主器件发停止信号给从器件,作用在于使从器件处为准 备状态(或是已知的状态) 从应答:SDA=0 写数据时,应答的器件在第九个时钟周期将SDA线拉低, 表示已收到一个8位数据,并表示可继续接收。主机在向 从机写一字节后接收从应答,再进行后续操作(一般不考 虑从应答位的具体值,仅在应答检测时用于判断从器件 是否完成其内部写周期) 主应答:SDA=0(用)
I2C 总线名词解释: 发送器:发送数据到总线上的器件 接收器:从总线上接收数据的器件 主器件:启动数据传送并产生时钟信号的器件 从器件:被主器件寻址的器件 I2C总线时序定义: 起始位:SCL=1时,在SDA上有下降延 停止位:SCL=1时,在SDA上有上升延 *主器件发停止信号给从器件,作用在于使从器件处为准 备状态(或是已知的状态) 从应答:SDA=0 *写数据时,应答的器件在第九个时钟周期将SDA线拉低, 表示已收到一个8位数据,并表示可继续接收。主机在向 从机写一字节后接收从应答,再进行后续操作(一般不考 虑从应答位的具体值,仅在应答检测时用于判断从器件 是否完成其内部写周期) 主应答:SDA=0(用)
弗原創IT教育中心 冰读数据时,主机每接收从机一个字节数据(不是最后 个),返回主应答ACK(SDA=0)是最后一个字节时返 回无需应答 NO ACK(SDA=1) 当从机工作于读模式时,在向主机发送一个8位数据 后释放SDA线并监视一个应答信号,一旦接收到主机 的应答信号,从机继续发送数据;如主器件没有发送 应答信号,从机停止传送数据并等待一个停止信号, 主器件必须发一个停止信号给从机使其进入备用电源 模式并使器件处于已知的状态 应答检测:采用应答检测读命令测试从机是否<页写〉 结東(通过从应答来识别 米当从器件完成内部写周期后将发送一个应答信号(从 应答)给主器件,以便可以继续进行下一次读操作
*读数据时,主机每接收从机一个字节数据(不是最后 一个),返回主应答ACK(SDA=0) 是最后一个字节时返 回无需应答NO_ACK(SDA=1) 当从机工作于读模式时,在向主机发送一个8位数据 后释放SDA线并监视一个应答信号,一旦接收到主机 的应答信号,从机继续发送数据;如主器件没有发送 应答信号,从机停止传送数据并等待一个停止信号, 主器件必须发一个停止信号给从机使其进入备用电源 模式并使器件处于已知的状态 应答检测:采用应答检测读命令测试从机是否 结束(通过从应答来识别) *当从器件完成内部写周期后将发送一个应答信号(从 应答)给主器件,以便可以继续进行下一次读操作
弗原創IT教育中心 总体特征 SDA和SCL都是双向线路都通过一个电流源或上拉电 阻连接到正的电源电压。当总线空闲时这两条线路都 是高电平连接到总线的器件输出级必须是漏极开路或 集电极开路才能执行线与的功能I2C总线上数据的传 输速率在标准模式下可达100kbit/s在快速模式下可 达400kbit/s在高速模式下可达3.4Mbi/s连接到总 线的接口数量只由总线电容是400F的限制决定
总体特征 SDA 和SCL 都是双向线路都通过一个电流源或上拉电 阻连接到正的电源电压。当总线空闲时这两条线路都 是高电平连接到总线的器件输出级必须是漏极开路或 集电极开路才能执行线与的功能I2C 总线上数据的传 输速率在标准模式下可达100kbit/s 在快速模式下可 达400kbit/s 在高速模式下可达3.4Mbit/s 连接到总 线的接口数量只由总线电容是400pF 的限制决定
弗原創IT教育中心 位传输 由于连接到|2C总线的器件有不同种类的工艺CMOs NMOs双极性逻辑0低和1高的电平不是固定的它由VDD 的相关电平决定见第15章的电气规范每传输一个数据位 就产生一个时钟脉冲 数据的有效性 SDA线上的数据必须在时钟的高电平周期保持稳定数据 线的高或低电平状态只有在SCL线的时钟信号是低电平 时才能改变
一:位传输 由于连接到I2C 总线的器件有不同种类的工艺CMOS NMOS 双极性逻辑0 低和1高的电平不是固定的它由VDD 的相关电平决定见第15 章的电气规范每传输一个数据位 就产生一个时钟脉冲 数据的有效性 SDA 线上的数据必须在时钟的高电平周期保持稳定数据 线的高或低电平状态只有在SCL 线的时钟信号是低电平 时才能改变
弗原創IT教育中心 起始和停止条件 在12C总线中唯一出现的是被定义为起始S和停止P条件的情 况。其中一种情况是在SCL线是高电平时SDA线从高电平向 低电平切换这个情况表示起始条件;当SCL是高电平时SDA 线由低电平向高电平切换表示停止条件;起始和停止条件一般 由主机产生总线在起始条件后被认为处于忙的状态在停止条件 的某段时间后总线被认为再次处于空闲状态 如果产生重复起始Sr条件而不产生停止条件总线会一直处于 忙的状态此时的起始条件S和重复起始Sr条件在功能上是 样的。因此在本文档的剩余部分符号S将作为一个通用的术 语既表示起始条件又表示重复起始条件除非有特别声明的Sr 如果连接到总线的器件合并了必要的接口硬件那么用它们检 测起始和停止条件十分简便但是没有这种接口的微控制器在 每个时钟周期至少要采样SDA线两次来判别有没有发生电平 切换
起始和停止条件 在I2C 总线中唯一出现的是被定义为起始S 和停止P 条件 的情 况。其中一种情况是在SCL 线是高电平时SDA 线从高电平向 低电平切换这个情况表示起始条件;当SCL 是高电平时SDA 线由低电平向高电平切换表示停止条件;起始和停止条件一般 由主机产生总线在起始条件后被认为处于忙的状态在停止条件 的某段时间后总线被认为再次处于空闲状态 如果产生重复起始Sr 条件而不产生停止条件总线会一直处于 忙的状态此时的起始条件S和重复起始Sr 条件在功能上是一 样的。因此在本文档的剩余部分符号S 将作为一个通用的术 语既表示起始条件又表示重复起始条件除非有特别声明的Sr 如果连接到总线的器件合并了必要的接口硬件那么用它们检 测起始和停止条件十分简便但是没有这种接口的微控制器在 每个时钟周期至少要采样SDA 线两次来判别有没有发生电平 切换
弗原創IT教育中心 传输数据 字节格式 发送到SDA线上的每个字节必须为8位每次传输可以发送 的字节数量不受限制每个字节后必须跟一个响应位首先传 输的是数据的最高位MSB。如果从机要完成一些其他功能 后例如一个内部中断服务程序才能接收或发送下一个完整 的数据字节可以使时钟线SCL保持低电平迫使主机进入等 待状态当从机准备好接收下一个数据字节并释放时钟线 SCL后数据传输继续在一些情况下可以用与I2C总线格式 不一样的格式例如兼容CBUS的器件甚至在传输一个字节 时用这样的地址起始的报文可以通过产生停止条件来终止 此时不会产生响应
传输数据 字节格式 发送到SDA 线上的每个字节必须为8 位每次传输可以发送 的字节数量不受限制每个字节后必须跟一个响应位首先传 输的是数据的最高位MSB 。如果从机要完成一些其他功能 后例如一个内部中断服务程序才能接收或发送下一个完整 的数据字节可以使时钟线SCL 保持低电平迫使主机进入等 待状态当从机准备好接收下一个数据字节并释放时钟线 SCL 后数据传输继续在一些情况下可以用与I2C 总线格式 不一样的格式例如兼容CBUS 的器件甚至在传输一个字节 时用这样的地址起始的报文可以通过产生停止条件来终止 此时不会产生响应
弗原創IT教育中心 响应 数据传输必须带响应相关的响应时钟脉冲由主机产生在响应的 时钟脉冲期间发送器释放SDA线拉高,在响应的时钟脉冲期间 接收器必须将SDA线拉低,使它在这个时钟脉冲的高电平期间 保持稳定的低电平,当然必须考虑建立和保持时间。 当从机不能响应从机地址时例如它正在执行一些实时函数不能 接收或发送从机必须使数据线保持高电平主机然后产生一个停 止条件终止传输或者产生重复起始条件开始新的传输。 如果从机接收器响应了从机地址但是在传输了一段时间后不能 接收更多数据字节主机必须再一次终止传输这个情况用从机在 第一个字节后没有产生响应来表示从机使数据线保持高电平主 机产生一个停止或重复起始条件
响应 数据传输必须带响应相关的响应时钟脉冲由主机产生在响应的 时钟脉冲期间发送器释放SDA线拉高,在响应的时钟脉冲期间 接收器必须将SDA线拉低,使它在这个时钟脉冲的高电平期间 保持稳定的低电平, 当然必须考虑建立和保持时间。 当从机不能响应从机地址时例如它正在执行一些实时函数不能 接收或发送从机必须使数据线保持高电平主机然后产生一个停 止条件终止传输或者产生重复起始条件开始新的传输。 如果从机接收器响应了从机地址但是在传输了一段时间后不能 接收更多数据字节主机必须再一次终止传输这个情况用从机在 第一个字节后没有产生响应来表示从机使数据线保持高电平主 机产生一个停止或重复起始条件