MIPI I3C hot-join

5.1.5 热加入机制

I3C 协议支持一种热加入机制,允许目标设备在 I3C 总线已配置完成后加入其中。

注意:

热加入不允许目标设备在 I3C 总线配置完成之前加入。

热加入可用于以下场景:

  • 安装在同一电路板上、但在需要时才上电的 I3C 设备。 此类设备在下电(或状态转换)时不得违反第 6 节定义的目标设备电气限制,包括容性负载。

  • 安装在模块/电路板上、在 I3C 总线已配置完成后再进行物理插入的 I3C 设备。 本规范不试图规定如何处理该物理插入过程,但此类插入不得干扰 SCL 和 SDA 线路,且必须遵守第 6 节定义的所有电气限制。

热加入设备(即热加入目标设备)可以包括任何支持 I3C 目标设备角色的有效设备类型,例如辅助控制器。热加入后,活动控制器 应使用 DEFTGTS CCC(如第 5.1.9.3.7 节所述)。为确保任何辅助控制器知晓所有可用目标设备,控制器一旦发现任何先前已加入的目标设备不再存在于总线上(例如,由于无响应或总线外的机制),应立即通知 I3C 总线。

流程与步骤

由于控制器本质上无法感知新目标设备何时加入 I3C 总线,热加入机制提供了以下步骤来通知控制器有关新目标设备的信息。每个目标设备应根据其支持的方法,确定其是否有资格在 I3C 总线上发出特殊的热加入请求。

注意:

控制器对热加入请求的 ACK 并不意味着动态地址分配一定会立即开始。控制器可能在发出 ENTDAA CCC 之前等待一段可能较长的时间。

注意:

