您的位置 首页 国产IC

I2C总线概述及时序总结

一.概述:I2C 是Inter-Integrated Circuit的缩写,发音为eye-squared cee or eye-two-cee , 它是一种两线接口。I2C 只是用两条双向的线,一条

一.概述:

I2C 是Inter-Integrated Circuit的缩写,发音为eye-squared cee or eye-two-cee , 它是一种两线接口。

I2C 仅仅用两条双向的线,一条 Serial Data Line (SDA) ,另一条Serial Clock (SCL)。

SCL:上升沿将数据输入到每个EEPROM器材中;下降沿驱动EEPROM器材输出数据。(边缘触发)

SDA:双向数据线,为OD门,与其它恣意数量的OD与OC门成线与联系。

二.输出级

每一个I2C总线器材内部的SDASCL引脚电路结构都是相同的,引脚的输出驱动与输入缓冲连在一起。其间输出为漏极开路的场效应管,输入缓冲为一只高输入阻抗的同相器,这种电路具有两个特色:

1)由于SDA、SCL为漏极开路结构(OD),因而它们有必要接有上拉电阻,阻值的巨细常为 1k8, 4k7 and 10k ,但1k8 时功能最好;当总线闲暇时,两根线均为高电平。连到总线上的任一器材输出的低电平,都将使总线的信号变低,即各器材的SDA及SCL都是线与联系。

2)引脚在输出信号的一起还将引脚上的电平进行检测,检测是否与方才输出共同,为时钟同步和总线裁定供给了硬件根底。

三. 主设备与从设备

体系中的一切外围器材都具有一个7位的从器材专用地址码,其间高4位为器材类型,由生产厂家拟定,低3位为器材引脚界说地址,由运用者界说。主控器材经过地址码树立多机通讯的机制,因而I2C总线省去了外围器材的片选线,这样不管总线上挂接多少个器材,其体系依然为精约的二线结构。终端挂载在总线上,有主端和从端之分,主端有必要是带有CPU的逻辑模块,在同一总线上同一时间使能有一个主端,能够有多个从端,从端的数量受地址空间和总线的最大电容 400pF的约束。

● 主端首要用来驱动SCL line;

● 从设备对主设备发生呼应;

二者都能够传输数据,可是从设备不能建议传输,且传输是遭到主设备操控的。

四.速率:

● 一般形式:100kHz;

● 快速形式:400kHz;

● 高速形式:3.4MHz;

没有任何必要运用高速SCL,将SCL坚持在100k或以下,然后忘了它吧。

五.时序

1、协议

(1)闲暇状况

I2C总线的SDA和SCL两条信号线一起处于高电平时,规定为总线的闲暇状况。此刻各个器材的输出级场效应管均处在截止状况,即开释总线,由两条信号线各自的上拉电阻把电平拉高。

(2)开端位与中止位的界说:

开端信号:当SCL为高期间,SDA由高到低的跳变;发动信号是一种电平跳变时序信号,而不是一个电平信号。

中止信号:当SCL为高期间,SDA由低到高的跳变;中止信号也是一种电平跳变时序信号,而不是一个电平信号。

(3)ACK

发送器每发送一个字节,就在时钟脉冲9期间开释数据线,由接纳器反应一个应对信号。 应对信号为低电平时,规定为有用应对位(ACK简称应对位),表明接纳器现已成功地接纳了该字节;应对信号为高电平时,规定为非应对位(NACK),一般表明接纳器接纳该字节没有成功。 关于反应有用应对位ACK的要求是,接纳器在第9个时钟脉冲之前的低电平期间将SDA线拉低,而且保证在该时钟的高电平期间为安稳的低电平。 假如接纳器是主控器,则在它收到最终一个字节后,发送一个NACK信号,以告知被控发送器完毕数据发送,并开释SDA线,以便主控接纳器发送一个中止信号P。

如下图逻辑分析仪的采样成果:开释总线后,假如没有应对信号,sda应该一向持续为高电平,可是如图中蓝色虚线部分所示,它被拉低为低电平,证明收到了应对信号。

这儿边给咱们的两个信息是:1)接纳器在SCL的上升沿到来之前的低电平期间拉低SDA;2)应对信号一向坚持到SCL的下降沿完毕;正如前文赤色标识所指出的那样。

(4)数据的有用性:

I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据有必要坚持安稳,只要在时钟线上的信号为低电平期间,数据线上的高电平或低电平状况才答应改变。

我的了解:尽管只要求在高电平期间坚持安稳,可是要有一个提早量,也便是数据在SCL的上升沿到来之前就需准备好,由于在前面I2C总线之(一)—概述一文中现已指出,数据是在SCL的上升沿打入到器材(EEPROM)中的。

(5)数据的传送:

在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步操控),即在SCL串行时钟的合作下,在SDA上逐位地串行传送每一位数据。数据位的传输是边缘触发。

2、作业进程

总线上的一切通讯都是由主控器引发的。在一次通讯中,主控器与被控器总是在扮演着两种不同的人物。

(1)主设备向从设备发送数据

主设备发送开端位,这会告知总线上的一切设备传输开端了,接下来主机发送设备地址,与这一地址匹配的slave将持续这一传输进程,而其它slave将会疏忽接下来的传输并等候下一次传输的开端。主设备寻址到从设备后,发送它所要读取或写入的从设备的内部寄存器地址; 之后,发送数据。数据发送完毕后,发送中止位:

写入进程如下:

发送开端位

● 发送从设备的地址和读/写挑选位;开释总线,比及EEPROM拉低总线进行应对;假如EEPROM接纳成功,则进行应对;若没有握手成功或许发送的数据错误时EEPROM不发生应对,此刻要求重发或许中止。

● 发送想要写入的内部寄存器地址;EEPROM对其宣布应对;

● 发送数据

● 发送中止位.

● EEPROM收到中止信号后,进入到一个内部的写入周期,大约需求10ms,此间任何操作都不会被EEPROM呼应;(因而以这种方法的两次写入之间要刺进一个延时,否则会导致失利,博主曾在这儿小坑了一下)

具体:

需求阐明的是:①主控器经过发送地址码与对应的被控器树立了通讯联系,而挂接在总线上的其它被控器尽管一起也收到了地址码,但由于与其本身的地址不相契合,因而提早退出与主控器的通讯;

(2)主控器读取数据的进程:

读的进程比较复杂,在从slave读出数据前,你有必要先要告知它哪个内部寄存器是你想要读取的,因而有必要先对其进行写入(dummy write):

● 发送开端位;

● 发送slave地址+write bit set;

● 发送内部寄存器地址;

● 从头发送开端位,即restart;

● 从头发送slave地址+read bit set;

● 读取数据

主机接纳器在接纳到最终一个字节后,也不会宣布ACK信号。所以,从机发送器开释SDA线,以答应主机宣布P信号完毕传输。

● 发送中止位

具体:

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/137719.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部