干货|一文轻松学会I2C和I3C通讯

干货|一文轻松学会I2C和I3C通讯一 I2C 和 I3C 的简介 I2C 诞生于 1981 年 由飞利浦 Philips 公司推出 它是一种简单 双向的 2 线 SCL SDA 同步串行接口 广泛用于一些短距离通信的设备

大家好,欢迎来到IT知识分享网。

一、I2C和I3C的简介

I2C诞生于1981年,由飞利浦(Philips)公司推出。它是一种简单、双向的2线(SCL、SDA)同步串行接口,广泛用于一些短距离通信的设备。

I3C诞生于2013年,是 MIPI (Mobile Industry Processor Interface)移动产业处理器接口联盟推出。I3C是一种新型的串行通信协议。它是在I2C接口的基础上发展而来的,简单理解为,I3C 就是改进型的 I2C。

什么要推出I3C?

我们知道,常用的板端通讯有UART、I2C 、SPI 、I2S等,但由于它们各有一定的缺陷,无法更好的满足当下一些物联网(IoT)产品的应用。

(1)UART、I2C 、SPI功耗功耗高,物联网对功耗应用有一定要求;

(2)I2C 、SPI 为同步通信,时钟必须由主机提供,从机没法主动向主机传数据;

(3)UART、I2C 、SPI只支持单一的主机;且UART也仅支持一个从机;

(4)占用IO口:一些传感器为了通知主机接受数据,都需要增加一条INT(中断)线来通知主机;

(5)而对于I2C,它的速率受限,达不到要求;

综上几点,所以推出了I3C接口。

二、I2C和I3C的区别

干货|一文轻松学会I2C和I3C通讯

注:I3C 向下兼容 I2C,但不兼容 10bit 的 I2C 扩展地址。

三、表格讲解

(1)热插拔:这里的热插拔指的是允许 I3C 的从机在主机完成初始化(正常开机)后,再接入I3C 总线,通过分配动态地址寻找到该I3C从机;同时,针对不需要一直工作的I3C从机,可以让其进入低功耗状态,需要的时候才被唤醒。

(2)动态寻址:I2C采用静态寻址的方式,但当我们I2C总线上接入多个I2C设备时,可能会出现相同地址。然后,I3C总线通过动态寻址的方式,恰好解决了这个问题。

(3)带内中断:其实I3C能实现带内中端,主要是依靠SDA线实现的,也就是说SDA用着中断线来用。首先,从机将SDA线拉低通知(或唤醒)主机,当主机接到通知后会将SCL线拉低来告知从机,同时将SCL(时钟)提供给从机,然后从机通过SDA发送自己的地址给到主机,这样就可以正常通讯了。

(4)内部结构:I2C的SCL和SDA都是开漏输出,需要外部加上拉电阻;而I3C的SCL使用了推挽输出,这样大大提高时钟频率

四、推挽输出和开漏输出结构

干货|一文轻松学会I2C和I3C通讯

五、I2C和I3C的通讯电路示意图

干货|一文轻松学会I2C和I3C通讯

六、I2C和I3C通讯的全过程

干货|一文轻松学会I2C和I3C通讯

1. 起始条件:通讯的开始由主机发送一个起始信号,该信号由 SCL(串行时钟线)保持高电平,而 SDA(串行数据线)由高电平变为低电平。

2. 地址传输:主机发送目标从设备的地址,地址由 7 位或 10 位(I3C不支持10位)组成。传输是通过 SDA 线进行的,高位在前,低位在后。

3. 读写控制:在地址传输之后,主机发送1位读写控制位,决定是进行读操作还是写操作。

4. 应答信号:找到符合地址的Slaver(从设备)响应ACK。

5. 数据传输:每次传输8位(即一个字节),如果是读操作,主机从从机读取数据;如果是写操作,主机向从机发送数据。数据在 SCL 的时钟脉冲下,通过 SDA 线一位一位地传输。

6. 应答信号:每成功传输一个字节数据后,从机会发送一个应答信号。应答信号是在 SCL 为高电平期间,SDA 线拉低表示应答。

7. 停止条件:当n多组数据通讯结束时,主机发送一个停止信号,该信号由 SCL 保持高电平,而 SDA 由低电平变为高电平。

七、注意事项

1. 电平匹配:确保 I2C 总线的电平与设备的电平兼容,一般使用 3.3V 或 5V 电平。如果电平不匹配,需要增加电平转换电路,而电平转换电路的使用,前面我们有讲解。

2. 总线速度:根据设备的要求和系统性能,选择适当的 I2C 总线速度。较高的速度可能会导致信号失真或兼容性问题。

3. 寻址:正确设置设备的地址,确保每个设备都有唯一的地址,以避免总线冲突。

4. 时序要求:严格遵守 I2C 协议的时序要求,包括起始信号、停止信号、数据传输的时钟周期等。

5. 上电顺序:在系统上电或重启时,注意设备的上电顺序,避免因电压波动导致设备损坏或通信异常。

6. 电缆和连接:使用低阻抗、屏蔽良好的电缆进行 I2C 总线连接,以减少干扰和信号衰减。

7. 错误处理:设计适当的错误检测和处理机制,以应对总线冲突、数据错误等情况。

8. 文档和参考:仔细阅读设备的文档和相关的 I2C 协议规范,了解设备的特性和限制。

干货|一文轻松学会I2C和I3C通讯

八、I2C和I3C常见的问题和解决方法

1. 通讯失败:可能是由于总线电平不正确、时钟信号异常或设备地址错误等引起的。解决方法包括检查总线连接、确保时钟信号稳定、确认设备地址的正确性。

2. 数据传输错误:这可能是由于数据线上的噪声、干扰或数据传输过程中的错误导致的。可以尝试使用屏蔽线、滤波电容等方法减少干扰,并确保数据传输的准确性和完整性。

3. 总线冲突:当多个设备同时尝试访问总线时,可能会发生总线冲突。解决方法是优化设备的时序,避免同时发送数据,或者使用仲裁机制来协调设备之间的通讯。

4. 设备不响应:如果设备没有响应 I2C 通讯,可能是设备故障、地址设置错误或总线电平问题。可以检查设备是否正常工作,确认地址设置是否与实际设备匹配,并检查总线的连接情况。

5. 时序问题:不正确的时序可能导致 I2C 通讯失败。确保遵循 I2C 协议的时序要求,特别是起始信号、停止信号和数据传输的时间间隔。

6. 信号完整性问题:信号衰减、反射或干扰可能影响 I2C 通讯的质量。使用合适的电缆和连接器,保持信号的完整性,并避免过长的走线和靠近干扰源。

7. 软件问题:错误的软件代码或配置可能导致 I2C 通讯问题。仔细检查和调试软件,确保正确设置 I2C 寄存器、数据传输格式等。

如果遇到具体的 I2C 通讯问题,还可以借助示波器、逻辑分析仪等工具进行信号监测和分析,以帮助定位和解决问题

感谢阅读!

————————————————

干货|一文轻松学会I2C和I3C通讯

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/92399.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信