概述
主要特性
- 双向 2 线串行总线(SDA + SCL)
- 7 位或 10 位目标寻址
- 支持多控制器模式
工作模式
通信时序


- SCL 为高电平时:SDA 必须保持稳定
- SCL 为低电平时:SDA 可以改变
- 例外:START 和 STOP 序列可在 SCL 为高电平时改变 SDA
各子系统的传输模式
接口组件
设备树源文件
API
软件设备树配置
Linux 设备树示例
QUPAC 访问控制
确保在QUPAC_Access.c 中设置了正确的协议:
配置步骤
1
启用内核配置
编辑
kernel_platform/kernel/arch/arm64/configs/qcom_defconfig:2
在设备树中启用 I2C 节点
3
编译并烧写
编译内核和设备树的改动,然后将镜像加载到设备。
验证
检查设备节点
使用 i2c-tools
调试
启用调试日志
故障排查
未检测到 I2C 设备
未检测到 I2C 设备
I2C 传输超时
I2C 传输超时
原因: 缺少上拉电阻、从设备无响应、时钟频率错误、总线被拉低卡死。在 SDA/SCL 上添加 4.7 kΩ 上拉电阻;在设备树中调整
clock-frequency。无效协议错误
无效协议错误
症状:
geni_i2c a94000.i2c: Invalid proto 1确认 QUPAC_Access.c 中设置了 QUPV3_PROTOCOL_I2C、AC_HLOS、bAllowFifo=TRUE、bLoad=TRUE。DMA 传输失败
DMA 传输失败
确认
CONFIG_QCOM_GPI_DMA=m;检查设备树中的 dmas 和 dma-names。如需在不使用 DMA 的情况下测试:
