在线时间1366 小时
UID3338155
注册时间2017-7-26
NXP金币1683
TA的每日心情 | 奋斗 3 小时前 |
---|
签到天数: 596 天 [LV.9]以坛为家II
金牌会员
- 积分
- 7086
- 最后登录
- 2024-4-29
|
本帖最后由 andeyqi 于 2023-12-3 21:13 编辑
简介:
LPC860-max 开发板集成了I3C IP模块,开发板的原理图的U5上是有个I3C的六轴传感器(icm42688p),不过这颗料没有贴,论坛上已经有大佬贴了这颗料抛弃了测试程序,出于从0开始学习I3C接口的初衷,也购置了一颗贴上去如下图1,贴上料后运行 sdk 内\boards\lpcxpresso860max\driver_examples\i3c\master_read_sensor_icm42688p 测试程序后会在串口上打印出传感器数据如图2.
图1 图2
1 12C/13C 硬件资源占用比较
图 1.1 是I2C 的硬件涉及拓扑图,I2C 虽然只有SCL,SDA 线,但是还是需要额外的线连接到控制芯片上,如enable/reset/int 等控制信号线,而I3C 会把enable/rst/int 等信号放到内置的命令字里面,这样I3C的信号线只有SCL/SDA两根线,这样会节省硬件资源从而节约PCB资源,图1.2 为I3C系统的硬件连线状况。
图1.1
图1.2
2. I2C/I3C/SPI硬件资源速率比较图2.1 为MIPI_Alliance_I3C_Whitepaper.pdf 文档中对三种协议的说明比较的表格。
图 2.1
PIN 脚数量比较
- SPI 协议本身就有四根线一进一出/时钟/片选信号线,中断信号也是需要额外的信号线来提供,并且spi是不支持多个master
- I2C 协议是SDA/SCL两根线,中断信号等也是需要额外的信号线来提供
- I3C 只需要SDA/SCL两根线,中断是集成在内置的命令字里面
通信速率比较- SPI 最高速率可以达到60 Mbps
- I2C 3.4 Mbps
- I3C 30 Mbps ,现阶段的SDR mode 可以达到12.5 Mbps
I3C 相对I2C 速率上的提升主要是因为I2C 是open-drian 的总线结构I3C 是push-pull 的结构,以下图片是两种结构的对比结果400k 的场景open-drian 结构是能正常通信,但是波形相对push-pull不是很规整,在12.5M的场景下波形已经无法通信了。
3.I2C 和 I3C 协议方面比较根据以下截图来对比I2C和I3C 协议,以下截图来自NXP 官方的I3C协议视频
- #wires:I2C scl/sda 线都是open-drian 接口的,sda scl 线是双向的,scl 大部分是单向的master-slave,slave 在时钟延展的时候也是可以控制scl线。I3C的scl 线是push-pull接口方向是单向的,sda 线是既可以工作在push-pull 也可以工作在opendrian ,sda 线是双向的。
- power:I2C SCL/SDA 线是open-drian结构外接上拉电阻,I3C SCL 是一直是push-pull 模式,sda 大部分时间是push-pull 偶尔 open-drian 所以功耗方面I3C 相对I2C 要小。
- slave read termination: I2C 传输结束需要master 结束,I3C slave 可以结束传输
- IBI:I2C 是没有内置中断的I3C 则是支持IBI中断
- Hot-Plug:I2C 不支持热插拔,I3C 是支持热插拔
- error-detection: I2C 对故障的处理相对是很弱的,如果总线被拉死只能通过连续发送九个周期的scl信号恢复总线,I3C 则是有许多故障检出机制
- build-in command:I2C 是没有内置命令字的,I3C是支持内置命令字,可以通过内置命令字来分配地址检查总线状态等
以下是I2C 和 I3C 在1V8 和3V3 工作电压下的功耗和速率的对比图。
以上资料资源来自以下视频:
======资料分割线======
|
|