I2C总线协议及工作原理
i2c协议sda高阻态

i2c协议sda高阻态摘要:1.I2C协议简介2.SDA线的高阻态原理3.高阻态在I2C协议中的应用4.实际应用中的高阻态操作5.总结正文:随着电子技术的不断发展,I2C(Inter-Integrated Circuit)协议已成为一种广泛应用于嵌入式系统、微控制器等领域的通信协议。
I2C协议是一种双线双向通信协议,由两条信号线SDA(串行数据线)和SCL(串行时钟线)组成。
在实际应用中,SDA线的高阻态发挥着重要作用。
本文将对I2C协议中的SDA高阻态进行详细解析。
1.I2C协议简介I2C协议,又称I2C总线或I2C接口,是由Philips公司(现为NXP半导体公司)于1980年代发明的一种串行通信协议。
I2C协议具有以下特点:- 主从模式:通信双方中的一方作为主设备,另一方作为从设备。
- 两线制:使用两条信号线SDA和SCL进行通信。
- 设备地址:每个连接到I2C总线的设备都具有唯一的地址,便于主设备识别。
- 数据传输速率:可根据总线速度进行高速、中速和低速传输。
2.SDA线的高阻态原理SDA线是I2C总线中的数据线,负责在主设备和从设备之间传输数据。
在高阻态下,SDA线处于一种高电平状态,不导电。
此时,SDA线上的电流为0,从而保证了线路的稳定性。
3.高阻态在I2C协议中的应用在I2C通信过程中,高阻态主要有以下应用:- 数据传输:在高阻态下,SDA线可以确保数据在两个设备之间安全传输。
- 同步时钟:在高阻态下,SCL线可以提供稳定的时钟信号,实现通信双方的时钟同步。
- 设备识别:在高阻态下,主设备可以通过查询SDA线上的电平状态来识别从设备。
4.实际应用中的高阻态操作在实际应用中,高阻态操作主要包括以下几个步骤:- 初始化:在通信开始前,双方设备将SDA线驱动为高阻态,以保证线路的稳定性。
- 数据传输:通信过程中,SDA线上的数据在高阻态下进行传输。
- 仲裁:在多个从设备与主设备通信时,通过高阻态实现设备间的仲裁。
TP I2C总线介绍

I2C总线接口一、 I2C总线协议I2C总线是一种串行数据传输总线,连接master(主机)和slave(从机),在两者间进行数据传输。
I2C总线有两根传输线,一根是时钟线SCL,一根是数据线SDA。
其中时钟线由主机控制,数据线是双向工作总线,传输数据,数据传输格式为每传输一个字节后传输一位应答位(应答位低电平有效);两者均通过上拉电阻与电源连接,保持高电平。
+VccSCLSDAI2C总线连接I2C总线在主机和从机之间传输数据时可以分为主机向从机写入数据和从机由主机读取数据两种工作模式。
1、主机向从机写入数据在这种工作模式下主机作为发送器,发送数据;从机作为接收机,接收数据。
2、主机由从机读取数据在这种工作模式下从机作为发送器,发送数据;主机作为接收机,接收数据。
I2C 总线的工作原理:I2C 总线在传输数据时首先要判断其是否启动,启动后对从机进行寻址和读写判断,随后根据是否应答来传输数据,最后再判断总线是否停止。
I2C 总线启动判断:当SCL 处于高电平时,SDA 由高电平变为低电平,标志着总线启动。
I2C 总线停止判断:当SCL 处于高电平时,SDA 由低电平变为高电平,标志着总线停止。
当I2C 总线启动后且未停止时,SDA 在SCL 的低电平发生跳变,在SCL 高电平时保持稳定,保证数据能够被采集。
主机首先发送一个字节的数据对从机进行寻址和读写判断;其中数据的传输先发送最高位,第一个发送字节的高7位是从机地址,最低位是数据读写判断位。
当从机接收到地址后判断是否为其地址,然后对主机应答或非应答。
当主机接收到应答以后开始向从机写入数据或由从机读取数据。
主机向从机写入数据时,每完成一个字节,从机都向主机应答;主机由从机读取数据时,每完成一个字节,主机都对从机应答,当主机读完最后一个字节时主机对从机应答取反。
二、 模块数据流I2C总线接口模块设计图i2c_ctrl 模块:从机读写状态机模块i2c_shift模块:从机控制信号、应答等产生模块i2c_intf_ctrl模块:写串并转换、读数据存储模块主机向从机写入数据:主机首先向从机发送地址和写标志,当从机判断主机发送的地址为其地址时对主机应答,然后主机开始发送数据。
I2C总线的光电隔离措施及电路原理分析

