I2C,又称为IIC,全称为Inter Integrated Circuit。
首先,很可能有些朋友会问:I2C是否支持高达3.4 M/s的速度?
答案是肯定的,并且它还支持更高达5M/s的速度(单向传输)。
今天我们来探讨一下I2C的高速模式(3.4Mbit/s)。
I2C速度
最初,I2C的速度为100 kbit/s,但随着市场需求的变化,人们对速度的要求越来越高,随之出现了几种更高速度:400 kbit/s、1 Mbit/s、3.4Mbit/s以及5 Mbit/s。
双向通信速度(模式):
-
100 kbit/s:标准模式,Standard-mode (Sm) -
400 kbit/s:快速模式,Fast-mode (Fm) -
1 Mbit/s:快速模式+,Fast-mode Plus (Fm+) -
3.4Mbit/s:高速模式,High-speed mode (Hs-mode)
单向通信速度(模式):
-
100 kbit/s:超快模式,Ultra Fast-mode (UFm)
可以参看I2C协议手册:
![image-20240301220832850](https://lxlinux.superbed.verylink.top/item/65e1e19c9f345e8d03c82659.png)
I2C高速模式
通常,I2C用的最多也就是100 kbit/s(标准模式)和 400 kbit/s(快速模块)这两种通信速度。
因为常规I2C设备的通信速度不高,再次就是标准(快速)模式电路更简单(更省钱),所以标准(快速)模式最为广泛,以至于很多开发者认为I2C的通信速度很低。
I2C总线的成功,以及大面积的使用,使其很多子设备都遵循I2C协议。但是,市场需求总是千变万化,有些设备要求总线挂更多设备、通信速度更快。
所以,3.4Mbit/s 的高速模式就这样在原有的基础上“升级”而来,而且,要向下兼容早期的标准模式。
高速模式协议
I2C要达到3.4 Mbit/s,和标准模式的协议肯定有一些差异,下面描述一下高速模式常见的一些通信协议内容。
1.驱动电路
标准、高速混合模式下,驱动电路会有一些差别:
![image-20240301220836657](https://lxlinux.superbed.verylink.top/item/65e1e19c9f345e8d03c826de.png)
为了提高时钟速度,在(3)的位置增加了电流源上拉,这样才使SCLH时钟信号更快更稳。
2.传输格式
高速模式是向下兼容标准模式,所以,传输格式兼容标准格式的同时,还做了一定改进。
![image-20240301220839456](https://lxlinux.superbed.verylink.top/item/65e1e19b9f345e8d03c82381.png)
起始条件一样,后面传输的时候,启动高速(电流源)会增加传输数据速率。
然后,传输格式也做了一定改进:
![image-20240301220843187](https://lxlinux.superbed.verylink.top/item/65e1e19c9f345e8d03c82587.png)
3.模式切换
快速模式向下兼容标准模式,而高速模式又要向下兼容标准模式,因此,I2C总线在起始状态不能处于高速模式,需要由快速模式切换到高速模式。
切换到高速模式,又可以切回快速模式,这样就能保证I2C总线上可以挂各种设备(混合各种模式设备)。
这里附一个混合总线的通信速度:
![](https://lxlinux.superbed.verylink.top/item/65e1e19c9f345e8d03c8258a.png)
4.其他
高速模式虽然解决了传输速度的问题,但同时也带来了诸多问题,控制器的升级、传输线要求更高等,使其推广还是受到了一定阻碍,导致没有大面积使用。
最后,关于I2C高速模式,不是很建议大家深入研究,做一个了解即可,只要别人问你时,你不要回答I2C不支持Mbit/s传输就行了。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !