I3C 仅支持 aDSP 传感器通信。不支持 Linux 用例。
概述
总线特性
- 2 线串行接口(SDA + SCL),支持最高 12.5 MHz
- 在同一总线上向后兼容传统 I2C 设备
- 地址阶段:400 kHz
- 数据阶段:12.5 MHz
高级特性
- 带内中断(IBI)支持
- 热加入(Hot-join,动态添加设备)
- 同步时序和异步时间戳
- 写操作期间的 8 位数据奇偶校验
- 目标设备的动态寻址
- 单倍数据速率(SDR)模式
- 符合 MIPI I3C 规范的 CCC(通用命令码)
数据阶段模式

数据包帧结构
总线初始化
1
控制器初始化
I3C 控制器驱动初始化控制器,包括固件加载和配置设置。
2
配置与设备数据库读取
驱动读取 I3C 配置和设备数据库:
- I2C 静态地址设备列表
- I3C 静态地址设备列表
- 预期的 I3C 动态设备(供应商 ID、设备 ID、预定义动态地址、关联驱动)
- 可选的允许热加入设备
3
设备枚举
驱动枚举总线上的设备并分配本地地址。
4
总线配置
驱动将总线配置写入控制器:
- 工作频率
- 纯/传统 I2C 模式
- SDR/HDR 启用/禁用
- 具备 IBI 能力的设备和预期数据字节数
5
客户端软件配置
客户端软件接收 I2C/I3C 设备及热加入设备的设备列表和配置。
软件配置
固件加载
QUP v3 串行引擎的 I3C 固件在 aDSP 启动期间随 SSC QUP 一起加载。 配置文件:GPIO 配置
各串行引擎的默认 GPIO 配置位于:TLMM_MAP(active_pull, drive_strength, sleep_pull) — I3C 使用激活上拉、2 mA 驱动、睡眠保持(keeper)。
API
故障排除
设备未被枚举
设备未被枚举
- 验证 SDA/SCL 物理连接和上拉电阻(1–4.7 kΩ)
- 确认供应商 ID 和设备 ID 与预期值匹配
地址阶段时序问题(400 kHz)
地址阶段时序问题(400 kHz)
症状: 枚举期间设备无响应。验证地址阶段 SCL 频率为 400 kHz。如有需要,调整固件配置中的时钟分频器设置。
数据阶段时序问题(12.5 MHz)
数据阶段时序问题(12.5 MHz)
症状: 数据损坏或读/写失败。检查总线电容 — 必要时减小。验证数据阶段 SCL 频率为 12.5 MHz。
热加入不工作
热加入不工作
- 验证配置中已启用热加入
- 将设备添加到允许热加入的列表(供应商 ID + 设备 ID)
- 检查 IBI 配置和设备上电顺序
混合 I2C/I3C 总线问题
混合 I2C/I3C 总线问题
- 验证总线模式(纯模式与传统 I2C 模式)
- 检查 I2C 与 I3C 设备之间是否存在地址冲突
- 确认开漏与推挽模式切换正确
未收到 IBI(带内中断)
未收到 IBI(带内中断)
- 在配置中为特定设备启用 IBI
- 配置正确的预期数据字节数
- 验证中断处理程序注册
信号完整性问题
信号完整性问题
症状: 间歇性通信失败。
- 测量 SDA 和 SCL 上的上升/下降时间
- 调整上拉电阻值
- 添加串联终端电阻
- 缩短总线长度或减小电容
常见错误码
资源
- MIPI I3C 规范
- Qualcomm Linux 接口指南
- QUP v3 串行引擎文档