热加入仅兼容于 ENTDAA。不支持 ENTDAA 的目标设备不得使用热加入。

  1. 当每个目标设备连接到 I3C 总线,并且该目标设备确定其有资格这样做时(根据下述"目标设备热加入要求"),目标设备应使用保留的目标地址(即 7'h02)作为 IBI,在 START 后使用 W(写)来发出带内中断。

    这是一个热加入请求,目标设备应根据其使用的是标准热加入方法(即基于总线空闲条件)还是被动热加入方法(即等待以 STOP 结束的 SDR 帧,见第 5.1.5.3 节),在适当的时机发出此请求。

    注意:

    与典型的带内中断请求不同,热加入请求没有数据载荷或强制数据字节。

    此请求通过 ENTDAA CCC 发起动态地址分配过程(见第 5.1.4.2 节)。

  2. 活动控制器应对该请求进行ACK ,以表明已看到热加入请求并将在未来某个时间点 分配动态地址;或进行NACK 以拒绝热加入并推迟处理。

    a. 如果活动控制器 NACK 该请求,则尝试热加入的目标设备应遵循 I3C 目标设备中断请求程序(见第 5.1.6.2 节)再次尝试

    b. 如果活动控制器 ACK 该请求,则目标设备知道热加入已被接受,它应等待 活动控制器使用 ENTDAA 发起动态地址分配程序(见第 5.1.4.2 节)。一旦目标设备看到对其热加入请求的 ACK,它不得 再发送另一个热加入请求。

    c. 活动控制器可以选择发出广播 CCC,通过设置"禁止目标事件命令"中的 DISHJ 位来禁用热加入。活动控制器可以在热加入请求被 NACK 或 ACK 之后这样做,尽管这通常发生在 NACK 之后。如果另一个目标设备在控制器准备好为目标设备分配动态地址之前尝试热加入,则控制器可能需要重复此过程。

    d. 同样,活动控制器可以选择在之后重新启用热加入。为此,活动控制器可以发出广播 CCC,通过设置"启用目标事件命令"中的 ENHJ 位来启用热加入。

    如果任何先前已接收到带有 DISHJ 位设置的 DISEC CCC 的热加入目标设备,则此类目标设备在接收到带有 ENHJ 位设置的 ENEC CCC 后,可以选择重新发送热加入请求。

  3. 活动控制器最终应发出广播命令码"进入动态地址分配"来启动动态地址分配过程。由于只有没有动态地址的合格目标设备才能参与,这允许新加入的目标设备接收其动态地址。

    a. 如果活动控制器功能有限,则它可以选择不处理热加入请求,方法是使用 NACK 后跟 DISEC CCC,然后在之后将控制器角色传递给能力更强的控制器。

    b. 支持热加入的目标设备,当且仅当它已发出热加入请求时,才有资格参与动态地址分配。

如果如第 5.1.9.3.4 节所述发出 ENTDAA 命令码,则目标设备应通过正常机制传输其 48 位预置 ID。每次加入时需要接收相同分配动态地址的热加入目标设备可以使用固定值 ID。

附录 C 中的图 171 说明了热加入流程,包括标准和被动热加入目标设备。此流程图仅为参考信息,未涵盖所有可能的路径组合。

如果目标设备由于被分离或掉电而从 I3C 总线上断开,控制器可能不会意识到这一点。控制器可以通过重复尝试使用安全命令码(即目标设备被要求必须响应的 CCC)联系目标设备来确定此状况,例如获取设备状态。如果控制器确定目标设备不再是 I3C 总线的一部分,则它应回收该目标设备的动态地址,或保留该动态地址以备该目标设备稍后重新加入总线时使用。

注意:

  • 如果控制器首次尝试发出第一个 I3C 地址头的尝试(此过程较慢以允许 I3C 目标设备禁用尖峰滤波器)被转换为热加入请求,则控制器需要对其进行 ACK,然后发出 STOP 并尝试再次发出 I3C 地址头。

  • *热加入目标设备可能与主控制器同时上电。在这种情况下,假设 SCL 和 SDA 被上拉,热加入目标设备甚至在 I3C 总线启动之前就可能将 SDA 拉低。如果主控制器需要 1 毫秒或更长时间才能开始作用于 I3C 总线,那么该主控制器应能容忍在其准备初始化 I3C 总线时 SDA 被保持为低的情况,或者它可以在准备好之前保持 SDA 和/或 SCL 为低,防止热加入目标设备看到总线空闲条件。*

  • 热加入目标设备应实现某种方法,允许系统设计者在设备不作为热加入目标设备使用时,防止设备尝试热加入。例如:当此类设备焊接在电路板上并与 I3C 总线其余部分一起上电时,可以使用 NVMEM 或引脚配置来实现。

目标设备热加入要求

一个热加入目标设备在性质上应该是"一心一意"的,专注于发出热加入请求,直到活动控制器要么 ACK 该请求(从而表明最终将启动动态地址分配过程),要么 NACK 该请求(从而表明目标设备应继续提供热加入请求,直到活动控制器要么 ACK 此类请求,要么发送广播 DISEC CCC 以禁用热加入,如上所述)。

1、热加入目标设备首次连接到 I3C 总线时,应根据其资格等待适当的时机发送热加入请求:

a. 使用标准方法的热加入目标设备,应在等待至少一个总线空闲条件周期后,并确保总线保持空闲(即 SDA 和 SCL 均为高电平),才有资格发送请求。

b. 使用被动方法的热加入目标设备应遵循第 5.1.5.3 节定义的资格条件。

如果多个热加入目标设备同时获得资格,则它们都可能尝试同时发出热加入请求。这适用于使用标准和被动热加入方法的任何组合的热加入目标设备。

2、热加入目标设备在获得资格时,应在 START 之后在 I3C 总线上发送热加入请求。

a. 热加入请求是一个来自保留目标地址的 IBI,其中 RnW 位为低(即写)。

b. 目标设备应通过等待 START 或请求 START 来发送热加入请求。在 START 之后,目标设备应将地址 7'h02 / W 驱动到可仲裁地址头中。

注意: *要发出 START,使用标准方法的热加入目标设备必须拉低 SDA,然后该目标设备应等待控制器拉低 SCL。这仅适用于标准热加入方法;没有定时器的被动热加入目标设备必须等待其他设备驱动 START 请求。*在多个热加入目标设备成功同时发出热加入请求的情况下,没有必要让这些合格的每个目标设备在延迟后连续发出单独的热加入请求。如果热加入请求成功发出,并且活动控制器响应该热加入请求,则每个此类目标设备都应参与活动控制器将发起的后续 ENTDAA 动态地址分配程序。

c. 目标设备应监视活动控制器对热加入请求进行 ACK 还是 NACK。

3、 热加入目标设备应有条件地 在每个后续 START 时(即在下一个适当的时机)继续发送热加入请求,直到活动控制器对热加入请求提供 ACK 为止。一旦此类合格的目标设备看到活动控制器 ACK 了热加入请求,它应停止发送进一步的热加入请求。

4、一旦热加入目标设备看到活动控制器 ACK 或 NACK 热加入请求,它应遵循作为 I3C 目标设备角色的所有规范性要求(即尚未接收到其动态地址的目标设备)。

注意: 使用标准热加入方法的热加入目标设备,在发出第一个热加入请求并接收到活动控制器的 ACK 或 NACK 之前,不应遵循这些规范性要求。这是因为总线空闲条件与确定总线空闲且不处于任何 HDR 模式所需的最短时间有关。

a. 这应包括接收并适当处理所有必需的广播 CCC。

b. 这也可能包括广播的 ENEC CCC(ENHJ 位已设置),如果目标设备选择支持响应此广播 CCC 而重新发送热加入请求,并且如果它先前已接收到广播的 DISEC CCC(DISHJ 位已设置)。请注意,这不影响目标设备是否支持(或保持准备响应)广播的 ENTDAA CCC。

c. 目标设备还应记住它已看到至少一个热加入请求的 ACK/NACK 响应,并且它应保持准备响应广播的 ENTDAA CCC 以进行后续动态地址分配。请注意,这可能紧接在以下任何一种情况之后发生:i. ACK 或 NACK,后跟重复 START;ii. STOP,后跟延迟;或 iii. 重复 START,后跟其他有效的总线流量。

注意: 一旦目标设备发出了热加入请求,即使它看到对热加入请求的 NACK,或 NACK 后跟广播的 DISEC CCC(DISHJ 位已设置),它也应保持准备响应广播的 ENTDAA CCC。如果热加入目标设备尚未发出热加入请求,则它没有资格参与 ENTDAA CCC 的动态地址分配。热加入请求应始终跟在 START 之后,这意味着它使用可仲裁地址头。热加入目标设备应根据发出热加入请求的资格条件,尝试仲裁保留的目标地址。由于此保留目标地址的值非常低,它几乎总是比其他 I3C 目标地址具有更高的优先级,这意味着它极有可能赢得仲裁。

热加入机制应用场景详细说明

热加入机制为 I3C 总线系统提供了极大的灵活性和可扩展性,主要应用于以下几类场景:

1. 模块化/可插拔系统

这是最直观的应用。设想一个具有多个扩展插槽的嵌入式系统主板,如工业计算机、高端路由器或测试设备。主板上运行着配置好的 I3C 总线(主控制器和其他常驻传感器/设备)。当一个包含 I3C 设备(如特定功能传感器、存储模块或协处理器)的扩展卡被"热插"进插槽时:

  • 场景: 扩展卡物理连接后,其上的 I3C 设备上电并检测到总线活动。

  • 过程: 该设备符合"被动方法"资格后,在下一个总线空闲时机发出热加入请求(地址 0x02)。主控制器 ACK 该请求,并在稍后的适当时机(例如完成当前关键任务后)广播 ENTDAA 命令。新设备在动态地址分配过程中获得一个唯一的动态地址,从而正式加入系统。

  • 优势: 系统无需重启即可识别和使用新硬件,实现了真正意义上的"即插即用",提高了系统的可用性和维护便利性。

2. 电源门控与低功耗管理

在移动设备、物联网节点等对功耗敏感的场景中,某些外设可能大部分时间处于关闭状态以节省能量,仅在需要时唤醒。

  • 场景: 一部智能手机中,一个高精度的环境光传感器在屏幕关闭时被完全断电。当用户抬起手机准备点亮屏幕时,该传感器被上电。

  • 过程: 传感器上电后,作为"标准方法"热加入设备,在检测到总线空闲条件后,发出热加入请求。系统的 I3C 主控制器(可能是应用处理器或专用的传感器集线器)ACK 请求,并很快发起 ENTDAA 流程为其分配地址。随后,控制器可以立即读取传感器数据以调整屏幕亮度。

  • 优势: 实现了极致的节能,同时保证了功能快速恢复。设备无需在休眠时保持部分电路上电以维持总线地址,可以彻底断电。

3. 容错与冗余系统

在需要高可靠性的系统中,可能存在备用设备。

  • 场景: 一个服务器管理控制器使用 I3C 总线监控多个关键温度传感器。其中一个主传感器故障(或被软件隔离)。

  • 过程: 系统管理员或管理软件可以物理启用或逻辑切换到一个之前处于待机状态的备用传感器。该备用传感器通过热加入机制加入总线,控制器为其分配一个新的(或回收原主传感器的)动态地址。随后,系统可以继续获得该监测点的温度数据。

  • 优势: 提高了系统的可靠性和可维护性,允许在不中断核心服务的情况下更换或启用备份组件。

4. 复杂初始化或分阶段启动

在一些系统中,某些设备可能依赖于其他设备或软件模块先完成初始化。

  • 场景: 一台汽车电子控制单元在启动时,首先初始化了基础的通信和电源管理 I3C 设备。在基础系统稳定运行并加载了特定驱动后,一个更复杂的、需要特定驱动支持的协处理器设备才被允许接入总线。

  • 过程: 系统软件在准备好后,通过某种方式(如控制电源开关或使能信号)激活该协处理器。协处理器通过热加入机制请求加入。此时,控制器(其软件已准备就绪)可以处理该请求,并为其分配地址,随后进行复杂的配置和数据交换。

  • 优势: 简化了启动顺序的复杂性,允许按需启动设备,避免了所有设备同时初始化可能带来的电源、时钟或软件依赖冲突。

5. 调试与生产测试

在产品研发或生产线上,测试设备需要动态接入被测设备的 I3C 总线。

  • 场景: 一块电路板在测试工位上,测试设备需要通过 I3C 总线读取板载芯片的特定寄存器以验证功能。

  • 过程: 测试探针或连接器接触板子的 I3C 测试点。测试设备作为热加入目标接入正在运行的被测板总线,发出热加入请求。被测板上的主控制器(可能运行特殊测试固件)接受请求并分配地址。随后,测试设备可以作为一个普通的 I3C 目标被访问,执行读写操作以完成测试。

  • 优势: 无需预先在硬件或固件中为测试设备配置固定地址,也无需重启被测系统,使得测试流程更加灵活高效。

总结:

热加入机制的核心价值在于动态性非侵入性。它允许 I3C 总线在运行时灵活地接纳新成员,而无需系统停止、重置或进行复杂的预配置,非常适用于对灵活性、可用性、可维护性和功耗有较高要求的现代电子系统。规范中定义的"标准"和"被动"两种方法,也兼顾了设备主动唤醒和被动等待接入的不同需求。

5.1.5.2 传统 I²C 总线与热加入

热加入与传统 I²C 不兼容。目标设备在传统 I²C 总线上不得尝试热加入。对于支持热加入功能的目标设备,可以通过以下两种方式之一实现此要求:

  1. 如第 5.1.5 节所述,目标设备可以使用一个引脚或非易失性存储器,允许系统设计者在系统不适用此功能时将其关闭。

  2. 目标设备可以使用第 5.1.5.3 节所述的被动热加入方法。这可以防止其在确认处于 I3C 总线之前尝试热加入。

5.1.5.3 被动热加入

被动热加入方法的基本工作方式与第 5.1.5 节概述的相同,不同之处在于对热加入目标设备的资格条件进行了修改。

一个标准的热加入目标设备必须首先等待至少满足总线空闲条件,然后它可以拉低SDA,或者等待一个START。而一个被动的热加入目标设备将首先等待一个以STOP结束的SDR帧,然后等待下一个START,这个START必须由活动控制器或任何其他可以请求START的设备发出。这确保了目标设备确实在I3C总线上。

由于被动的热加入目标设备不一定有一个原本用于等待总线空闲条件的内部定时器,它必须能明确识别出另一个设备可能发出的START(即,与重复START相区别)。

实际上,这意味着一个被动的热加入目标设备将:

要么:

  • 等待至少总线空闲条件(如果活动控制器发出下一个START,即用于SDR模式下的下一个I3C事务);

要么:

  • 等待至少总线可用条件(如果另一个目标设备发出下一个START,例如用于带内中断请求或控制器角色请求)。

一旦被动的热加入目标设备识别出下一个START,它就应该像标准的热加入目标设备一样,将热加入地址(即保留的目标地址 7'h02)驱动到可仲裁地址头中,以发出其热加入请求。

注意:

因为被动的热加入目标设备等待的是一个可识别的I3C地址头,在某些总线上,这可能导致目标设备实际加入总线前经历很长的延迟。

使用这种被动热加入方法的热加入目标设备,仍应遵循第 5.1.2.1 节中关于I3C目标设备角色的所有规范性要求,因为它已经看到了一个以STOP结束的SDR帧。在这种情况下,此类目标设备还应处理在发出热加入请求前可能接收到的任何广播CCC(例如ENEC/DISEC),但不包括ENTDAA CCC,因为它在发出热加入请求之前没有资格参与动态地址分配。

如果一个热加入目标设备同时支持被动和标准热加入方法,那么它可以使用任一方法或两种方法来发出热加入请求。例如,此类目标设备可以在明确识别出另一个设备发出的START时,机会性地尝试使用被动热加入方法;或者,如果总线保持空闲且在此期间没有其他设备发出START,它可以等待至少总线空闲条件,然后发出自己的START。

技术要点与应用场景详细说明

以下是对上述规范内容的技术解释和实际应用场景举例:

1. 失效安全设备焊盘
  • 技术要点:这是热加入机制的基石之一。当设备未上电时(例如模块未插入电源但物理连接了总线,或设备处于深度休眠完全断电状态),其I/O引脚不能像普通MOSFET输入那样,通过内部寄生二极管或ESD保护电路从总线"偷电",导致总线电平被拉低或产生非预期电流通路。这通常需要在芯片设计层面采用特殊的"失效安全"或"零泄漏"I/O电路。

  • 应用场景

    • 热插拔板卡:想象一个背板系统,一块备用板卡插入背板但尚未上电。该板卡上的I3C设备引脚物理连接到活动的系统总线。失效安全设计确保这块"冷"板卡不会影响主板上正在运行的I3C通信,总线电压保持稳定。

    • 分时供电系统:在一个由电池供电的传感器网络中,主控制器按需轮询各个传感器。当某个传感器未被轮询时,其电源被彻底关断以节能。失效安全设计保证它在断电期间不会从共用的I3C总线汲取电流,从而最大化省电效果,并确保其他传感器通信正常。

    • 调试接口:产品上可能留有一个用于现场调试的I3C测试点。即使没有连接调试工具(相当于调试工具"未上电"),这个测试点也不应影响设备内部总线的正常工作。

2. 与传统 I²C 的兼容性
  • 技术要点:I3C向下兼容I²C,但热加入是其特有的新功能。在纯I²C模式下(总线上只有I²C设备或控制器运行在I²C模式),不允许进行热加入。原因是热加入依赖于I3C特定的协议格式(如特定的地址头、ACK/NACK规则)。如果在I²C总线上误发一个热加入请求(地址0x02),可能会被误解为一个普通的I²C写地址,导致总线冲突或设备误响应。

  • 应用场景与解决方案

    • 混合模式总线:系统刚启动时,可能先以I²C模式运行来初始化一些传统I²C设备。此时,支持热加入的I3C设备(可能同时支持I²C模式)如果错误地尝试热加入,会破坏通信。规范给出了两种解决方法:

      • 硬件/固件配置:通过设置一个硬件引脚(如拉高/拉低某个配置引脚)或将一个比特位写入非易失性存储器,永久或临时禁用该设备的热加入功能。这适用于明确知道该设备将用于纯I²C环境或固定角色的情况。

      • 使用被动方法 :这是更自动化的方法。设备采用被动热加入方法,它不会主动发起START,而是先"偷听"总线。只有当它确认看到了一个完整的、以STOP结束的I3C格式的SDR帧(这是I²C所没有的明确特征),它才认为自己在一个I3C总线上,进而有资格在下一个START时发出热加入请求。这有效防止了在I²C总线上的误动作。

3. 被动热加入
  • 技术要点:这是标准热加入方法的一个变体,核心区别在于"如何确认自己有资格加入"。标准方法依赖内部定时器测量总线空闲时间,这需要设备有稳定的时钟源。被动方法则依赖协议层检测:必须观测到一个有效的I3C事务结束(STOP)和下一个事务开始(START)。这更稳健,但可能引入延迟。

  • 应用场景

    • 无精确时钟源的设备:某些极低功耗的传感器或执行器,可能没有高精度的内部振荡器,或者为了省电关闭了时钟。它们无法可靠地测量"总线空闲条件"所需的时间。被动方法允许它们仅通过检测总线上的数字事件(START/STOP)来触发动作。

    • 确保协议一致性:被动方法是保证设备只在I3C总线上(而非I²C)尝试加入的天然方法。如前述兼容性场景所示,它提供了额外的安全层。

    • 避免总线冲突:在一些复杂的多主或带多个中断源的系统中,总线可能很少出现长时间的空闲。一个等待"总线空闲条件"的标准热加入设备可能永远等不到机会。而被动设备只需要等待当前传输结束,然后可以尝试在下一个事务的仲裁阶段加入竞争(使用高优先级地址0x02),成功率更高。

    • 组合使用策略:规范提到设备可以同时支持两种方法。例如,设备上电后,可以先尝试被动方法,如果短时间内观测到总线活动,则快速加入。如果一段时间内总线完全静止(可能系统处于休眠),则可以切换到标准方法,主动拉低SDA请求START来"唤醒"总线并尝试加入。这种适应性策略提供了最佳的加入速度和可靠性。

总结 :这些子章节细化并完善了热加入机制。失效安全焊盘是电气层面的保障,与传统I²C的兼容性处理是协议层面的划分,而被动热加入则提供了另一种更稳健、对设备要求更低的加入策略。它们共同确保了热加入功能在各种实际硬件和系统配置中都能可靠、安全地工作。

相关推荐
恒锐丰小吕2 小时前
屹晶微 EG3113 600V高压、2A/2.5A驱动、自举半桥栅极驱动芯片技术解析
嵌入式硬件·硬件工程
线束线缆组件品替网13 小时前
Weidmüller 工业以太网线缆技术与兼容策略解析
网络·人工智能·电脑·硬件工程·材料工程
裕工实验室21 小时前
陶瓷 PCB 的阻抗与信号完整性优化技巧
硬件工程·pcb工艺·材料工程·高频高速pcb·陶瓷pcb
自小吃多21 小时前
爬电距离与电气间隙
笔记·嵌入式硬件·硬件工程
智源研究院官方账号2 天前
众智FlagOS 1.6发布,以统一架构推动AI硬件、软件技术生态创新发展
数据库·人工智能·算法·架构·编辑器·硬件工程·开源软件
浩子智控3 天前
电子产品设计企业知识管理
运维·服务器·eclipse·系统安全·硬件工程
qq_672592753 天前
STM32超声测距离的测量精度评估
stm32·硬件架构·硬件工程
恒锐丰小吕3 天前
屹晶微 EG2181D 600V耐压、2.5A驱动、无闭锁带欠压保护的紧凑型半桥驱动器技术解析
嵌入式硬件·硬件工程
恒锐丰小吕3 天前
矽塔 SA8339 单通道 12V/12A 峰值、低内阻、全集成 H 桥电机驱动器技术解析
嵌入式硬件·硬件工程