您的位置 首页 编程

I2C总线信号时序总结

总线空闲状态I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态

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

发动信号
  在时钟线SCL坚持高电平期间,数据线SDA上的电平被拉低(即负跳变),界说为I2C总线总线的发动信号,它标志着一次数据传输的开端。发动信号是一种电平跳变时序信号,而不是一个电平信号。发动信号是由主控器自动树立的,在树立该信号之前I2C总线有必要处于闲暇状况。

重发动信号
  在主控器操控总线期间完成了一次数据通讯(发送或接纳)之后,假如想持续占用总线再进行一次数据通讯(发送或接纳),而又不开释总线,就需求运用重发动Sr信号时序。重发动信号Sr既作为前一次数据传输的完毕,又作为后一次数据传输的开端。运用重发动信号的长处是,在前后两次通讯之间主控器不需求开释总线,这样就不会丢掉总线的操控权,即不让其他主器材节点抢占总线。

中止信号
  在时钟线SCL坚持高电平期间,数据线SDA被开释,使得SDA回来高电平(即正跳变),称为I2C总线的中止信号,它标志着一次数据传输的中止。中止信号也是一种电平跳变时序信号,而不是一个电平信号,中止信号也是由主控器自动树立的,树立该信号之后,I2C总线将回来闲暇状况。

不是在数据有用性中规则在SDA只能在SCL的低电平的时分改动,为何STAR,STOP不相同?首要STAR和STOP不是数据,所以能够不恪守数据有用性中的规则,其它数据都恪守,而STAR和STOP“不恪守”导致STAR和STOP更简单被辨认。这样不是不恪守而是更有优势。

开端和中止条件一般由主机产生,总线在开端条件后被以为处于忙的状况,在中止条件的某段时刻后总线被以为再次处于闲暇状况。

假如产生重复开端(Sr) 条件而不产生中止条件,总线会一向处于忙的状况。此刻的开端条件(S)和重复开端(Sr) 条件在功能上是相同的。
假如连接到总线的器材兼并了必要的接口硬件,那么用它们检测开端和中止条件非常简洁。可是没有这种接口的微操控器在每个时钟周期至少要采样SDA 线两次来判别有没有产生电平切换。


数据位传送
  在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步操控),即在SCL串行时钟的合作下,在SDA上逐位地串行传送每一位数据。进行数据传送时,在SCL出现高电平期间,SDA上的电平有必要坚持安稳,低电平为数据0,高电平为数据1。只要在SCL为低电平期间,才答应 SDA上的电平改动状况。逻辑0的电平为低电压,而逻辑1的电平取决于器材自身的正电源电压VDD(当运用独立电源时)。数据位的传输是边缘触发。

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

刺进等候时刻
  假如被控器需求推迟下一个数据字节开端传送的时刻,则能够通过把时钟线SCL电平拉低而且坚持,使主控器进入等候状况。一旦被控器开释时钟线,数据传输就得以持续下去,这样就使得被控器得到满足时刻搬运现已收到的数据字节,或许准备好行将发送的数据字节。带有CPU的被控器在对收到的地址字节做出应对之后,需求必定的时刻去履行中止服务子程序,来剖析或比较地址码,其间就把SCL线钳位在低电平上,直到处理稳当后才开释SCL线,进而使主控器持续后续数据字节的发送。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部