前面的文章介绍过MIPI联盟发布的MIPI CSI/DSI/D-PHY等接口,这一篇文章来简单聊一聊I3C(同样由MIPI联盟制定,主要用于替代传统的USRT、I2C和SPI,并向下兼容I2C)。由于已经有网友写过相关的文章,并且写的很不错,所以就直接转载过来了。
原文地址:https://www.cnblogs.com/gcws/p/8995542.html
目前随着手机等移动设备包含的Sensor越来越多,传统应用在Sensor上的I2C/SPI接口的局限性也越来越明显,典型的缺陷如下:
1、Sensor等设备的增加,对控制总线的速度和功耗提出了更加严苛的要求;
2、虽然I2C是一种2线接口,但是往往此类Device需要额外增加一条中断INT信号线;
处于解决上述问题的原因,推出了I3C的接口总线和协议,下面一起来看下I3C总线的特性。
一、I3C的应用场景
从上图中我们可以看到:
1、I3C总线可以应用在各种Sensor中;
2、可以使用在任何传统的I2C/SPI/UART等接口的设备中。
二、什么是I3C
I3C吸纳了I2C和SPI的关键特性,并将其统一起来,同时在I2C的基础上,保留了2线的串行接口结构,这样工程师就可以在单个设备中连接大量的传感器。
从上图中我们可以将特性具体一下:
1、I3C总线可以支持Multi-Master即多主设备
2、I3C总线与传统的I2C设备仍然是兼容的
3、可以支持软中断
4、相比较于I2C总线的功耗更低
5、速度更快,可以支持到12.5MHZ
从下图中可以看到在传统的I2C接口设备中包含了太多的I/0口了(碎片式的接口),将之(I2C/SPI)替换成I3C之后可以节省很大部分的信号线(省去了中断信号的一根线EINT,若取代SPI,可以省的更多)的开销,在布局布线时也更方便.
按照目前MIPI联盟的规划,I3C总线在将来除了应用Sensor之外,还有如下的应用领域:Camera CCI接口、触摸设备和测试设备等。
三、I3C接口协议
从上图就可以很清楚的看到I3C总线的应用了,I3C总线中支持多主设备,同时兼容I2C。
其中支持设备的具体类型有:
1、I3C主设备
-----SDR-only master
2、I3C secondary MASTER
-----SDR-only secondary master(注意是Slave of Main Master,即相比较主设备而言仍然时从设备)
3、I3C 从设备
-----SDR only slave
4、I2C slave
上图为I3C的串行clk和data传输的波形,注意下方的标注:SDA的接口为开漏结构(上拉),而SCL的接口为推挽结构!
四、I3C特性详细介绍
1、SDR动态地址分配
---I3C可以为所有的I3C从设备动态的分配7-bit Address(注:在I3C从设备中会有两个Standardized Characteristics Register和内部的48-bit的临时ID去协助此过程,具体咋协助俺还不知道)
---仍然支持I2C的静态地址
2、SDR的带内中断
---在“Bus Available(总线空闲)”的状态下,从设备可以发出“START"请求信号;
---当主设备接收到请求信号后,主设备发出时钟信号并将分配的地址驱动到总线上,然后从设备响应地址(为防止理解问题,英文描述如下)
---如果此时有多个从设备响应中断,那么分配的地址中最低的一个设备将会赢得仲裁
---数据载荷(即强制数据位)可以和带内中断一起使用(???未明白,后面填坑)
3、Error Detection and Recovery Methodology(错误检测和恢复方法)
---主要针对master 和slave产生的错误(9种错误类型:奇偶性、循环冗余校验CRC5)
4、Common Command Codes(公共命令码)
5、对I2C总线的支持
---支持I2C的Fast Mode/Fast Mode+(Note:Fast Speed 1Mbit/s,High Speed 3.4Mbit/s)
---对于The Velocity of I3C clk 12.5MHZ需要50ns的Spike Filters(tsp)尖峰滤波器
---I3C不支持Clock Stretching(时钟拉伸,不了解的童鞋可以查查I2C的协议)
---不使用Open-Drain驱动器
---不支持10-bit的I2C扩展地址
6、I3C的HDR-DDR 模式
7、I3C的拓扑
附件(MIPI I3C Spec V1.0):mipi_I3C-Basic_specification_v1-0.pdf