I2C总线的光电隔离措施及电路原理分析I2C总线是一种常用的串行通信协议,用于连接微控制器、传感器和其他外设。
由于I2C总线是一个双线制的通信协议,其中的数据线和时钟线是共用的,这就导致了在一些特定场景下存在干扰和数据传输不可靠的问题。
为了解决这些问题,可以采取一些光电隔离措施及电路原理来提高I2C总线的可靠性和抗干扰性。
一、光电隔离措施1.光电耦合器光电耦合器是一种可以实现光电隔离的器件,它包括一个发光二极管和一个光敏电阻(或光敏三极管)。
在I2C总线上,可以将发光二极管连接到主设备的SDA和SCL线上,然后将光敏电阻连接到从设备的SDA和SCL线上。
这样,当主设备将数据或时钟信号传输到从设备时,光电耦合器会将信号转换为光信号,并通过光传导到从设备的SDA和SCL线上,从而实现光电隔离。
2.光耦光耦是一种包含光电二极管和光敏三极管的器件,可以实现光电隔离。
在I2C总线上,可以使用光耦将主设备和从设备之间的SDA和SCL线进行隔离。
将主设备的SDA和SCL线连接到光电二极管的阳极和阴极上,然后将光敏三极管的集电极和发射极分别连接到从设备的SDA和SCL线上。
当主设备将数据或时钟信号传输到从设备时,光耦会将信号通过光传导到从设备的SDA和SCL线上,从而实现光电隔离。
1.使用电阻器提高抗干扰性在进行I2C总线的光电隔离时,可以采用电阻器来提高总线的抗干扰性。
将电阻器连接到总线上可以起到限流的作用,使总线的驱动能力得到提升,从而改善总线的干扰抗性。
此外,使用电阻器可以改善总线的匹配阻抗,提高信号的传输质量。
2.增加滤波电容在I2C总线的光电隔离电路中,可以增加适当的滤波电容来抑制干扰信号。
滤波电容可以起到滤波器的作用,将高频噪声滤除,提高总线的信号质量。
在I2C总线的主设备和从设备之间加入适当的电容,可以阻止外界噪声对总线信号的干扰。
3.使用保护器件为了保护I2C总线免受过电流、过电压和ESD的影响,可以在总线的主设备和从设备之间插入保护器件。
i2c隔离方案

