I2C总线的结构与工作原理

更新时间:2023-10-27 18:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

I2C总线的结构与工作原理

2.1概述

2.1.1 I2C总线在单片机应用系统设计中的意义

现代消费类产品、通讯类产品、仪器仪表、工业测控系统中,逐渐形成了以一个或 多个单片机组成的智能系统,这些系统硬件结构都有相似之处:

1.单片机电路已日趋简单化和标准化。通常是由单片机(MICROCONTROLLER)、程序存储器(EPROM)、数据存储器(SRAM)构成的三片体系,或采用有在片程序存储器的单片机与数据存储器构成的二片体系,以及单片机与通用外围接口器件(PSD)构成的最简单体系。

2. 都有一些外围通用电路,如EEPROM、I/O口、A/D、D/A、日历时钟等外围器件和键盘、LED/LCD显示器、打印机接口等外围设备模块等。

3.面对系统特殊应用的一些电路,如无线电、电视、音像系统中的数字协调、编码、解码、图象处理、频率合成、音调控制、立体声处理等。

在上述的一些电路中,除与单片机直接相关的程序存储器、并行扩展的数据存储器外,单片机对许多外围电路之间主要是实现控制功能,而且许多外设并不要求很高的数据传送速度。为了简化系统,提高系统的可靠性,缩短产品开发周期,增加硬件结构的灵活性,Philips公司推出了一种高效、可靠、方便的串行扩展总线I2C总线。

在单片机应用系统中推广I2C总线后将会大大改变单片机应用系统结构性能、对单片机的应用开发带来以下好处: 可最大限度地简化结构。二线制的I2C串行总线使得各电路单元之间只需最简单的连接,而且总线接口都集成在器件中,不需另加总线接口电路。电路的简化省去了电路板上大量走线,减少电路板面积,提高了可靠性,降低了成本。

可实现电路系统的模块化、标准化设计。在I2C总线上各单元电路除了个别中断引线外,相互之间没有其他连线,用户常用的单元电路基本上与系统电路无关,故极易形成用户自己的标准化、模块化设计。 标准I2C总线模块的组合开发方式大大地缩短了新品的开发周期。

I2C总线各节点具有独立的电器特性,各节点单元电路能在相互不受影响的情况下,甚至在系统供电情况下,接入或撤除。 I2C总线系统构成具有最大的灵活性。系统该型设计、或对已加工好的电路板需扩展功能时,对原有设计及电路板系统影响最小。

I2C总线系统可方便地对某一接点电路进行故障诊断与跟踪,有极好的可维护性

目前Philips及I2C总线器件,除带有I2C总线单片机、常用的通用外围器件外,在家电产品、电讯、电视、音像产品中已发展成套I2C总线器件,在这些部门中I2C总线系统已得到了广泛的应用。 2.1.2 I2C总线的一般应用特性

I2C总线系统中,带有I2C总线的单片机,其I2C总线输入输出口的电器结构、相关的特殊功能寄存器(SFR)设置以及所提供的标准程序模块,为用户掌握I2C总线的系统设计和应用软件的编制带来极大的方便。

I2C总线的串行数据传送与一般UART的串行数据传送无论从借口电器特性、传送状态管理以及程序编制特点都有很大的不同,了解这些特点十分重要。

1. 二线传输。I2C总线上所有的节点,如主器件(单片机,微处理器)、外围器件、借口模块等都连到同名端的 SCL上。

2. 系统中有多个主器件时,这些器件都可作总线的主控制器(无中心主机),I2C总线工作时任何一个主件都可成为主控制器,多机竞争时的时钟同步与总线仲裁都由硬件与标准软件模块自动完成,无须用户介入。

3.I2C总线传输时,采用状态码的管理方法。对应于总线数据传输时的任何一种状态,在状态寄存器中会出现相应的状态码,并且会自动进入响应的状态处理程序中进行自动处理,无须用户介入,用户只须将Philips公司提供的标准状态处理器一定的空间即可。

4.系统中所有外围器件及模块采用器件地址及引脚地址的编码方法。系统中主控制器对任何节点的寻址采用纯软件寻址方法,避免了片选线的先连方法。系统中若有地址编码冲突可通过改变地址引脚的电平设置来解决。

5.所有带I2C接口的外围器件都具有应答功能。片内有多少单元地址时,读数据、写时都有地址自动加1功能。这样,在I2C总线对某一器件读写多个字节时很容易实现自动操作,即准备好读、写入口条件后,只须启动I2C总线就可自动完成n个字节的读、写操作。

6.I2C总线电器接口为开漏晶体管组成,开路输出没有找到电源的钳位二级管,而连到I2C总线的每个器件上,其自身

