0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用 I3C 实现更快、更简单、更灵活的集成电路间通信

海阔天空的专栏 来源:Art Pini 作者:Art Pini 2025-01-25 14:59 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:Art Pini

投稿人:DigiKey 北美编辑

用于集成电路 (IC) 间通信的板载串行接口由内部集成电路 (I²C) 和串行外设接口 (SPI) 主导,两者自 20 世纪 80 年代起就已问世。这些接口广泛用于将低速传感器和 IC 连接到微控制器单元 (MCU),以实现板内短距离通信。然而,随着数字系统的速度越来越快,这些接口已成为限制因素,I²C 的典型数据速率仅为 1 Mbit/s,而 SPI 也不过 10 Mbit/s。其他限制因素,包括专用中断或芯片使能线路,需要额外的信号连接,这就增加了线数以及总线连接的复杂性。

改进型内部集成电路 (I3C) 总线旨在对 IC 间通信进行升级。该总线具有更高的数据速率、更大的灵活性,以及真正的双线接口,支持带内中断 (IBI) 而非外部中断。

本文讨论了 I3C 接口的特征,以及为什么说它是 I²C 和 SPI 串行接口的理想升级品。我们将使用典型的 MCU、IC 开关和传感器设备来展示其应用。

嵌入式通信总线

多年来,I²C 和 SPI 等嵌入式串行互连器件一直被用于板内通信。这些器件主要用作传感器和用户界面设备及其控制处理器之间的通信总线。典型系统中的传感器数量不断增加,在手机中已达到 10 到 20 个,在汽车中则更多。与此同时,随着对更高速度、更低功耗和更少导线的需求不断上升,对设计人员而言,通信要求也变得更具挑战性。设计人员必须满足这些要求,同时通过中断和使能线保持处理器控制(图 1)。

嵌入式通信应支持更高速度的示意图(点击放大)图 1:嵌入式通信应支持更高速度、更低功耗和最少线数。(图片来源:[NXP Semiconductors])

现行技术使用两线制 I²C 或四线制 SPI 接口实现传感器和用户控制设备接口。中断、使能和其他控制线路与时钟和数据线路分开,因此每个接口有更多线路。

设计人员需要一种更具前瞻性的接口方法,这种方法可以消除互连器件中的这些额外导线,仅使用时钟和数据线路在带内处理这些操作。此外,总线应具有更高的运行速度,以及更低的功率损耗。

I3C 接口

为了满足这些要求,移动行业处理器接口 (MIPI) 联盟开发了 I3C。该接口面向 MIPI 会员提供 MIPI I3C,面向非会员提供功能简化版 MIPI I3C Basic。与传统的 I²C 和 SPI 接口一样,这种改进型也是串行接口,采用两线制,尽可能减少了引脚数以及元器件之间的信号路径数量。其数据速率高达 12.5 Mbits/s,采用单倍数据速率 (SDR) 模式,时钟频率为 12.5 MHz。该接口运行功率水平较低,采用简单而灵活的设计架构。

值得注意的是,I3C 标准保留了与 I²C 系统有限的向后兼容性,可让现有 I²C 设备连接到 I3C 总线,同时仍允许总线在符合 I3C 标准的设备之间进行通信时切换到更高的数据速率。系统配置的比较见图 2。

比较 I3C、I²C 和 SPI 接口基本配置的示意图(点击放大)图 2:通过对 I3C、I²C 和 SPI 接口的基本配置进行比较,可以看出 I3C 的速度更快,布线更简单。(图片来源:NXP Semiconductors)

四线制 SPI 接口运行速度更快,并支持全双工通信。I²C 通过由时钟 (SCL) 和数据 (SDA) 线路组成的双线制总线进行半双工通信。两者都需要额外的线路来支持中断和其他控制功能(如片选)。I3C 将接口中使用的线数减少至两条,消除了 I²C 和 SPI 中单独使用的中断、使能和片选线路。对于需要 10 到 20 个传感器与处理器相连且每个传感器都有数条辅助线的系统来说,减少线数是一大优势。中断和其他控制线路被 IBI 取代。在这种方法中,目标传感器或设备会将其地址输入 I3C 总线地址标头,以通知处理器发生中断。

I²C 和 I3C 的时钟速率相差甚大。I²C 的时钟速率一般为 100 kHz、400 kHz 或 1 MHz,而 I3C 的时钟速率可达 12.5 MHz。以前,SPI 用于时钟速率高于 1 MHz 的应用。设计时需要在时钟速率与线数之间进行选择。I3C 采用真正的双线制拓扑结构,具有更高的时钟和数据速率,从而改变了这一现状。

推挽输出的开关速度比开漏或集电极驱动器更快,是 I3C 提高时钟速率的重要因素。为了保持与 I²C 设备的兼容性,I3C 可根据总线状态在开漏和推挽驱动器之间切换。开漏或集电极设计在初始寻址或仲裁期间使用,此时线路上可同时存在 I²C 和 I3C 设备。在进行单向通信时,I3C 采用推挽方式,不会出现 I²C 设备同时通信的情况。

除标准 SDR 外,I3C 还支持多种可选的高数据速率 (HDR) 模式。这些 HDR 模式以相同的时钟速率运行,但传输的数据密度更高。第一种 HDR 模式是 HDR 双倍数据速率 (HDR-DDR),数据在时钟信号的两个边沿进行传输,速率是原来的近两倍。对于 12.5 MHz 时钟,DDR 模式可实现 20 Mbits/s 的有效数据速率。

HDR 三元符号有两个版本:HDR 纯总线三元符号 (HDR-TSP) 仅适用于 I3C 设备,而 HDR 传统三元符号 (HDR-TSL) 则适用于包括 I²C 和 I3C 器件在内的总线。三元符号模式通过在 SCL 和 SDA 线路上编码三位(三元)符号来实现每个时钟三个数据位。

HDR 批量传输 (HDR-BT) 模式支持通过四路、双路或单路 SDA 数据线路进行通信,从而提供最高数据速率。因此,在相同的时钟速率下,这是原始单倍数据速率性能的 8 倍、4 倍或 2 倍。

数据传输速度的提高使设备的启动时间更短,从而降低了总线功率占空比。这与 I²C 相比降低了功耗(图 3)。从带有外部上拉电阻器的开集驱动器转变为推挽驱动器进一步降低了功耗,因为上拉电阻器需要很大的功率才能运行。

I3C 在数据速率和功耗方面均有改进的示意图(点击放大)图 3:与 I²C 相比,I3C 在数据速率和功耗方面均有改进。(图片来源:NXP Semiconductors)

寻址

I²C 对每个总线设备使用 7 位或 10 位长度的静态地址。这在 I3C 中已更改为 7 位动态寻址,即总线主设备在动态地址分配 (DAA) 时设置设备地址,并将其存储在设备寄存器中。在 I3C 中仍可像在 I²C 外设中一样使用静态寻址。

由于采用动态寻址,设备地址可在以后更改。这支持热连接,允许在总线运行时添加新设备。连接到 I3C 总线的新设备通过发送热连接请求向 I3C 主设备发出其存在的信号。主控制器确认请求并分配一个地址,以将设备添加到总线上。

IBI

I3C 是真正的双线制总线,使用 IBI 而不是 I²C 那样的专用中断线路。IBI 是指目标设备通过拉低 SDA 线路向主设备发出可用性信号的情况。然后,主设备会启动 SCL 线路上的时钟,目标设备将其地址传输到 I3C 总线上,以通知控制器发生中断。

常用命令代码

常用命令代码 (CCC) 是标准化命令,控制器可将其作为一般广播同时发送给所有 I3C 设备或特定目标设备。这些命令用于与总线管理有关的项目。CCC 协议的格式以 I3C 广播地址开始,总线上的所有 I3C 设备都能识别该地址。总线上的任何 I²C 设备都不会确认该请求,因为这是一个保留的 I²C 地址。

每条命令都包括一个 8 位描述符 ID 字段,后面还可能有一个命令有效载荷。向特定设备发送的命令会在有效载荷的第一个字节中传递设备地址。有四十多个 CCC 命令,包括:

  • 输入动态地址分配 (ENTDAA)
  • 设置新动态地址分配 (SETNEWDA)
  • 启用事件 (ENEC)/禁用事件 (DISEC)
  • 复位动态地址分配 (RSTDAA)
  • 输入高数据速率模式 (ENTHDRx)
  • 获取设备特征寄存器 (GETDCR)

供应商可以使用一系列专用的 CCC ID 来执行自己的命令。

错误检测和恢复

与 I²C 不同,I3C 包含错误检测和恢复功能。对于目标设备,有六种强制性错误和恢复方法,还有一种可选方法。此外,还有专门针对主设备端错误的其他错误和恢复方法。

支持 I3C 的元器件

如图 2(左)所示,基本的 I3C 网络至少包括一个主控制器和一个或多个 I3C 目标设备或从设备 主设备可以是 MCU,例如 NXP Semiconductors 的 [LPC5534JHI48-00MP](图 4)。该器件是一款 32 位 Arm® Cortex®-M33 MCU,具有 128 KB SRAM 和 256 KB 闪存。其 Flexcomm 接口支持八个不同的串行接口,包括 I3C。

NXP Semiconductor 的 LPC5534JHI48/00MP MCU 包括 I3C 接口的示意图(点击放大)图 4:LPC5534JHI48/00MP MCU 包括一个 I3C 接口和其他七个串行接口。(图片来源:NXP Semiconductor)

I3C 总线允许添加作为从设备引入总线的辅助主设备。I3C 可以有多个主设备,但只能有一个是控制器。一旦注册,辅助主设备即可请求获取当前主设备状态,如果当前主设备同意,其控制权将移交给提出请求的辅助主设备。

NXP 的 [P3T2030CUKAZ]就是一种典型的 I3C 传感器。该温度传感器可将 -40°C 至 +125°C 的温度转换为 12 位数值,精度为 ±2°C。该器件包括一个 I²C 和一个 I3C SDR 模式串行接口。

[TDK InvenSense]的 [ICM-42605]三轴微机电系统 (MEMS) 陀螺仪加速计是更为复杂的传感器。作为速率陀螺仪,该器件可测量 ±15.2 至 ±2000 °/s 的旋转速率。而作为加速计,其量程为 ±2 至 ±15 g 。该器件可检测运动、倾斜、轻击或步数(计步器)。作为 I3C 传感器,其在 SDR 模式下的工作频率为 12.5 MHz,在 DDR 模式下为 25 MHz。

诸如 NXP [P3S0200GMX]I3C 开关之类的 IC 可在 I3C 控制器和多组目标设备之间,或在由外部 MCU 确定的单个目标设备和多个 I3C 控制器之间路由 I3C 总线信号,从而重新配置 I3C 总线(图 5)。

NXP Semiconductors 的 P3S0200GMX I3C 开关可用于重新配置 I3C 总线的示意图(点击放大)图 5:P3S0200GMX I3C 开关可用于在 I3C 控制器和多组目标设备之间,或在单个目标设备和多个 I3C 控制器之间路由 I3C 总线信号,从而重新配置 I3C 总线。(图片来源:NXP Semiconductors)

如果两个目标具有相同的地址,且不能位于同一总线上,则可能需要在两个目标之间进行切换。另外,两个进程可能须共享一个目标,这需要在两个 I3C 控制器之间进行切换。

结语

