FSR 压力传感器在工业控制、医疗设备、消费电子里,I2C 基本都是主流接口。片上集成 ADC 后走 I2C,工程上真正难的两件事:多片并联的地址冲突 ,和 ADC 数据的软件滤波。
下面按这两个问题整理一轮实践结论。
一、地址规划:4 片以内最稳,8 片是上限
常见可选地址有 8 个:0x28 / 0x36 / 0x40 / 0x48 / 0x4A / 0x4C / 0x50 / 0x60,也就是一条总线最多挂 8 片。
实践结论:4 片以内最稳定。挂满 8 片时总线仲裁和信号完整性会明显变差,问题通常不是通信失败,而是偶发 NACK 和时序抖动。
超过 8 片就上多路复用器,比如 TCA9548A(8 通道),用另一路 I2C 做通道切换,逻辑上可扩到 64 片。
代价要注意:多路复用器会引入 0.5~1Ω 等效串联电阻,长距离通信时上升时间需要重新评估,别拿原来的上拉电阻直接套。
地址分配策略 :量产优先用硬件地址(模块上的地址引脚),断电后保持,现场调试简单;软件地址灵活但掉电丢失,只适合研发阶段。

二、软件滤波:滑动平均 + 中值
基础组合是滑动平均窗口 8~16 点 + 中值滤波 3 点 :中值先干掉脉冲干扰,平均再压周期性噪声。信噪比可以从单点采样的 30dB 提到 50dB 以上。
落地细节:滤波跑在硬件定时器中断里,采样间隔 1ms,实时性足够。
三、动态场景:窗口要会自己变
固定窗口的问题在延迟:8 点滑动平均延迟约 4ms,16 点约 8ms 。静态测量无所谓,动态压力下这点延迟足以让波形失真。做法是按信号变化率自适应切窗口:平稳时用 16 点换信噪比,快速变化时切 4 点换响应,延迟可压到 2ms 以内。
四、工频干扰:50Hz 陷波
工控现场 50Hz 工频会在 ADC 数据里形成周期性毛刺。采样率 1kHz 时,在 50Hz 加一个二阶 IIR 陷波器,Q=30 ,衰减 40dB 以上即可。
副作用要清楚:陷波器会连带衰减 50Hz 附近的真实信号。好在工控压力信号通常 10Hz 以下,影响可忽略;但如果你的信号带宽接近 50Hz,这条路走不通,得改用同步采样。
五、通信可靠性:三个容易踩的点
|--------|--------------|
| 总线长度 | 建议速率 |
| < 1 m | 400 kHz |
| 1~3 m | 100 kHz |
| 3~5 m | 10 kHz |
| > 5 m | 改用 I2C 转 485 |
上拉电阻 :标准模式 4.7K、快速模式 2.2K、极速模式 1K。太大上升沿变缓,太小功耗上升。经验值:总线电容 100pF 以内配 4.7K 够用,超出按 Rp(max) ≈ tr / (0.8473 × Cb) 复核。
一个常见误区 :I2C 是单端开漏 总线,不存在"差分阻抗 100Ω、等长 ±5mm"这种说法------那是差分信号的要求。I2C 布线真正要控制的是总线电容 (越小越好)、SDA/SCL 的串扰 (避免长距离并行贴走),以及地回流路径。
六、中断与出厂测试
中断函数要短:1kHz 中断频率下,执行时间控制在 50μs 以内,函数里只置标志位、拷数据,处理逻辑放主循环。超时就会丢数据。
出厂逐片测三项:地址、ACK、时序 ,用 MCU 测试夹具,单片约 3 秒。批量再加 5% 抽样做 24 小时长稳通信测试,无掉线才算合格。
结论
I2C 接 FSR 的坑,一半在总线(地址、上拉、长度、电容),一半在算法(窗口长度与延迟的权衡)。
两条经验可以直接抄:动态场景别用固定窗口 ;陷波器上线前先确认信号带宽。