i2c隔离方案I2C是指Inter-Integrated Circuit,是一种串行通信协议,可在多个设备之间进行数据传输。
然而,在特定的应用场景中,I2C信号会受到干扰,导致通信过程中的问题。
为了解决这些问题,开发了I2C隔离方案。
本文将介绍I2C隔离方案的原理、应用和优势。
一、I2C隔离方案的原理I2C隔离方案通过隔离器件将I2C总线分为两个电气隔离区域,分别为主机端和从机端。
在主机端,I2C信号经过隔离器件进行转换,并传输到从机端。
这样做的目的是隔离主机与从机之间的地线和电源线,从而防止地线回路、不同地电位和噪声干扰对I2C通信的影响。
二、I2C隔离方案的应用1. 工业自动化:在工业自动化领域,传感器和执行器通常连接到控制器或PLC。
通过使用I2C隔离方案,可以防止地线回路引起的干扰,确保高可靠性和稳定性。
2. 医疗设备:医疗设备中经常使用I2C总线连接传感器和监测设备,如心率监测、血压计等。
通过使用I2C隔离方案,可以保障医疗设备的准确性和安全性。
3. 航空航天:在航空航天领域,I2C总线被广泛应用于飞行控制系统和通信系统。
I2C隔离方案可以提供可靠的通信和数据传输,确保飞行器的稳定性和安全性。
三、I2C隔离方案的优势1. 数据完整性:使用I2C隔离方案可以防止噪声和电气干扰对数据传输的影响,确保数据的完整性和准确性。
2. 地线回路隔离:I2C隔离器件可以有效隔离主机和从机之间的地线回路,避免地线回路引起的干扰问题。
3. 电气隔离:通过电气隔离,可以消除不同地电位之间的干扰,提高系统的稳定性和可靠性。
4. 安全性提升:I2C隔离方案可以防止潜在的电源线干扰,提高设备的安全性和可靠性。
5. 简化系统设计:使用I2C隔离方案,可以减少对其他外部元件的需求,简化系统设计和布线。
结论I2C隔离方案在工业自动化、医疗设备、航空航天等领域具有重要的应用价值。
它通过隔离器件将I2C总线分为两个电气隔离区域,避免了地线回路和噪声干扰对通信的影响。
I2C总线结构及工作原理小结

参数 SCL 时钟频率
表 1 I2C 总线信号定时要求
符号
标准模式 最大值 最小值
Fscl
0
100
高速模式 最大值 0
最小值 400
单位 kHz
在一个终止信号和起始信号 之间必须空闲的时间
Tbuf
4.7
—
1.3
—
us
起始信号保持时间 (此后可产生第一个时钟脉冲)
Thd;sta 4.0
:主控器接收,被控器发送
A:应答信号
A :非应答信号
S:起始信号
P:停止信号
SLAW:寻址字节(写)
DatБайду номын сангаас1~Datan:写入被控器的 n 个数据字节
2.主控器的读操作。主控器从被控器中读出 n 个字节的操作,整个传输过程中除寻址字节外,都是被控器
发送,主控器接收的过程。数据传送的格式如下:
S SLAW
数据传输中的接受/发送器
I2C 总线系统中用发送器与接收器来表明数据传输的发送方与接收方。 发送器:总线上发送数据的器件。 接收器:总线上接收数据的器件。
I2C 总线上的所有节点都可以成为发送器或接收器。
主竞争中的仲裁与同步
在 I2C 总线系统中可以有多个主器件节点。如果某些主器件节点在运行时都企图控制总线,则形成多 主竞争状态,I2C 总线系统可保证多个主器件节点企图控制总线时不会丢失信息。在总线竞争过程中进行 总线控制权的仲裁和时钟同步,仲裁结果只允许其中一个主器件继续战局总线。
I2C总线系统中的几个名词、术语
I2C 总线系统的结构十分灵活。系统中除了可以挂接带有 I2C 总线接口的单片机、外围器件外,通过 I2C 总线扩展器 PCD8584 可以挂接不带 I2C 总线接口的单片机、微处理器。通过外围器件可以扩展许多通 用外设借口模块。
I2C总线