I3C 是一种串行接口,通过提高数据速率、减少线数和增加总线控制的灵活性来扩展 I²C 总线。这种增强版总线可扩展传统 I²C 和 SPI 接口的实用性。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2573

    文章

    54382

    浏览量

    786102
  • 控制器
    +关注

    关注

    114

    文章

    17646

    浏览量

    190261
  • 串行接口
    +关注

    关注

    3

    文章

    514

    浏览量

    44998
  • 机电系统
    +关注

    关注

    0

    文章

    50

    浏览量

    14440
  • i3c
    i3c
    +关注

    关注

    1

    文章

    32

    浏览量

    5373
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何利用I3C提升嵌入式系统性能

    单片机(MCU)作为嵌入 的主要组成部分,用于控制传感器信号采集和闭环控制等应用功能。我们将深入探讨可以利用带 式系统 I3C 通信 接口的 MCU 的几类应用,为 I2C 和 SPI
    发表于 07-17 06:02 1912次阅读
    如何<b class='flag-5'>利用</b><b class='flag-5'>I3C</b>提升嵌入式系统性能

    I2C升级革新到I3CI3C能否取代传统接口?

    速率低、功耗大的短板日趋明显,这时就需要新的升级版的总线协议来接棒。 I3C,全称Improved Inter Integrated Circuit,作为I2C的升级版接过了这个I2C手中的接力棒。
    的头像 发表于 12-07 07:25 1.4w次阅读

    STM32H563的I3C无法正常通信是为什么?

    STM32H563的I3C通讯问题,两块H563的开发板i3c通讯,两块板子烧的例程, I3C的线对接后。 无法正常通信,卡在while (HAL_
    发表于 07-03 07:29

    I3C控制器角色转移如何实现

    I3C 控制器角色转移如何实现
    发表于 03-14 10:08

    Gowin I3C SDR IP的参考设计

    本文档所介绍的参考设计主要包括以下三种类型: I3C SDR 主机和 I3C SDR 从机之间的通信I3C SDR 主机和 GW-I2C
    发表于 10-08 06:33

    基于MIPI I3C规范从I2C无缝连接I3C的关键优点

    (SPI)以及通用异步收发器(UART),但I2C的使用更为常见,原因在于其实施简单,引线数低。 MIPI I3C规范结合了I2C和串行外围接口(SPI)的多种特性,提供了统一的标准和
    发表于 11-16 19:11 2.2w次阅读
    基于MIPI <b class='flag-5'>I3C</b>规范从<b class='flag-5'>I2C</b>无缝连接<b class='flag-5'>I3C</b>的关键优点

    Gowin I3C SDR IP参考设计

    电子发烧友网站提供《Gowin I3C SDR IP参考设计.pdf》资料免费下载
    发表于 09-15 14:22 4次下载
    Gowin <b class='flag-5'>I3C</b> SDR IP参考设计

    I3C协议规范的详细内容

    本文讲解 I3C 协议规范的详细内容,从规范中可以看出,I3CI2C 复杂很多,硬件简单带来的是软件的复杂。 对于 Linux 常用版本,kernel-4.14 和 kernel
    的头像 发表于 07-22 16:13 5066次阅读
    <b class='flag-5'>I3C</b>协议规范的详细内容

    I3C Introduction是什么意思

    I3C Introduction I3C :Improved Inter Integrated Circuit ,是 MIPI(Mobile Industry Processor Interface
    的头像 发表于 07-22 16:16 1596次阅读
    <b class='flag-5'>I3C</b> Introduction是什么意思

    I2CI3C的区别有哪些

    I2CI3C 主要区别如下: I2C 虽然也是两条线,但是很多时候传感器需要一条额外的中断线,来告诉主控数据已经准备好。I3C 允许从设备直接在总线上产生中断,不再需要一条额外的
    的头像 发表于 07-22 16:20 9301次阅读
    <b class='flag-5'>I2C</b>和<b class='flag-5'>I3C</b>的区别有哪些

    I2CI3C关于功耗和传输速率的对比

    I2CI3C 关于功耗和传输速率的对比: I3C 使用推挽功能的双线串行接口,速度可达 12.5 MHz I3C 同一总线上共存的传统 I2C
    的头像 发表于 07-22 16:24 3032次阅读
    <b class='flag-5'>I2C</b>和<b class='flag-5'>I3C</b>关于功耗和传输速率的对比

    什么是I2C接口?什么是I3C接口?I2CI3C的区别

    I2C接口是一种串行通信协议,全称为Inter-Integrated Circuit,即集成电路总线。它是一种双向、两线制(SCL和SDA)的串行
    的头像 发表于 02-17 14:39 1.1w次阅读
    什么是<b class='flag-5'>I2C</b>接口?什么是<b class='flag-5'>I3C</b>接口?<b class='flag-5'>I2C</b>与<b class='flag-5'>I3C</b>的区别

    什么是I3C接口 I3C和SPI接口有什么区别

    I3C接口使用两根通信线,一根是数据线(SDL),另一根是时钟线(SCL)。与I2C总线一样,I3C接口也支持多主设备(Main Master)和从设备(Slave)之间的
    的头像 发表于 03-05 16:50 5089次阅读
    什么是<b class='flag-5'>I3C</b>接口 <b class='flag-5'>I3C</b>和SPI接口有什么区别

    I3C接口通信基础

    I 2 CI3C之间显着的变化是时钟速度。I 2 C 通常为 100 kHz、400 kHz 或 1 MHz,而
    发表于 05-03 10:22 6195次阅读
    <b class='flag-5'>I3C</b>接口<b class='flag-5'>通信</b>基础

    I3C–下一代串行通信接口

    电子发烧友网站提供《I3C–下一代串行通信接口.pdf》资料免费下载
    发表于 09-07 10:35 3次下载
    <b class='flag-5'>I3C</b>–下一代串行<b class='flag-5'>通信</b>接口