i2C升级版i3C I3C通信协议详解 对比I2C 嵌入式必备通信协议

I3C(Improved Inter-Integrated Circuit)是一种由MIPI(Mobile Industry Processor Interface)联盟开发的高速串行总线协议,旨在替代传统的I2C和SPI总线,以提供更高的数据传输速率、更低的功耗和更强的设备扩展能力。

引入:

如下就是I2C的一个速率表格所示:

模式传输速率描述
标准模式100 kbps最初的I2C速率,适用于低速应用。
快速模式400 kbps较标准模式更高的传输速率,适用于大多数常见应用。
快速模式增强版1 Mbps适用于需要较高数据传输速率的应用。
高速模式3.4 Mbps支持I2C协议的最高标准速率,适用于高带宽需求的设备。
超高速模式5 Mbps(或更高)用于极高数据传输需求的特定应用,较少见。

 其实我们在运用IIC的时候大多都是维持在标准模式的速率下进行的,为了解决速率慢的问题呢,我们通常会想到SPI,但是SPI的速率快,但是所用的连线也非常的复杂每增加一个设备,就会额外的增加一根线,因为要片选。

因此,为了解决SPI的连线复杂,同时解决I2C的速率慢的问题呢,I3C的优势也就体现出来了,包括从速率、功耗、内中断、动态地址、热插拔、兼容I2C这几个方面体现。

1.速率的提升

模式传输速率描述
SDR(Single Data Rate)模式12.5 Mbps基本的I3C传输速率,适用于常规的低带宽应用。
HDR(High Data Rate)模式25 Mbps在HDR模式下,I3C可以提供比SDR模式更高的数据传输速率,适用于较高带宽的应用。
HDR+(High Data Rate Plus)模式33.3 Mbps提供更高的带宽,适用于要求较高数据传输速率的应用,如高清视频、传感器等。
HDR多通道模式100 Mbps(接近)通过同时使用多个数据通道,I3C可以实现更高的传输速率,接近100 Mbps,适合大容量数据的传输。

2.功耗的降低

I2C开漏输出,因为I2C的漏极连着芯片引脚,不管给他什么电平,都没有驱动能力,因此I2C通信的时候需要加上上拉电阻,源极接地,这样就能输出高电平了,而不是浮空。

I3C推挽输出,推挽输出需要两个mos管,当你set高电平时,就out低电平,要out高电平的话就反之同理,主要还是解决了两颗上拉电阻的问题了。

特性I2CI3C
标准功耗较高,特别是在高速模式或长距离传输时较低,支持动态速率和低功耗模式
低功耗模式无内建低功耗机制,需要外部设计内建低功耗模式,支持自动切换
动态速率切换不支持动态速率切换支持动态速率切换,能根据负载调整速率
设备管理无专门的设备管理机制支持设备热插拔和智能管理,能够降低功耗
适用于电池供电设备功耗较高,特别是在长时间通信时更适合电池供电设备,能高效管理功耗

3.内中断(重点)

I2C总线是没有中断控制的,比如设备在温度到达阈值时,并不能发送一个中断给主控,需要设备去轮询,如果设备多起来,消耗的资源就更多了,占用资源。

而I3C带内中断,

I3C协议支持在推挽模式(push-pull mode)和开漏模式(open-drain mode)之间的动态切换,这使得它在不同应用场景中具有更高的灵活性。具体来说:

推挽模式(Push-pull Mode)

在推挽模式下,设备能够主动驱动数据线的高电平低电平,不依赖于外部上拉电阻。这意味着推挽模式下,通信能够更高效,尤其在高速传输时,推挽模式能够提供更强的驱动能力和更快的响应速度。

I3C在高速模式下通常使用推挽模式,因为它能够提供更高的带宽和更快的数据传输。

开漏模式(Open-drain Mode)

在开漏模式下,设备只能拉低信号线(SDA或SCL),而不能主动拉高,拉高的电平由外部的上拉电阻提供。开漏模式的主要优点是可以支持多个设备共享同一条总线,通过“总线仲裁”避免数据冲突,因此广泛用于I2C总线中。

I3C协议也支持开漏模式,但与I2C不同,I3C允许在需要时在推挽模式和开漏模式之间进行切换。

推挽模式与开漏模式的动态切换

动态切换的应用场景:在I3C总线中,设备可以根据需求在两种模式之间切换。例如,在高速数据传输时,I3C通常会使用推挽模式以提高速度和数据吞吐量;而在某些特殊情况下(如广播、从设备应答、低功耗模式等),I3C可能切换回开漏模式,减少功耗或者避免总线上的冲突。

例如: 如果多个I3C设备需要进行广播通信,I3C可以自动切换到开漏模式,在这种模式下,多个设备可以共享总线而不会相互干扰。此时,每个设备在传输数据时只会拉低总线,而其他设备则通过检测总线电平来响应。

4.动态地址分配

I3C协议的动态地址分配允许从设备在总线上根据需要动态地分配地址,而不需要在设计阶段就固定硬件地址。这解决了I2C协议中的一个问题:I2C通常需要设备在硬件上预先配置地址,并且这些地址通常是固定的。

在I2C系统中,如果设备数量较多,管理这些地址就变得复杂,且可能存在冲突或浪费地址空间的问题。然而,I3C协议允许设备在运行时通过主控制器进行动态地址分配,从而提高了系统的灵活性和可扩展性。

I3C中的动态地址分配涉及以下几个步骤:

1. 唤醒设备:

  • 在I3C总线上,设备在启动时可以先以广播地址(通常是一个特定的地址,如0x7F)进行通信。当设备处于待机或休眠模式时,它们通过“唤醒”信号恢复到活动状态。

2. 主设备请求分配:

  • 当主设备需要与某个从设备通信时,它会先通过广播方式向总线上的所有设备发送一个寻址请求(Address Assignment Request)。这个请求通常包括要分配的地址范围或者一些设备标识信息。
  • 设备可以响应这个请求,并告知主设备自己准备好接收地址分配。

3. 地址分配与冲突检测:

  • 当主设备收到响应后,它会根据设备的需求或标识,为每个设备分配一个唯一的动态地址。这些地址通常从一个预设的地址池中分配。
  • 如果出现地址冲突(即两个设备请求相同的地址),主设备会进行冲突检测并重新分配地址,直到所有设备都有唯一地址。

4. 地址确认:

  • 一旦设备成功获得了地址,它们会向主设备发送一个确认信号,表示它们已成功接收并且激活了分配的地址。
  • 从设备使用新的动态地址进行后续的通信,而不再使用默认的广播地址。

5. 地址更新与回收:

  • 设备在不再使用某个动态地址时,或者在设备断开连接后,主设备可以回收这些地址并将其放回到地址池中,以供其他设备使用。
  • 主设备也可以在运行过程中更新设备的动态地址,允许灵活的设备管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

7yewh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值