01
I3C协议学习笔记
最近开始使用I3C,以及I3C VIP了,IP不大,功能不少,目前还在探索阶段。之前断断续续看过I2C, 很久没用也忘记了,也没有系统学习过。开这个帖子和大家一起探讨,如果不正确的地方,欢迎批评指正。
I3C(Improved Inter-Integrated Circuit)协议是一种新型的传感器总线协议,旨在解决I2C和SPI协议在低功耗、高性能和高集成度方面的局限性。I3C协议在保持与I2C协议兼容的同时,引入了许多新的特性,如动态地址分配(DAA)、高速数据传输(HDR)和高级电源管理等。
在此之前,由于没有统一的物理传感器接口方法,设备和平台设计者面临着包括I2C、SPI和UART等数字接口碎片化问题,多种协议没法统一 ,多种信号,如专用中断,芯片选择信号,使能和睡眠信号等增加了GPIOs数量,而更多的引脚和更多的PCB层又反过来推高了系统成本。
随着时间的推移和传感器数量的增加,这种情况变得越来越难以支持和管理。MIPI I3C接口通过为传感器提供快速、低成本、低功耗的两线数字接口,简化了移动无线产品中的传感器系统设计架构。
主要功能点:
I3C接口的两个最重要关注点是: 在传输数据和控制时使用尽可能降低能耗,同时减少接口使用的物理引脚数量。
- 两线(SCL, SDA)串行传输,接口速率高达12.5M;
- 在总线上,I3C设备和I2C设备共存;
- 支持动态分配地址,但对于I2C设备只支持静态地址;
- 支持I2C发送数据;
- 单数据速率(SDR)发送消息;在basic协议中不支持HDR,HDR是指在CLK的双沿传输数据。
- Multi-Drop能力(多设备连接能力):I3C允许在同一总线上连接多个设备,这些设备共享总线资源,通过总线进行通信。这种多设备连接能力使得I3C能够支持更复杂的系统设计,同时简化布线和降低系统成本。在I3C总线上,设备可以是主设备(Master)或从设备(Slave),它们之间可以进行双向通信。
- Multi-Master能力(多主控制器能力):I3C支持多个主设备(Master)共存于同一总线上,即存在main master和secondary master。但在同一时间只允许一个master控制总线;这些主设备可以独立控制总线上的从设备(Slave)。多主控制器能力使得I3C具有更高的可扩展性和灵活性,可以应对更复杂的系统需求。在多主控制器环境下,主设备之间需要通过仲裁(Arbitration)机制来协调对总线的访问,避免冲突和资源竞争。
- 支持In-Band Interrupt: 带内中断,是指在I3C总线上,设备之间通过同一通信信道(即数据总线)来传输中断信号,在I3C中,带内中断允许从设备(Slave)在需要时主动通知主设备(Master)发生了某种事件或状态变化,例如数据更新、设备错误等。这种机制可以提高系统的实时性和响应速度,同时简化硬件设计,减少引脚和布线的需求,与传统的Out-of-Band中断(带外中断)不同,后者需要额外的硬件引脚和信号线来传输中断信号。
- 新增两种message类型:Broadcast message, 广播通信,使用专用的I3C 广播地址,7'h7E, 将发送给总线上所有的i3c从机,I2C设备会直接忽略,不响应;Direct message, 发送给指定的从机;
- Hot-Join 机制:I3C协议支持Hot-Join机制,即在I3C总线完成配置之后加入到总线当中。
- 支持通用命令码(Common Command Codes, CCCs):可以直接传输到特定的I3C从设备,也可以同时传输到所有的I3C从设备。CCC命令的传输是通过SDR(Single Data Rate)方式进行的,并以I3C广播地址(7'h7E)作为起始地址。
- 错误检测以及恢复方式:I3C协议中针对主机和从机规定了多种ERROR,以及恢复的方式。
好了,今天的分享就到这里了,个人愚见,如有错误也欢迎批评指正。持续更新,欢迎关注。觉得有帮助的朋友,希望能够点个赞鼓励一下!!你的每个鼓励都是我持续创作的动力!