I2C总线结构及工作原理小结
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
总线上的数据传输有许多读、写组合方式。下面已简化的图解方式介绍三类数据传送格式。 1.主控器的写操作。主控器向被寻址的被控器发送 n 个数据字节,整个传输过程中数据传送方向不变。 其数据传送格式如下:
S SLAW
A Data1 A Data2 A
其中
Datan-1 A Datan A / A P
:主控器发送,被控器接收
但是对于不具备这些硬件接口的一些单片机来说,为了能准确地检测到这些信号,必须保证在总线的一个 时钟周期内对数据线至少进行两次采
总线信号时序要求
为了保证 I2C 总线数据的可靠传送,对总线上的信号时序作了严格的规定,其时序定义如图 4 所示。 图中对主要信号时序作了定义,并在表 1 中给出了具体数据。表中给出的 SCL 时钟信号最小高电平和低电 平周期决定了器件的最大数据传输率,标准模式为 100Kbit/s,高速模式为 400Kbit/s。标准模式和高速 模式的 I2C 总线器件都必须能满足各自的最高数据传送速率要求。当然,实际数据传送时可以选择不同的 数据传送速率,同时也可以采取延长 SCL 低电平周期来控制数据传送速率。
图 3 I2C 总线的起始信号和终止信号
起始信号:在时钟线保持高点平期间,数据线出现由高点平向低点平变化时将启动 I2C 总线,为 I2C
总线的起始信号。 终止信号:在时钟线保持高点平期间,数据线出现由低点平向高点平变化时将启动 I2C 总线,为 I2C
总线的终止信号。 起始信号与终止信号都是由主控制器产生。总线上带有 I2C 总线接口的器件很容易检测到这些信号。
的要求也同时必须得到满足。反之,它必须在释放 SCL 以前(根据标准模式下 I2C 总线规范)提前一定时间
TR+TSU;DAT=1000+250NS,先在 SDA 线上输出下一比特。
4)CB 表示以 pF 为单位的每条总线的总电容值。
I2C总线上的数据传送格式
I2C总线上的数据传送
I2C 总线上传送的每一个字节均为 8 位,但每启动一次 I2C 总线,其后的数据传输字节数是没有限制 的。每传送一个字节后都必须更岁一个应答位,并且首先发送的数据位为最高位在全部数据传送结束后主 控制器发送终止信号,如图 5 所示。
Ns
20+0.1Cb4) 300
Ns
0.6
—
Us
—
400
pF
1)为了跨过 SCL 信号下降沿中的未定义区域,所有的器件都必须在内部对 SDA 信号提供一个至少为
300ns 的保持时间。
2)只有在器件没有延长 SCL 信号低电平周期(tlow)的情况下才必须满足 thd;dat 最大的限制。
3)一个高速模式的 I2C 总线器件可以用在一个标准模式的 I2C 总线系统中,但是关于 TSU,DAT>=250NS
图 5 I2C 总线上的数据传送
数据传送时的总线控制
从图 5 中可以看到,没有时钟信号时数据传送将停止进行,接口的线与特征将使 SCL 在低电平时钳住 总线。这种情况可以用于当接收到一个字节数据后要进行一些其它工作而无法立即接收下个数据时,迫使 总线进入等待状态,直到接收器准备好接收新数据时,接收器再释放时钟线使数据传送得以继续正常进行。 例如,当接收器接收完主控制器的一个字节数据后,产生中断信号并进行中断处理,中断处理完毕才能接 收下一个字节数据,这时接收器在中断处理时将钳住 SCL 为低电平直到中断处理完毕才释放 SCL。
数据传送格式
I2C 总线数据传输时必须遵循规定的数据格式,如图为一次完整的数据传输格式。
图 6 I2C 总线上的应答信号
图 7 I2C 总线的一次完整的数据传送
按照总线规定,起始信号表明一次数据传输的开始,其后为寻址字节,寻址字节由高 7 位地址和最低 1 位方向位组成,方向位表明主控器和被控器数据传送方向,方向位为”0”时表明主控器对被控器的写操作, 为”1” 时表明主控器对被控器的读操作。在寻址字节后是按照指定读、写操作的数据字节与应答位。在数 据传送完成后主控器都必须发送停止信号。
多主竞争:多个主器件节点同时企图控制总线。在多主主状态下总线信息不会丢失。 仲裁:在多主竞争状态时的裁决过程。裁决的结果只允许其中一个主器节点成为主控器继续占据总线。 仲裁过程中总线上数据不丢失。 同步;多主竞争状态下将参与竞争的主器件的时钟信号进行同步处理。
I2C总线的基本原理
I2C 总线的时钟线 SCL 和数据线 SDA 都是双向传输线。总线备用时 SDA 和 SCL 都必须保持高电平状态, 只有关闭 I2C 总线时才使 SCL 钳位在低电平。在标准 I2C 模式下数据传送速率可达 100kbit/s,高速模式 下可达 400kbit/s。总线的驱动能力受总线电容限制,不加驱动扩展时驱动能力为 400pF。
I2C总线系统中的几个名词、术语
I2C 总线系统的结构十分灵活。系统中除了可以挂接带有 I2C 总线接口的单片机、外围器件外,通过 I2C 总线扩展器 PCD8584 可以挂接不带 I2C 总线接口的单片机、微处理器。通过外围器件可以扩展许多通 用外设借口模块。
I2C 总线系统构成、总线系统中数据传送时的有关名词、术语规范如下:
I2C总线系统中硬件构成的节点
I2C 总线系统中每个带有 I2C 总线接口或 I2C 总线扩展接口的器件或模块,接入 I2C 总线中均构成一 个 I2C 总线节点,所有节点之间除公共电源及地外只通过 SDA/SCK 相连。
由于接入器件的不同,总线中的节点可分为主器件节点和外围器件节点。 主器件节点:系统中由单片机或微处理机构成的节点,这些节点能对 I2C 总线实现主动控制。 外围器件节点:系统中由不含 CPU 的外围器件构成的节点。由于不含 CPU,这些节点无法实现对 I2C 总线的主动控制。
A Data1 A Data2 A Datan-1 A Datan A P
其中 SLAR:寻址字节(读) Data1~datan:被主控器读出的 n 个字节
主控器发送停止信号前应发送非应答位,向被控器表明读操作结束。 3.主控器的读写操作。在一次数据传输过程中需要改变传送方向的操作,这时,起始信号和寻址字节都 会重复一次,但两次读写方向正好相反。数据传送格式如下:
I2C总线的接口电路
为了能使总线上所有电路的输出能实现“线与”的逻辑功能,各个 I2C 总线的接口电路的输出端必须 是漏极开路或集电极开路结构,如图 1 所示。输出端必须接上拉电阻。
图 1 I2C 总线接口电路结构
I2C总线的信号及时序定义
在 I2C 总线上每传输一位数据都有一个时钟脉冲相对应,其逻辑“0”和“1”的信号电平取决于 该节点的正端电源 VDD 的电压。
5.所有带 I2C 接口的外围器件都具有应答功能。片内有多少单元地址时,读数据、写时都有地址自动 加 1 功能。这样,在 I2C 总线对某一器件读写多个字节时很容易实现自动操作,即准备好读、写入口条件 后,只须启动 I2C 总线就可自动完成 n 个字节的读、写操作。
6.I2C 总线电器接口为开漏晶体管组成,开路输出没有找到电源的钳位二级管,而连到 I2C 总线的每 个器件上,其自身的电源可以独立(但须工地),总线上各个节点可在系统带电情况下接入或撤出。
Tf
—
终止信号的建立时间
Tsu;sto 4.0
总线上每条线的负载电容
Cb
—
注:所有数值均以 V1Hmin 和 V1Lmax 电平为参考。
—
— — — — — — 1000 300 — 400
0.6
—
Us
1.3
—
Us
0.6
—
Us
0.6
—
Us
—
—
Us
01)
0.9²) Us
100³)
—
ns
20+0.1Cb4) 300
1. 二线传输。I2C 总线上所有的节点,如主器件(单片机,微处理器)、外围器件、借口模块等都连 到同名端的 SDA、SCL 上。
2. 系统中有多个主器件时,这些器件都可作总线的主控制器(无中心主机),I2C 总线工作时任何一 个主件都可成为主控制器,多机竞争时的时钟同步与总线仲裁都由硬件与标准软件模块自动完成,无须用 户介入。
数据的有效性
I2C 总线数据传输时,在时钟线高电平期间数据线上必须保持有稳定的逻辑电平状态,高电平为数据 1,低电平为数据 0。只有在时钟线为低电平时,才允许数据线上的电平状态变化。如图 2 所示。
图 2 I2C 总线上的数据位传送
I2C总线数据传送的起始与停止
I2C 总线数据传送有两种时序状态分别定义为起始信号和终止信号如图 3 所示。
I2C总线结构及工作原理小结
I2C总线的一般应用特性
I2C 总线系统中,带有 I2C 总线的单片机,其 I2C 总线输入输出口的电器结构、相关的特殊功能寄存 器(SFR)设置以及所提供的标准程序模块,为用户掌握 I2C 总线的系统设计和应用软件的编制带来极大 的方便。
I2C 总线的串行数据传送与一般 UART 的串行数据传送无论从借口电器特性、传送状态管理以及程序编 制特点都有很大的不同,了解这些特点十分重要。
数据传输中的接受/发送器
I2C 总线系统中用发送器与接收器来表明数据传输的发送方与接收方。 发送器:总线上发送数据的器件。 接收器:总线上接收数据的器件。
I2C 总线上的所有节点都可以成为发送器或接收器。
主竞争中的仲裁与同步
在 I2C 总线系统中可以有多个主器件节点。如果某些主器件节点在运行时都企图控制总线,则形成多 主竞争状态,I2C 总线系统可保证多个主器件节点企图控制总线时不会丢失信息。在总线竞争过程中进行 总线控制权的仲裁和时钟同步,仲裁结果只允许其中一个主器件继续战局总线。
3.I2C 总线传输时,采用状态码的管理方法。对应于总线数据传输时的任何一种状态,在状态寄存器 中会出现相应的状态码,并且会自动进入响应的状态处理程序中进行自动处理,无须用户介入,用户只须 将 Philips 公司提供的标准状态处理器一定的空间即可。
4.系统中所有外围器件及模块采用器件地址及引脚地址的编码方法。系统中主控制器对任何节点的寻 址采用纯软件寻址方法,避免了片选线的先连方法。系统中若有地址编码冲突可通过改变地址引脚的电平 设置来解决。
图 4 I2C 总线的时序定义
参数 SCL 时钟频率
表 1 I2C 总线信号定时要求
符号
标准模式 最大值 最小值
Fscl
0
100
高速模式 最大值 0
最小值 400
单位 kHz
在一个终止信号和起始信号 之间必须空闲的时间
Tbuf
4.7
—
1.3
—
us
起始信号保持时间 (此后可产生第一个时钟脉冲)
Thd;sta 4.0
I2C总线工作时的控制器
主控器:I2C 总线工作时,任何一个主器节点都能对总线实现控制,当某个主器件节点控制了总线时, 称为主控器。主控器完成一次传输过程的初始化、发送时钟信号及传输终止信号。
被控器:被控器寻址的器件称为被控器。 I2C 总线系统中,主器件可作为主控器也可作为被控器,而外围器件只能作为被控器。
:主控器接收,被控器发送
A:应答信号
A :非应答信号
S:起始信号
源自文库P:停止信号
SLAW:寻址字节(写)
Data1~Datan:写入被控器的 n 个数据字节
2.主控器的读操作。主控器从被控器中读出 n 个字节的操作,整个传输过程中除寻址字节外,都是被控器
发送,主控器接收的过程。数据传送的格式如下:
S SLAW
SCL 时钟信号低电平周期
Tlow
4.7
SCL 始终信号高电平周期
Thigh 4.0
一个重复信号的建立时间
Tsu;sta 4.7
数据保持时间:
5.0
Thd;dat
与 CBUS 兼容的主控器 I2C 总线器件
01)
数据建立时间
Tsu;dat 250
SDA 和 SCL 信号的上升时间
Tr
—
SDA 和 SCL 信号的下降时间
应答信号
I2C 总线数据传送时,每传送一个字节数据后都必须有应答信号,与应答信号想对应的时钟由主控器 产生,这时发送器必须在这一时钟位上释放数据线,使其处于高电平状态,以便接收器在这一位上送出应 答信号,如图 6 所示。
应答信号在第 9 个时钟位上出现,接收器输出低电平为应答信号(A),输出高电平则为非应答信号(/A)。 由于某中原因,被控器不产生应答时,如被控器正在进行其它处理而无法接收总线上的数据时,必须 释放总线,将数据线只高电平,然后主控制器可通过产生一个停止信号来终止总线数据传输。 当主控器接收数据时,接收到最后一个数据字节后,必须给被空发送器发送一个非应答位(A),使被 空发送器释放数据总线,以便主控制发送停止信号,从而终止数据传送。