1. I2C总线基础:历史、物理层与电气特性

1.1 I2C总线发展简史

I2C(Inter-Integrated Circuit)总线由Philips半导体(现NXP)于1982年推出,最初用于电视接收机内部芯片间低速通信。其核心设计理念是:用最少引脚实现多主设备同步串行通信。经过40余年演进,I2C已成为嵌入式系统中最广泛使用的板级总线之一。

版本/标准 推出年份 最大速率 关键特性
I2C 1.0 1982 100 kbit/s 标准模式(Sm),7位地址
I2C 2.0 1992 400 kbit/s 快速模式(Fm),10位地址
I2C 3.0 2007 1 Mbit/s 快速模式+(Fm+),驱动电流增强
I2C 4.0 2012 3.4 Mbit/s 高速模式(Hs),主设备电流源
I2C 5.0 2014 5 Mbit/s 超快速模式(UFm),单向传输
课程聚焦:XMC系列微控制器I2C外设支持标准模式(100 kbit/s)和快速模式(400 kbit/s),兼容Fm+(最高1 Mbit/s)。本课程所有故障排查案例均基于100 kbit/s和400 kbit/s两种速率。

1.2 物理层特性:SDA与SCL

I2C总线仅需两根双向信号线:

  • SDA(Serial Data Line):串行数据线,用于传输地址、数据和应答信号。
  • SCL(Serial Clock Line):串行时钟线,由主设备产生,同步数据传输。

两根线均为开漏(Open-Drain)结构,即设备只能将线拉低(输出低电平),不能主动拉高。高电平由外部上拉电阻提供。这种结构允许多个设备共享总线,实现线与(Wired-AND)逻辑。

I2C总线物理连接拓扑 主设备 XMC MCU 从设备1 传感器 从设备2 EEPROM 从设备3 ADC Rₚ Rₚ VDD (3.3V / 5V) VDD (3.3V / 5V) SDA SCL SCL波形: SDA数据: 开漏输出 + 上拉电阻 设备只能拉低总线 高电平由上拉电阻提供 支持多主设备仲裁

1.3 电气特性与上拉电阻计算

上拉电阻是I2C总线正常工作的关键元件。电阻值选择需同时满足上升时间要求和驱动能力限制。

1.3.1 上拉电阻最小值(Rₚₘᵢₙ)

最小值由设备在低电平时能吸收的最大电流决定:

Rₚₘᵢₙ = (VDD - VOLₘₐₓ) / IOLₘₐₓ

其中:
  VDD     = 总线供电电压(3.3V 或 5V)
  VOLₘₐₓ = 输出低电平最大电压(通常 0.4V)
  IOLₘₐₓ = 设备可吸收的最大灌电流(标准模式 3mA,Fm+ 20mA)

示例(3.3V系统,标准模式):
  Rₚₘᵢₙ = (3.3 - 0.4) / 0.003 = 966.7 Ω
  实际取标称值 1 kΩ

1.3.2 上拉电阻最大值(Rₚₘₐₓ)

最大值由总线电容和要求的上升时间决定:

Rₚₘₐₓ = tᵣ / (0.8473 × Cb)

其中:
  tᵣ = 最大允许上升时间(标准模式 1000ns,快速模式 300ns)
  Cb = 总线总电容(包括引脚电容 + 走线电容,典型值 10~50 pF/设备)

示例(标准模式,Cb = 100 pF):
  Rₚₘₐₓ = 1000ns / (0.8473 × 100pF) ≈ 11.8 kΩ
  实际取标称值 10 kΩ
参数 标准模式(Sm) 快速模式(Fm) 快速模式+(Fm+)
最大速率 100 kbit/s 400 kbit/s 1 Mbit/s
最大上升时间 tᵣ 1000 ns 300 ns 120 ns
最大总线电容 Cb 400 pF 400 pF 550 pF
典型上拉电阻(3.3V) 4.7 kΩ ~ 10 kΩ 1.5 kΩ ~ 4.7 kΩ 1 kΩ ~ 2.2 kΩ
典型上拉电阻(5V) 4.7 kΩ ~ 10 kΩ 2.2 kΩ ~ 4.7 kΩ 1.5 kΩ ~ 2.2 kΩ
工程经验:XMC系列I2C调试时,若总线挂死(SCL/SDA持续低电平),首先检查上拉电阻是否缺失或阻值过大。使用示波器测量上升时间,若超过规格值,应减小上拉电阻。

1.4 总线电容与设备数量限制

I2C规范规定最大总线电容为400 pF(标准/快速模式)。每个设备引脚贡献约5~10 pF,PCB走线每厘米贡献约1 pF。估算公式:

最大设备数 ≈ (400 pF - 走线电容) / 每设备引脚电容

示例:PCB走线总长20 cm → 20 pF
      每设备引脚电容 8 pF
      最大设备数 = (400 - 20) / 8 ≈ 47 个

实际工程中建议不超过 8~16 个设备,以保证信号完整性。
上拉电阻选择流程 确定 VDD 和速率 计算 Rₚₘᵢₙ = (VDD - 0.4) / IOL 计算 Rₚₘₐₓ = tᵣ / (0.8473 × Cb) 选型建议 Rₚ 取值在 Rₚₘᵢₙ 和 Rₚₘₐₓ 之间 优先选标称值: 1kΩ / 1.5kΩ / 2.2kΩ 3.3kΩ / 4.7kΩ / 10kΩ 用示波器验证上升时间 确保边沿干净无振铃

1.5 XMC系列I2C电气注意事项

  • 电平兼容性:XMC4000系列I/O电压为3.3V,若连接5V从设备,需使用电平转换器或确认从设备是否支持3.3V输入。
  • 引脚配置:XMC I2C引脚需配置为开漏输出模式,禁止设置为推挽输出,否则会导致总线冲突。
  • 滤波电容:每个设备电源引脚旁需放置100 nF去耦电容,减少噪声耦合到SDA/SCL。
  • 走线布局:SDA和SCL走线应远离高频开关节点(如PWM输出、DC-DC电感),避免串扰。
常见故障:上拉电阻缺失或阻值过大(>20 kΩ)会导致上升沿过缓,使设备误判逻辑电平,表现为通信间歇性失败或地址无应答。排查时先用示波器测量SDA/SCL上升时间,若超过1 μs(标准模式)或300 ns(快速模式),应减小上拉电阻。