SDA、

的电源可以独立(但须工地),总线上各个节点可在系统带电情况下接入或撤出。 2.1.3 I2C总线系统中的几个名词、术语

I2C总线系统的结构十分灵活。系统中除了可以挂接带有I2C总线接口的单片机、外围器件外,通过I2C总线扩展器PCD8584可以挂接不带I2C总线接口的单片机、微处理器。通过外围器件可以扩展许多通用外设借口模块。 I2C总线系统构成、总线系统中数据传送时的有关名词、术语规范如下: 一、I2C总线系统中硬件构成的节点

I2C总线系统中每个带有I2C总线接口或I2C总线扩展接口的器件或模块,接入I2C总线中均构成一个I2C总线节点,所有节点之间除公共电源及地外只通过SDA/SCK相连。

由于接入器件的不同,总线中的节点可分为主器件节点和外围器件节点。

主器件节点:系统中由单片机或微处理机构成的节点,这些节点能对I2C总线实现主动控制。

外围器件节点:系统中由不含 CPU的外围器件构成的节点。由于不含CPU,这些节点无法实现对I2C总线的主动控制。 二、I2C总线工作时的主动控制器

主控器:I2C总线工作时,任何一个主器节点都能对总线实现控制,当某个主器件节点控制了总线时,称为主控器。主控器完成一次传输过程的初始化、发送时钟信号及传输终止信号。 被控器:被控器寻址的器件称为被控器。

I2C总线系统中,主器件可作为主控器也可作为被控器,而外围器件只能作为被控器。 三、据传输中的接受/发送器

I2C总线系统中用发送器与接收器来表明数据传输的发送方与接收方。 发送器:总线上发送数据的器件。 接收器:总线上接收数据的器件。

I2C总线上的所有节点都可以成为发送器或接收器。 四、主竞争中的仲裁与同步

在I2C总线系统中可以有多个主器件节点。如果某些主器件节点在运行时都企图控制总线,则形成多主竞争状态,I2C总线系统可保证多个主器件节点企图控制总线时不会丢失信息。在总线竞争过程中进行总线控制权的仲裁和时钟同步,仲裁结果只允许其中一个主器件继续战局总线。

多主竞争:多个主器件节点同时企图控制总线。在多主主状态下总线信息不会丢失。

仲裁:在多主竞争状态时的裁决过程。裁决的结果只允许其中一个主器节点成为主控器继续占据总线。仲裁过程中总线上数据不丢失。

同步;多主竞争状态下将参与竞争的主器件的时钟信号进行同步处理。 2.2 I2C总线的基本原理

I2C总线的时钟线SCL和数据线SDA都是双向传输线。总线备用时SDA和SCL都必须保持高电平状态,只有关闭I2C总线时才使SCL钳位在低电平。在标准I2C模式下数据传送速率可达100kbit/s,高速模式下可达400kbit/s.总线的驱动能力受总线电容限制,不加驱动扩展时驱动能力为400pF。 2.2.1 I2C总线的接口电路

为了能使总线上所有电路的输出能实现线“与”的逻辑功能,各个I2C总线的接口电路的输出端必须是漏极开路或集电极开路结构,如图 2.1所示。输出端必须接上拉电阻。

图2.1I2C总线接口电路结构

2.2.2I2C总线的信号及时序定义

在I2C总线上每传输一位数据都有一个时钟脉冲相对应,其逻辑“0”和“1”的信号电平取决于该节点的正端电源VDD的电压。 数据的有效性

I2C总线数据传输时,在时钟线高电平期间数据线上必须保持有稳定的逻辑电平状态,高电平为数据1,低电平为数据0。只有在时钟线为低电平时,才允许数据线上的电平状态变化。如图2.2 所示。

图2.2I2C总线上的数据位传送 二、 总线数据传送的起始与停止

I2C总线数据传送有两种时序状态分别定义为起始信号和终止信号如图2.3所示.

图2.3I2C总线的起始信号和终止信号

起始信号:在时钟线保持高点平期间,数据线出现由高点平向低点平变化时将启动I2C总线,为I2C总线的起始信号. 终止信号:在时钟线保持高点平期间,数据线出现由低点平向高点平变化时将启动I2C总线,为I2C总线的终止信号. 起始信号与终止信号都是由主控制器产生.总线上带有I2C总线接口的器件很容易检测到这些信号.但是对于不具备这些硬件接口的一些单片机来说,为了能准确地检测到这些信号,必须保证在总线的一个时钟周期内对数据线至少进行两次采样. 三、 总线信号时序要求

