Linux I2C

驱动和调试

Posted by LXG on April 15, 2025

Rockchip_Developer_Guide_I2C_CN.pdf

I2C-wiki

Android I2C 驱动

历史

I²C(Inter-Integrated Circuit)字面上的意思是集成电路之间,它其实是I²C Bus简称,所以中文应该叫集成电路总线,它是一种串行通信总线, 自2006年10月1日起,使用I²C协议已经不需要支付专利费,但制造商仍然需要付费以获取I²C从属设备地址

I2C 总线(Inter-Integrated Circuit),是由飞利浦(Philips,现在的 NXP)在1982 年发明的,它是一种简洁、节省引脚、专为芯片间短距离通信设计的串行总线协议

核心特点是:

  1. 双线通信(SDA + SCL)
  2. 一主多从架构
  3. 地址寻址机制
  4. 支持热插拔和冲突检测

I2C_svg

硬件 I2C vs 软件 I2C

项目 硬件 I2C 软件 I2C(Bit-banging)
驱动方式 使用芯片内置的 I2C 控制器 用普通 GPIO 手动控制时序
性能 快速稳定,支持高频(400kHz~3.4MHz+) 慢,通常 <100kHz,受限于 CPU 执行速度
占用资源 占用固定的 I2C 引脚和寄存器 任意 GPIO 即可实现 I2C 接口
精度和时序控制 硬件自动完成,准确严格 手动延时控制,容易受中断/系统调度干扰
多主支持 取决于硬件,部分支持 很难实现多主
调试与控制 调试较难,依赖芯片厂商驱动和寄存器文档 易于修改、可插入任意调试信息
功耗 通常更低,因硬件电路优化 更高,因软件需频繁操作 GPIO