I2C上拉电阻的选择需在功耗、上升时间和噪声容限间折中。标准模式(100kHz)常用4.7kΩ,快速模式(400kHz)常用2.2kΩ,高速模式(1MHz)可低至1kΩ。计算公式:最小阻值 = (VCC - VOL_max) / IOL,其中VOL_max通常为0.4V,IOL为灌电流(如3mA),若VCC=3.3V则Rmin≈(3.3-0.4)/0.003≈967Ω。最大阻值由总线电容和上升时间决定:Rmax = t_r / (0.8473 × C_bus),例如t_r=300ns(400kHz),C_bus=200pF,则Rmax≈1.77kΩ。实际选择建议:先用示波器测SCL/SCL边沿,若上升沿过缓则减小阻值;若信号过冲或功耗大则增大。供电电压3.3V、总线电容100pF以下,选4.7kΩ;若总线较长或多设备,改用2.2kΩ并加TVS管。
```c
// 示例:计算上拉电阻范围
float r_min = (3.3 - 0.4) / 0.003; // 966Ω
float r_max = 1e-9 / (0.8473 * 200e-12); // ≈1.77kΩ
printf("R: %.0f ~ %.0f Ω\n", r_min, r_max);
```
mcuku 阿沐 · 2026-08-14