1. 项目背景与硬件选型考量
在嵌入式开发中,I2C总线因其简单的两线制结构和多主从设备支持特性,成为连接各类外设传感器的首选方案。SC16IS752作为NXP推出的双通道UART转I2C/SPI桥接芯片,能有效解决STM32等MCU原生UART接口不足的问题。我在最近一个工业传感器采集项目中,就遇到了需要同时连接多个Modbus RTU设备的情况,而STM32F103的UART接口数量有限,最终选择了通过I2C扩展SC16IS752的方案。
选择SC16IS752而非其他串口扩展芯片(如XR20M1170)主要基于三点考量:首先,其支持最高5Mbps的波特率,满足工业场景下高速数据采集需求;其次,内置的64字节收发FIFO可显著降低MCU中断频率;最重要的是,芯片提供可编程GPIO引脚,能灵活适配传感器控制信号。实际采购时需注意区分SC16IS752IPW(TSSOP-28封装)和SC16IS752IBS(HVQFN-32封装),前者更适合手工焊接的样板开发。
2. 硬件电路设计要点
2.1 电源与复位电路
SC16IS752采用3.3V供电,与STM32电平完全兼容。建议在VCC引脚就近放置0.1μF去耦电容,实测显示不加该电容会导致I2C通信随机失败。复位引脚建议通过10kΩ电阻上拉到VCC,同时预留测试点方便手动复位。我在初期调试时就曾因复位引脚浮空导致芯片工作异常,这个坑值得特别注意。
2.2 I2C总线连接
SC16IS752的I2C接口标准模式下支持100kHz速率,快速模式下支持400kHz。与STM32的连接需注意:
- SDA/SCL线必须接4.7kΩ上拉电阻(实测值在3.3V系统下最佳)
- 若线长超过10cm,建议采用双绞线并降低速率至100kHz
- 地址引脚A0/A1需通过跳线设置,避免与总线上其他设备冲突
重要提示:STM32的I2C引脚复用功能需在CubeMX中正确配置,我曾因误将PB6/PB7配置为普通GPIO导致无法通信,耗费两小时排查。
2.3 串口信号处理
每个UART通道的TXD/RXD需根据外设电平做转换:
- 连接5V设备时,建议使用TXS0108E等电平转换芯片
- 长距离传输时,在RX引脚加100Ω电阻和TVS二极管防浪涌
- 若使用硬件流控,需注意CTS/RTS
