STM32三大接口怎么选:I2C、SPI、UART
做物联网终端,十有八九卡在通信接口上。温湿度挂I2C,LoRa走SPI,4G接UART。一颗MCU三套协议并存,引脚怎么分、上拉电阻怎么算,稍不留神就是返工。
选型其实不用纠结。低速传感器选I2C,两线省引脚;高速采集选SPI,全双工速率高;无线模组和调试口选UART,对接最简单。一句话:传感器网络选I2C,高速外设选SPI,无线模组选UART。
不过真上手,坑全在细节里。I2C是开漏输出,上拉电阻不是可选项。3.3V系统一般用2.2k到4.7kΩ,设备多就往下调。SPI要盯PCB,SCK超过10MHz后,数据线跟时钟线得保持3倍线宽间距防串扰。UART没时钟线,波特率偏差超2%就开始乱码。
代码和调试也有讲究。多协议共存时,先查DMA请求映射表,冲突了编译器不报错,只会runtime死给你看。遇到I2C总线卡死,可以用GPIO模拟SCL打9个时钟脉冲强制恢复。要是读数偶尔返回全0xFF,别只盯软件,先示波器看波形、再看电源完整性——总线问题一半是硬件问题。
原文STM32三大接口怎么选:I2C、SPI、UART