I3C和I2C之间的差异

I3C和I2C之间的差异 tomato 2023-09-18 11:05:06 1273

I2C无疑是工程师最熟悉的接口之一,而如今,支持更高传输速率和热插拔的I3C脱颖而出。鉴于I2C的历史和应用广泛性,未来将会出现两者共存与混用的局面。为了有助于工程师实现优异设计,本文详细讨论了两个协议的差异、标准后向兼容性以及I2C设备在I3C总线上的行为,并提供了具体的混用设计技巧。

I3C可能很快就会取代I2C而成为中低速率串行通信的行业标准,并成为转换器传感器等嵌入式设备中所使用的主要接口。在许多新I3C主从设备正在面世的同时,未来I2C可能还会继续使用。正因为如此,工程师在系统中可能会遇到I3C与I2C混用的情况。

此时,也许有工程师会怀疑,I2C设备能否在I3C总线上工作?简而言之,答案是肯定的。但是,确实也有一些后向兼容性方面的限制。在这些限制中,最复杂的是时钟延展。

I3C和I2C之间的差异

I3C是由移动产业处理器接口(MIPI)联盟创建的,初衷是为了克服I2C的许多不足。但这两个协议确实有很多不同之处,表1中对这两种协议进行了比较。

易百纳社区

表1:I2C和I3C的比较凸显了这两种通信协议之间的差异

尽管与I2C相比,I3C有许多差异和优势,不过MIPI联盟还是尽量使I3C向后兼容I2C。这意味着两种协议的控制器和目标设备可以在同一总线上共存, I2C和I3C能够混用。

I3C向后兼容性的局限性

虽然向后兼容性是新协议开发过程中的主要目标,但I3C并非完全向后兼容I2C。一些显著的区别如下:

•Glitch滤波器

Glitch滤波器,有时被称为毛刺滤波器,用于滤除通信总线上的各种无用噪声。I2C设备在串行数据(SDA)和串行时钟(SCL)线上采用这类滤波器,可以防止对数据和时钟的干扰。故许多I2C设备已经在每条串行线上内置了50ns的毛刺滤波器。

由于I3C支持更高的通信速率,故没有在I3C中内置50ns毛刺滤波器。根据I3C规范,所有传统I2C设备都需要采用50ns毛刺滤波器。如果I2C设备没有内置该滤波器,则需要在外部利用分立元器件设计一个滤波器。

•有限的速率模式

在I2C协议中,具有时序和最大通信速率各不相同的几种速率模式。例如,标准模式支持高达100Kbps的比特率。为了使I2C能够在这些速率下正常通信,就必须遵守相应速率模式下的时序规范。

每种速率模式下,对设置时间、保持时间、上升时间和下降时间等参数都有最基本的要求。I3C并不支持I2C提供的所有速率模式。仅支持其中的两种速率模式,分别是快速模式和快速模式+。

为满足这一要求,I2C必须工作在这些速率模式下。当I3C控制器与I2C目标设备通信时,控制器将调整总线速率,以适应这类较慢的通信。只有在与I2C目标通信时,I3C控制器才会减慢总线的速率,而与I3C目标通信时,总线速率则不会降低。

•时钟延展

当设备之间进行通信时,可能会出现这样一种情况,即当一个设备要读/写数据时,要传输的数据尚未准备好。在这类情况下,一些I2C设备会利用一种称为时钟延展的方法来暂停时钟(注意,并非所有I2C设备都支持时钟延展),从而允许更多的时间来满足某些时序要求。例如,对于I2C来说,进行通信和模数转换(ADC)采样时,必须采用单独时钟。而I3C的操作中,所支持设备完全独立于SCL时钟,故I3C规范禁止采用时钟停滞。因此,为了与I3C总线兼容,支持时钟延展的I2C设备必须在无延展的时钟频率上工作。

时钟延展深入分析

I3C向后兼容的前两个限制很容易解决:即添加毛刺滤波器或改变通信速率,即可满足这些要求所需。然而,时钟延展方面的需求则更为复杂。由于I2C是漏极开路,因此在I2C中,可以简单地将时钟线拉低,并将其保持在低电平,以提供必要的时间,直到所请求的数据准备好为止。而当时钟线被释放时,控制器继续驱动时钟,并使通信恢复正常。

仍以ADC为例。ADC对获取数据的转换需要一个最小时间,称之为转换时间。如果转换时间超过启动读取消息确认(ACK)与下一个时钟沿之间的时间量,则ADC将需要更多的时间来完成转换。在这种情况下,ADC通过将时钟拉低来暂停时钟,直到转换完成。ADC然后释放时钟,并在下一个时钟边沿开始传输转换数据。

