1. I2C总线基础
1.1 I2C总线历史
I2C(Inter-Integrated Circuit)总线由飞利浦半导体(现恩智浦半导体)于1982年发明,最初用于电视接收机中微控制器与外围芯片之间的低成本、短距离通信。其设计目标是以最少的引脚数(仅需两根线)实现多设备互联,从而简化PCB布局并降低系统成本。
| 时间 | 里程碑 | 关键特性 |
|---|---|---|
| 1982年 | 飞利浦发布I2C总线规范v1.0 | 100 kbit/s标准模式,7位地址 |
| 1992年 | I2C规范v2.0 | 新增400 kbit/s快速模式,10位地址扩展 |
| 1998年 | I2C规范v2.1 | 明确电气特性与时序容差 |
| 2007年 | I2C规范v3.0 | 新增1 Mbit/s快速模式+(Fm+) |
| 2012年 | I2C规范v4.0 | 新增3.4 Mbit/s高速模式(Hs-mode) |
| 2014年 | I2C规范v5.0 | 新增5 Mbit/s超快速模式(UFm) |
实践提示:音频Codec驱动开发中最常用的I2C模式为标准模式(100 kHz)和快速模式(400 kHz)。高速模式(3.4 MHz)在部分高端音频Codec中开始出现,但需要主控器支持且对PCB布局要求更高。
1.2 物理层特性:SDA与SCL
I2C总线仅使用两条双向信号线:
- SDA(Serial Data Line):串行数据线,用于传输地址、数据和控制信号。
- SCL(Serial Clock Line):串行时钟线,由主设备产生,同步数据传输。
两条线均采用开漏(Open-Drain)输出结构,通过外部上拉电阻连接到VDD(通常为1.8V、3.3V或5V)。
关键电气特性:
- 总线空闲时,SDA和SCL均为高电平(由上拉电阻拉高)。
- 任何设备都可以将SDA或SCL拉低(输出低电平)。
- 上拉电阻典型值:1.5 kΩ ~ 10 kΩ,取决于总线电容和通信速率。
- 总线电容限制:标准模式最大400 pF,快速模式最大200 pF。
1.3 总线拓扑结构
I2C总线采用多主多从的共享总线拓扑结构,所有设备通过SDA和SCL两条线并联连接。每个从设备拥有唯一的7位或10位地址,主设备通过地址选择通信目标。
| 拓扑特性 | 说明 |
|---|---|
| 总线类型 | 共享串行总线,所有设备共用SDA/SCL |
| 设备角色 | 主设备(Master)发起通信并产生时钟;从设备(Slave)响应主设备 |
| 最大设备数 | 受限于总线电容(400 pF)和地址空间(7位:128个,10位:1024个) |
| 通信方向 | 半双工,主设备可发送或接收数据 |
| 仲裁机制 | 多主同时发送时,通过SDA线的“线与”逻辑进行仲裁,低电平优先 |
| 最大传输距离 | 标准模式约1米(受总线电容和上拉电阻限制) |
音频Codec调试注意:在音频Codec驱动开发中,I2C总线通常只挂载1~2个设备(Codec + 可能的触摸控制器或功放)。但若总线上存在多个设备,务必确认每个从设备的地址不冲突。音频Codec的I2C地址通常由芯片的ADDR引脚电平决定,常见地址为0x1A、0x1B、0x1C等。
1.4 多主从通信概念
I2C总线支持多主设备在同一总线上通信,这是其区别于SPI等简单总线的重要特性。多主通信的核心机制包括:
- 总线仲裁(Arbitration):当多个主设备同时尝试控制总线时,通过SDA线的电平比较决定哪个主设备获得总线控制权。发送低电平的主设备将赢得仲裁。
- 时钟同步(Clock Synchronization):多个主设备产生的SCL时钟通过“线与”逻辑自动同步,以最慢的主设备时钟为准。
- 从设备地址冲突检测:每个从设备必须拥有唯一地址,否则会导致通信混乱。
多主通信在音频Codec场景中的实际意义:
- 在智能手机/平板等复杂系统中,应用处理器和协处理器可能都需要访问音频Codec的寄存器。
- 多主仲裁机制确保两个主设备不会同时驱动总线导致数据冲突。
- 时钟同步机制自动协调不同主设备的时钟速率,保证通信可靠性。
- 实际调试中,建议尽量使用单一主设备访问音频Codec,避免多主竞争带来的时序不确定性。
1.5 I2C总线与音频Codec驱动的关联
在音频Codec驱动开发中,I2C总线承担着控制通道的角色,用于读写Codec内部的寄存器,配置采样率、增益、路由、滤波器等参数。而音频数据本身通常通过I2S或TDM等音频总线传输。
| 总线类型 | 在音频系统中的角色 | 典型速率 | 传输内容 |
|---|---|---|---|
| I2C | 控制通道:寄存器读写、配置管理 | 100 kHz ~ 400 kHz | 寄存器地址、配置值、状态查询 |
| I2S | 数据通道:音频PCM数据流 | 1.5 MHz ~ 12.288 MHz | 左/右声道音频采样数据 |
| TDM | 多通道音频数据复用 | 6.144 MHz ~ 24.576 MHz | 多声道音频数据 |