为了保证I2C总线数据的可靠传送,对总线上的信号时序作了严格的规定,其时序定义如图2.4所示.图中对 主要信号时序作了定义,并在表2.1中给出了具体数据.表中给出的SCL时钟信号最小高电平和低电平周期决定了 器件的最大数据传输率,标准模式为100Kbit/s,高速模式为400Kbit/s.标准模式和高速模式的I2C总线器件都必须 能满足各自的最高数据传送速率要求.当然,实际数据传送时可以选择不同的数据传送速率,同时也可以采取延长 SCL低电平周期来控制数据传送速率.

图2.4I2C总线的时序定义 表2.1I2C总线信号定时要求

参数 符号 标准模式 最大值 SCL时钟频率 在一个终止信号和起始信号之间必须空闲的时间 起始信号保持时间(在这段时间过后可产生第一个时钟脉冲) SCL时钟信号低电平周期 SCL始终信号高电平周期 一个重复信号的建立时间 数据保持时间:与CBUS兼容的主控器I2C总线器件 数据建立时间 Tsu;dat SDA和SCL信号的上升时间 SDA和SCL信号的下降时间 终止信号的建立时间 Tsu;sto 总线上每条线的负载电容 注:所有数值均以V1Hmin和ViLmax电平为参考.

Cb — 400 — 400 pF 4.0 — Tf — 300 Tr — 1000 20+0.1Cb4) 20+0.1Cb4) 0.6 — Us 300 Ns 300 Ns 250 — 1003) — ns Tsu;sta Thd;dat 5.0 01) — — — 01) — 0.92) Us Us 4.7 — 0.6 — Us Thigh 4.0 — 0.6 — Us Tlow 4.7 — 1.3 — Us Thd;sta 4.0 — 0.6 — Us Fscl Tbuf 0 4.7 最小值 100 — 高速模式 最大值 0 1.3 最小值 400 — 单位 kHz us 1)为了跨过SCL信号下降沿中的未定义区域,所有的器件都必须在内部对SDA信号提供一个至少为300ns的保持时间. 2)只有在器件没有延长SCL信号低电平周期(tlow)的情况下才必须满足thd,dat最大的限制.

3)一个高速模式的I2C总线器件可以用在一个标准模式的I2C总线系统中,但是关于TSU,DAT>=250NS的要求也同时 必须得到满足.反之,它必须在释放SCL以前(根据标准模式下I2C总线规范)提前一定时间TR+TSU;DAT=1000+250NS,先在 SDA线上输出下一比特.

4)CB表示以pF为单位的每条总线的总电容值. 2.2.3 I2C总线上的数据传送格式 一、I2C总线上的数据传送

I2C总线上传送的每一个字节均为8位,但每启动一次I2C总线,其后的数据传输字节数是没有限制的.每传送一个字节后都必须更岁一个应答位,并且首先发送的数据位为最高位在全部数据传送结束后主控制器发送终止信号,如图2.5所示.

图2.5 I2C总线上的数据传送

二、数据传送时的总线控制

冲图中可以看到,没有时钟信号时数据传送将停止进行,接口的线与特征将使SCL在低电平时钳住总线. 这种情况可以用于当接收到一个字节数据后要进行一些其它工作而无法立即接收下个数据时,迫使总线进入 等待状态,直到接收器准备好接收新数据时,接收器再释放时钟线使数据传送得以继续正常进行.例如,当接收器 接收完主控制器的一个字节数据后,产生中断信号并进行中断处理,中断处理完毕才能接收下一个字节数据,这时 接收器在中断处理时将钳住SCL为低电平直到中断处理完毕才释放SCL. 三、应答信号

I2C总线数据传送时,每传送一个字节数据后都必须有应答信号,与应答信号想对应的时钟由主控器产生,这时 发送器必须在这一时钟位上释放数据线,使其处于高电平状态,以便接收器在这一位上送出应答信号,如图2.6所示. 应答信号在第9个时钟位上出现,接收器输出低电平为应答信号(A),输出高电平则为非应答信号(/A). 由于某中原因,被控器不产生应答时,如被控器正在进行其它处理而无法接收总线上 的数据时,必须释放总线,将数据线只高电平,然后主控制器可通过产生一个停止信号 来终止总线数据传输.

当主控器接收数据时,接收到最后一个数据字节后,必须给被空发送器发送一个非应答位(A),使被空发送器释放 数据总线,以便主控制发送停止信号,从而终止数据传送. 四、数据传送格式

IC 总线数据传输时必须遵循规定的数据格式,如图为一次完整的数据传输格式。

2

图2.6I2C总线上的应答信号

本文来源:https://www.bwwdw.com/article/6gl2.html

Top