图1所示为一个12位ADC转换数据的I2C消息传输示例。请注意,时钟延展发生在每个数据块发送之前,以便留出额外的时间来完成模数转换。此外,支持时钟延展的设备,可能不会在所有时钟频率上都进行时钟延展。因为时钟延展是一种用于满足最小时序要求的方法,所以,可以将时钟减慢到无需延展即可满足时序要求的程度。较慢的时钟使设备有更多的时间来获取请求的数据,从而没有必要再进行时钟延展。

易百纳社区

图1:I2C时钟延展条件下的ADC转换数据传输

如何确定时钟延展的时间

确定I2C开始时钟延展的频率,对于确保其在I3C总线上的正确运行非常重要。数据表可能没有明确注明时钟延展的起始频率。不过,根据数据表中提供的其他信息,工程师可以计算得到此阈值。

以ADS7142为例,它是一个12位逐次逼近寄存器型ADC,其工作独立于I2C时钟。数据表指出,当转换时间大于SCL低电平时间时,将产生时钟延展。为了简化计算,假设时钟占空比为50%,该值位于快速模式的范围内。

根据这些信息,可以得到:

tCONV=转换时间

TSCL=I2C时钟周期

如果tCONV≥1/2 TSCL,有时钟延展

如果tCONV<1/2 TSCL,则无时钟延展

数据表还规定,当在手动模式下配置自动排序时,转换时间为1.8µs。因此,工程师可以计算设备开始时钟延展的频率:

1.8μs≥1/2 TSCL

3.6μs≥TSCL

1/3.6μs≥1/TSCL

277.7kHz≤fSCL

fSCL≥277.7kHz

基于这些计算,ADS7142 ADC的时钟延展将出现在277.7kHz的时钟频率上或更高。因此,为了在I3C总线上成功通信,在与ADC通信时,必须将时钟频率配置到低于277.7kHz。

I3C总线上的时钟延展

为了验证上述计算,将ADS7142连接到用于读取转换数据的I3C控制器。模拟电源电压为3V,将ADC的输入连接到1.52V,所产生的转换代码约为0x81B。分别在高于和低于阈值的时钟频率上对ADC进行了测试,以便对功能进行检查,并对计算结果进行验证。

图2所示为ADC在I3C总线上发送的消息,其中包含两个12位转换,时钟频率高于时钟延展阈值(500kHz)。在该速率上,设备将尝试在传输转换数据之前进行时钟延展。如图所示,转换的第一个字节发送是正确的,而转换的第二部分就不正确了,且控制器不发送传输确认(NAK)。

易百纳社区

图2:选用500kHz时钟时I3C总线上的ADC测量快照

为了进一步研究,对传输过程中的模拟电压电平进行了观察。图3更详细地显示了当ADC试图在I3C总线上进行时钟延展时发生的情况。底部的两个波形是SDA和SCL的模拟测量值。时钟脉冲1是来自先前消息的ACK。时钟脉冲2是转换数据传输的第一个时钟脉冲。

易百纳社区

图3:I2C目标设备试图在I3C总线上进行时钟延展时发生的情况

请注意,这个时钟脉冲的模拟测量值大约是其他时钟脉冲振幅的一半。这就表明,ADC试图将时钟拉低,而与此同时,I3C控制器则将时钟驱动为高电平。控制器能够克服目标影响并继续驱动时钟,然后是NAKed消息,以指示目标违反了I3C协议。

接下来,又在低于时钟延展阈值的频率上,对该设备进行了测试。图4显示了时钟速率为250kHz时的I2C消息。在这个时钟速率上,设备将不会出现时钟延展。这两个转换都产生了预期的代码,并且每个消息都得到了确认。该测试表明,当ADC在无需时钟延展的时钟频率上运行时,其在I3C总线上可以正常工作。

易百纳社区

图4:时钟为250kHz时I3C总线上的ADC测量快照

正确理解I3C向后兼容性

尽管I3C越来越流行,不过I2C仍是事实上的标准,只是两种协议混用的情况将变得更加常见。在这种情况下,允许工程师继续使用熟悉的I2C协议,同时也允许使用较新的I3C,以这样一种方式设计系统是有益的。

这就是充分理解I3C向后兼容性的局限性变得尤为重要的地方。虽然I3C不允许时钟延展,但I2C设备可以在I3C总线上通信,只要被配置到不发生时钟延展的速率即可。在I3C总线上使用I2C设备可能非常有益,因为这样做可以保持I2C协议的简单性,同时有助于实现更多经得起未来考验的设计。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
tomato
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
tomato
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区