一键上车:LPC55S36 I3C Hot-Join处理流程详解

来源:恩智浦MCU加油站 MCU/MPU 10 次阅读
摘要:I3C协议与Hot-Join简介 I3C(Improved Inter Integrated Circuit)是由MIPI联盟推出的新一代串行通信协议,旨在替代传统的I2C协议。相比I2C,I3C提供了更高的数据速率、更低的功耗以及更丰富的功能特性,如动态地址分配、In-Band Interrupt(IBI)、Hot-Join、节能模式等。 与传统的I2C协议不同,I3C支持动态地址分配和更高效的

I3C协议与Hot-Join简介

I3C(Improved Inter Integrated Circuit)是由MIPI联盟推出的新一代串行通信协议,旨在替代传统的I2C协议。相比I2C,I3C提供了更高的数据速率、更低的功耗以及更丰富的功能特性,如动态地址分配、In-Band Interrupt(IBI)、Hot-Join、节能模式等。

与传统的I2C协议不同,I3C支持动态地址分配和更高效的事件通知机制。Hot-Join是I3C的关键特性之一,适用于系统运行过程中新增传感器或外设的场景。控制器必须识别该IBI 为 Hot-Join类型,并决定是否接受该设备加入。

Hot-Join是I3C协议中的一种机制,允许新的目标设备在总线运行过程中加入通信。目标设备通过拉低SDA线并发起In-Band Interrupt (IBI) 请求,通知控制器其加入意图。

本文将详细介绍在LPC55S36平台上如何处理I3C协议中的Hot-Join(热插拔)事件,包括控制器寄存器配置、协议流程解析、目标设备代码实现,以及逻辑分析仪截图辅助说明。

硬件环境:

  • 开发板:LPC55S36 EVK

软件环境:

I3C协议中的Hot-Join流程图

根据I3C spe中的Hot-Join流程图,Hot-Join流程概述:

2.1 总线空闲(Bus Idle)

总线处于空闲状态,目标设备检测到总线空闲后尝试发起Hot-Join。

2.2 发送 Hot-Join 请求

设备发出START条件,并发送Hot-Join地址(固定为0x7E)。

RnW=0(写操作),表示Hot-Join请求。

2.3 主机响应

主机根据当前总线状态和策略,可能:

2.3.1 ACK:接受 Hot-Join

主机发送STOP,表示请求完成。

后续执行DAA(Dynamic AddressAssignment)流程,为新设备分配动态地址。

2.3.2 NACK:拒绝 Hot-Join(暂时不允许加入)

设备会稍后重试。

目标设备(Slave) Hot-Join关键代码

i3c_slave_config_t slaveConfig;

为目标设备的hot join 请求。

主设备(master) Hot-Join关键代码

在LPC55S36中,控制器通过配置MCTRL寄存器来处理I3C总线上的Hot-Join请求。整个流程分为两个阶段:监听阶段和响应阶段,确保控制器能够灵活应对目标设备的动态接入。

4.1 配置**MCTRL寄存器,进入AutoIBI +Manual**模式

mctrlVal = I3C0->MCTRL;
  • kI3C_RequestAutoIbi:

    控制器进入自动监听模式,当目标设备拉低SDA发起IBI(如 Hot-Join)时,控制器自动检测

  • kI3C_IbiRespManual:

    控制器在收到IBI后不立即响应,而是进入等待状态,由应用程序决定是否ACK或NACK

  • 此阶段的配置是为了确保控制器能够捕捉到Hot-Join请求,并将处理权交给软件层

4.2**轮询MSTATUS寄存器,等待Hot-Join IBI到来**

do {

4.3**手动ACK Hot-Join**请求

mctrlVal &= ~(I3C_MCTRL_IBIRESP_MASK | I3C_MCTRL_REQUEST_MASK);
  • kI3C_RequestIbiAckNack:发起手动ACK/NACK请求

  • kI3C_IbiRespAck:明确表示接受该Hot-Join请求

  • 此阶段是对第一阶段的补充,完成对目标设备的响应

4.4 发送**STOP**

I3C_MasterEmitStop(I3C0, true);

4.5  执行**DAA(Dynamic AddressAssignment)流程**

I3C_MasterProcessDAA(EXAMPLE_MASTER, addressList, 8);

逻辑分析仪截图

逻辑分析仪显示,目标设备发起Hot-Join,主设备成功ACK并动态分配地址。

小结

本文基于LPC55S36平台,对I3C Hot Join机制进行了实践验证,完整梳理了Hot Join请求的发起流程以及主机侧的处理逻辑,为I3C总线设备的动态接入提供了可行的实现思路。

相关推荐
评论区

登录后即可参与讨论

立即登录