I2C 上拉电阻怎么选?阻值多大合适?

嵌入式 · 2 浏览
I2C 上拉电阻怎么选?阻值多大合适?

回答(4)

如果走线长或电磁干扰大,可以试试在SCL/SDA对地加小电容(如10pF),配合4.7k上拉,能滤高频噪声,但会降速,400kHz下慎用。
嵌入式老张 · 2026-08-14
补充一点:有些传感器模块板上自带上拉,你再外接就相当于并联,阻值减半!接之前先量一下,不然上升沿太陡容易误触发。
电子狗阿黄 · 2026-08-14
实践上我一般3.3V系统直接上4.7k,如果通信距离超过20cm或挂超过8个设备,就换2.2k,省事。记得每个设备地址别冲突。
老王爱焊板 · 2026-08-14
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