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高电平的话就反之同理,主要还是解决了两颗上拉电阻的问题了。
特性 | I2C | I3C |
---|---|---|
标准功耗 | 较高,特别是在高速模式或长距离传输时 | 较低,支持动态速率和低功耗模式 |
低功耗模式 | 无内建低功耗机制,需要外部设计 | 内建低功耗模式,支持自动切换 |
动态速率切换 | 不支持动态速率切换 | 支持动态速率切换,能根据负载调整速率 |
设备管理 | 无专门的设备管理机制 | 支持设备热插拔和智能管理,能够降低功耗 |
适用于电池供电设备 | 功耗较高,特别是在长时间通信时 | 更适合电池供电设备,能高效管理功耗 |
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. 地址更新与回收:
- 设备在不再使用某个动态地址时,或者在设备断开连接后,主设备可以回收这些地址并将其放回到地址池中,以供其他设备使用。
- 主设备也可以在运行过程中更新设备的动态地址,允许灵活的设备管理。