双向二线制同步串行总线
01 工作原理
03 数据传输
目录
02 特征 04 模式
基本信息
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上 的器件之间传送信息。
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器 件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件, 则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据, 首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负 责产生定时时钟和终止数据传送。
6、连接到总线的外部上拉器件必须调整以适应快速模式I2C总线更短的最大允许上升时间。对于负载最大是 200pF的总线,每条总线的上拉器件可以是一个电阻,对于负载在200pF~400pF之间的总线,上拉器件可以是一个 电流源(最大值3mA)或者是一个开关电阻电路。
高速模式
高速模式(Hs模式)器件对I2C总线的传输速度有巨大的突破。Hs模式器件可以在高达3.4Mbit/s的位速率 下传输信息,而且保持完全向下兼容快速模式或标准模式(F/S模式)器件,它们可以在一个速度混合的总线系 统中双向通讯。
Hs模式传输除了不执行仲裁和时钟同步外,与F/S模式系统有相同的串行总线协议和数据格式。
高速模式下I2C总线规范如下:
1、Hs模式主机器件有一个SDAH信号的开漏输出缓冲器和一个在SCLH输出的开漏极下拉和电流源上拉电路。 这个电流源电路缩短了SCLH信号的上升时间,任何时候在Hs模式,只有一个主机的电流源有效;
i2c协议仲裁机制
i2c协议仲裁机制摘要:I2C 协议仲裁机制1.I2C 协议简介2.I2C 协议仲裁机制的作用3.I2C 协议仲裁机制的工作原理4.I2C 协议仲裁机制的优缺点5.应用案例正文:I2C(Inter-Integrated Circuit)协议,又称为两线制串行通信协议,是一种串行通信总线,广泛应用于各种电子设备之间的低速通信。
I2C 协议仲裁机制是保证多个设备在总线上进行通信时,能够高效、有序地完成数据传输的关键。
1.I2C 协议简介I2C 协议是一种串行通信协议,它只需要两根信号线即可实现设备之间的通信,分别是数据线(SDA)和时钟线(SCL)。
I2C 协议支持多个设备连接在同一条总线上,设备之间可以进行地址识别和数据传输。
2.I2C 协议仲裁机制的作用I2C 协议仲裁机制的主要作用是在多个设备同时发送数据时,保证数据传输的有序进行,防止数据冲突。
通过仲裁机制,设备能够确定发送数据的顺序,确保数据传输的可靠性。
3.I2C 协议仲裁机制的工作原理I2C 协议仲裁机制的工作原理主要基于总线上的电平。
在数据传输过程中,设备会根据总线上的电平情况来判断是否可以发送数据。
当总线上的电平为高电平时,设备会认为总线空闲,可以发送数据;当总线上的电平为低电平时,设备会认为总线上有其他设备正在发送数据,此时设备需要等待,直到总线空闲再发送数据。
4.I2C 协议仲裁机制的优缺点优点:- 简单易用:I2C 协议仲裁机制基于电平判断,不需要复杂的逻辑电路。
- 支持多设备通信:I2C 协议可以连接多个设备,实现多设备间的通信。
缺点:- 通信速度受限:由于I2C 协议仲裁机制基于电平判断,当总线上的设备数量较多时,电平判断的延迟会影响通信速度。
- 可能出现数据冲突:在多个设备同时发送数据时,仲裁机制不能完全保证数据传输的有序性,可能导致数据冲突。
5.应用案例I2C 协议仲裁机制广泛应用于各种电子设备,如微控制器、存储器、传感器等。
i2c协议
i2c协议I2C(Inter-Integrated Circuit)是一种串行通信协议,广泛应用于各种电子设备中。
I2C通信协议由飞利浦公司(现在的恩智浦公司)开发,其最初是为了简化在一个PCB上连接各种集成电路之间的通信而设计的。
I2C协议是一个简单而高效的串行通信协议,具有以下几个特点。
首先,I2C协议只需要两根信号线即可进行通信,分别是时钟线(SCL)和数据线(SDA)。
其次,I2C协议使用主从机制来管理设备之间的通信,其中一个设备为主设备(Master),总控制总线上的通信;其他设备为从设备(Slave),只有在主设备的通信命令下才会传输数据。
此外,I2C协议还可以支持多主设备并存,通过特定的控制方法进行主设备的转换。
最后,I2C协议的数据传输速度较快,通信速率可以达到400Kbps,甚至可以扩展到1Mbps,使用廉价而少量的硬件成本即可实现。
I2C协议的数据传输原理也比较简单。
首先,主设备会向总线发送一个开始信号(Start Signal),通知其他设备是否要开始通信。
然后,主设备发送一个命令字(Address),以表示要与哪个从设备进行通信。
接着,主设备检查从设备是否存在,如果存在,则从设备会发送一个确认信号(Acknowledge Signal)给主设备。
一旦从设备确认接收到主设备的命令,主设备就可以向从设备发送数据。
最后,一旦通信完成,主设备会发送一个停止信号(Stop Signal),从而断开设备之间的总线连接。
总之,I2C协议是一种广泛应用于各种电子设备之间的串行通信协议,其简单而高效的数据传输原理和低成本的硬件要求使其成为了非常受欢迎的协议。
i2c协议仲裁机制
i2c协议仲裁机制一、介绍i2c(Inter-Integrated Circuit)是一种串行通信协议,由飞利浦公司(Philips)在1982年推出。
它是一种用于连接多个外设到主控芯片的通信协议,广泛应用于各种电子设备中。
i2c协议通过两根线(SDA和SCL)实现数据传输,其中SDA线用于数据传输,SCL线用于时钟同步。
在i2c通信中,多个设备共享同一条总线,这就需要解决多个设备同时访问总线的冲突问题。
i2c协议通过仲裁机制来解决这个问题,确保每个设备都能按照规定的顺序进行数据传输。
二、i2c仲裁机制的原理i2c仲裁机制的原理是基于主从设备的不同响应方式来实现的。
在总线上,每个设备都有一个唯一的地址,主设备通过发送地址来选择要和哪个从设备进行通信。
当多个设备同时请求总线访问时,仲裁机制会确保只有一个设备能够成功地占用总线。
三、i2c仲裁机制的具体实现方式i2c仲裁机制有两种具体的实现方式:硬件仲裁和软件仲裁。
3.1 硬件仲裁硬件仲裁是指通过硬件电路来实现仲裁机制。
在i2c总线上,每个设备的SDA线都连接到总线上,这些线上都有一个电阻。
当设备想要访问总线时,它会将SDA线拉低,如果检测到总线上电平为低的情况,则说明有其他设备正在访问总线,此时它会停止访问并等待。
3.2 软件仲裁软件仲裁是指通过软件算法来实现仲裁机制。
在i2c总线上,每个设备都有一个唯一的地址,这个地址决定了设备在总线上的优先级。
当多个设备同时请求总线访问时,总线上的主设备会发送地址,并根据地址的优先级来判断哪个设备可以占用总线。
如果有多个设备的地址相同,那么它们会同时发送数据,然后通过数据的比较来决定哪个设备可以占用总线。
四、i2c仲裁机制的优缺点i2c仲裁机制具有以下优点: - 简单:i2c仲裁机制的实现相对简单,不需要复杂的电路或算法。
- 可靠:i2c仲裁机制可以确保每个设备都能按照规定的顺序进行数据传输,从而避免冲突和数据丢失。
i2c通信的详细讲解
i2c通信的详细讲解I2C(全称Inter-IntegratedCircuit)是一种基于两线式总线系统,可以利用它让一台机器和另一台机器或者一个器件与另一个器件之间建立通信连接。
它由一个多晶片系统(Multi-Chip System)所创造出来,可以减少实现多晶片系统的内部连接的数量,从而减少印制电路板的体积。
它允许多达127个从设备以最低物理开销(Low Physical Overhead)与一个主设备连接,具有低成本和高可靠性,现已成为很多类型的微控制器(Microcontroller)和处理器(Processors)的标准总线,应用非常广泛。
1. I2C概述I2C从最初的Philips经过20多年的发展,已经成为一种横跨多个行业的解决方案。
它可以在不同的系统上提供高性能片上系统(System-on-a-Chip,SoC)间的通信和协调,支持多达127的电子设备连接。
主要由两条信号线,称为SDA(Data Line)和SCL(Clock Line)构成,它们分别连接电子设备的数据和时钟,每个设备还有一个物理上的地址,用于标识彼此来进行通信。
I2C总线具有速度快、低功耗、简单易用等优点,现在已经被应用在系统和高速处理器、传感器、可编程逻辑器件(PLD)、多媒体设备、电源管理、液晶/LED等多个行业中。
2. I2C通信原理I2C通信可以说是一种异步通信方式,它是一种时钟控制的异步通信方式,发送一个字节,都要经过下面几个步骤:(1)发送起始条件:S(Start):该条件由SDA和SCL电平组合构成,SDA在SCL电平为高时从高电平变低电平。
(2)发送设备地址:在I2C总线上,设备都会有自己的地址,每个设备可以收发多个字节,这样就可以确定设备的身份。
(3)发送控制位:也称命令位,它用于确定主设备发送的是某种命令,比如写入数据,读取数据,还是其它的控制信息。
(4)发送数据:数据由SDA高低电平传输,而SDA电平的变化必须在SCL的上升沿才能有效。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
I2C总线协议及工作原理 一、概述 1、I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 SCL:上升沿将数据输入到每个EEPROM器件中;下降沿驱动EEPROM器件输出数据。(边沿触发) SDA:双向数据线,为OD门,与其它任意数量的OD与OC门成"线与"关系。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平(SDL=1;SCL=1)。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。 2、主设备与从设备 系统中的所有外围器件都具有一个7位的"从器件专用地址码",其中高4位为器件类型,由生产厂家制定,低3位为器件引脚定义地址,由使用者定义。主控器件通过地址码建立多机通信的机制,因此I2C总线省去了外围器件的片选线,这样无论总线上挂接多少个器件,其系统仍然为简约的二线结构。终端挂载在总线上,有主端和从端之分,主端必须是带有CPU的逻辑模块,在同一总线上同一时刻使能有一个主端,可以有多个从端,从端的数量受地址空间和总线的最大电容 400pF的限制。
主端主要用来驱动SCL line; 从设备对主设备产生响应; 二者都可以传输数据,但是从设备不能发起传输,且传输是受到主设备控制的。
二、协议 1.空闲状态 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。 2.起始位与停止位的定义: 起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。 停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。 起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。 接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。
3.ACK 发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。 应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。 对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。 如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。
如下图逻辑分析仪的采样结果:释放总线后,如果没有应答信号,sda应该一直持续为高电平,但是如图中蓝色虚线部分所示,它被拉低为低电平,证明收到了应答信号。 这里面给我们的两个信息是:1)接收器在SCL的上升沿到来之前的低电平期间拉低SDA;2)应答信号一直保持到SCL的下降沿结束;正如前文红色标识所指出的那样。
4.数据的有效性: I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
5.数据的传送: 在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。数据位的传输是边沿触发。 工作过程 总线上的所有通信都是由主控器引发的。在一次通信中,主控器与被控器总是在扮演着两种不同的角色。 1.主设备向从设备发送数据 主设备发送起始位,这会通知总线上的所有设备传输开始了,接下来主机发送设备地址,与这一地址匹配的slave将继续这一传输过程,而其它slave将会忽略接下来的传输并等待下一次传输的开始。主设备寻址到从设备后,发送它所要读取或写入的从设备的内部寄存器地址; 之后,发送数据。数据发送完毕后,发送停止位。(这段看不懂就别看了,没什么用) 写入过程如下: 发送起始位 1)发送从设备的地址和读/写选择位;释放总线,等到EEPROM拉低总线进行应答;如果EEPROM接收成功,则进行应答;若没有握手成功或者发送的数据错误时EEPROM不产生应答,此时要求重发或者终止。 2)发送想要写入的内部寄存器地址;EEPROM对其发出应答; 3)发送数据 4)发送停止位. 5)EEPROM收到停止信号后,进入到一个内部的写入周期,大概需要10ms,此间任
何操作都不会被EEPROM响应 详细: 需要说明的是:①主控器通过发送地址码与对应的被控器建立了通信关系,而挂接在总线上的其它被控器虽然同时也收到了地址码,但因为与其自身的地址不相符合,因此提前退出与主控器的通信; 2.主控器读取数据的过程: 读的过程比较复杂,在从slave读出数据前,你必须先要告诉它哪个内部寄存器是你想要读取的,因此必须先对其进行写入(dummy write): 1)发送起始位; 2)发送slave地址+write bit set; 3)发送内部寄存器地址; 4)重新发送起始位,即restart; 5)重新发送slave地址+read bit set; 6)读取数据 主机接收器在接收到最后一个字节后,也不会发出ACK信号。于是,从机发送器释放 SDA线,以允许主机发出P信号结束传输。 7)发送停止位
详细: 2、数据传送格式 (1)字节传送与应答 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。
由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。 如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。 当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,从机释放SDA线,以允许主机产生终止信号。 (2)数据帧格式 I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。 在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。 在总线的一次数据传送过程中,可以有以下几种组合方式: a、主机向从机发送数据,数据传送方向在整个传送过程中不变:
注:有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。 A表示应答, 表示非应答(高电平)。S表示起始信号,P表示终止信号。 b、主机在第一个字节后,立即由从机读数据
c、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。 6、总线的寻址 I2C总线协议有明确的规定:采用7位的寻址字节(寻址字节是起始信号后的第一个字节)。 (1)寻址字节的位定义
D7~D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。
主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/位将自己确定为发送器或接收器。 从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该I2C总线系统中。 (2)寻址字节中的特殊地址 固定地址编号0000和1111已被保留作为特殊用途。
起始信号后的第一字节的8位为“0000 0000”时,称为通用呼叫地址。通用呼叫地址的用意在第二字节中加以说明。格式为:
第二字节为 06H(0110)时,所有能响应通用呼叫地址的从机器件复位,并由硬件装入从机地址的可编程部分。能响应命令的从机器件复位时不拉低SDA和SCL线,以免堵塞总线。 第二字节为 04H(0100)时,所有能响应通用呼叫地址并通过硬件来定义其可编程地址的从机器件将锁定地址中的可编程位,但不进行复位。 如果第二字节的方向位B为“1”,则这两个字节命令称为硬件通用呼叫命令。 在这第二字节的高7位说明自己的地址。接在总线上的智能器件,如单片机或其他微处理器能识别这个地址,并与之传送数据。硬件主器件作为从机使用时,也用这个地址作为从机地址。格式为:
在系统中另一种选择可能是系统复位时硬件主机器件工作在从机接收器方式,这时由系统中的主机先告诉硬件主机器件数据应送往的从机器件地址,当硬件主机器件要发送数据时就可以直接向指定从机器件发送数据了。
(3)起始字节 起始字节是提供给没有I2C总线接口的单片机查询I2C总线时使用的特殊字节。 不具备I2C总线接口的单片机,则必须通过软件不断地检测总线,以便及时地响应总线的请求。单片机的速度与硬件接口器件的速度就出现了较大的差别,为此,I2C总线上的数据传送要由一个较长的起始过程加以引导。
引导过程由起始信号、起始字节、应答位、重复起始信号(Sr)组成。 请求访问总线的主机发出起始信号后,发送起始字节(0000 0001),另一个单片机可以用一个比较低的速率采样SDA线,直到检测到起始字节中的7个“0”中的一个为止。在检测到SDA线上的高电平后,单片机就可以用较高的采样速率,以便寻找作为同步信号使用的第二个起始信号Sr。 在起始信号后的应答时钟脉冲仅仅是为了和总线所使用的格式一致,并不要求器件在这个脉冲期间作应答。
总线数据传送的模拟