大家好,欢迎来到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的区别
注: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通讯的全过程
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常见的问题和解决方法
1. 通讯失败:可能是由于总线电平不正确、时钟信号异常或设备地址错误等引起的。解决方法包括检查总线连接、确保时钟信号稳定、确认设备地址的正确性。
2. 数据传输错误:这可能是由于数据线上的噪声、干扰或数据传输过程中的错误导致的。可以尝试使用屏蔽线、滤波电容等方法减少干扰,并确保数据传输的准确性和完整性。
3. 总线冲突:当多个设备同时尝试访问总线时,可能会发生总线冲突。解决方法是优化设备的时序,避免同时发送数据,或者使用仲裁机制来协调设备之间的通讯。
4. 设备不响应:如果设备没有响应 I2C 通讯,可能是设备故障、地址设置错误或总线电平问题。可以检查设备是否正常工作,确认地址设置是否与实际设备匹配,并检查总线的连接情况。
5. 时序问题:不正确的时序可能导致 I2C 通讯失败。确保遵循 I2C 协议的时序要求,特别是起始信号、停止信号和数据传输的时间间隔。
6. 信号完整性问题:信号衰减、反射或干扰可能影响 I2C 通讯的质量。使用合适的电缆和连接器,保持信号的完整性,并避免过长的走线和靠近干扰源。
7. 软件问题:错误的软件代码或配置可能导致 I2C 通讯问题。仔细检查和调试软件,确保正确设置 I2C 寄存器、数据传输格式等。
如果遇到具体的 I2C 通讯问题,还可以借助示波器、逻辑分析仪等工具进行信号监测和分析,以帮助定位和解决问题
感谢阅读!
————————————————
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/92399.html