SPI、I2C、I2S、UART:通信协议对比表

描述

在嵌入式开发中,最常用的几种通信接口无非就是 SPI、I2C、I2S、UART。名字看起来差不多,但应用场景和特性却大不相同。很多初学者容易混淆:为什么都叫串行通信,结构却不一样?为什么有的能传音频,有的不能?本文一次梳理清楚。

 

一、通信协议快速对照表

协议全称线数通信方式速率应用场景特点
SPISerial Peripheral Interface4根常用线(MOSI, MISO, SCLK, CS)全双工、主从高速(可达几十 MHz)Flash、传感器、显示屏硬件简单、速率高,但线多,扩展性差
I2CInter-Integrated Circuit2根线(SDA, SCL)半双工、多主多从100 kbps \~ 3.4 MbpsEEPROM、传感器、RTC线少,可挂多设备,但速率低,总线长时稳定性差
I2SInter-IC Sound3\~4根线(SD, WS, SCK, MCLK 可选)同步串行(专用于音频)常见 44.1kHz、48kHz(音频采样率)音频数据传输(DAC、Codec、耳机)专为音频设计,不能传通用数据
UARTUniversal Asynchronous Receiver/Transmitter2根线(TX, RX)异步、点对点常见 9600\~115200 bps,可达 Mbps调试串口、GPS、蓝牙模块硬件简单,广泛使用,但速率低,不支持多机总线

二、协议特点解析与代码示例

1. SPI

  • 点对点的速度王者,主从明确。
  • 常用于 高速传感器、Flash 存储器、LCD 屏幕。
  • 缺点:需要一根片选线控制每个从设备,多设备布线复杂。

示例:STM32 SPI 主机发送数据:

  1. uint8_t txData =0xA5;
  2. HAL_SPI_Transmit(&hspi1,&txData,1, HAL_MAX_DELAY);

从设备接收数据:

  1. uint8_t rxData;
  2. HAL_SPI_Receive(&hspi2,&rxData,1, HAL_MAX_DELAY);

2. I2C

  • 只需两根线,就能挂多个设备,协议层自带地址机制。
  • 常用于 低速传感器、EEPROM、实时时钟(RTC)。
  • 缺点:速率不高,总线电容大时稳定性下降。

示例:STM32 I2C 读取温度传感器数据:

  1. uint8_t reg =0x00;// 温度寄存器地址
  2. uint8_t temp;
  3. HAL_I2C_Master_Transmit(&hi2c1, SENSOR_ADDR,®,1, HAL_MAX_DELAY);
  4. HAL_I2C_Master_Receive(&hi2c1, SENSOR_ADDR,&temp,1, HAL_MAX_DELAY);

3. I2S

  • 名字很像 I2C,但完全不同,这是音频传输专用协议。
  • 常见于 音频 Codec、功放、耳机 DAC。
  • 优点:数据帧结构天然适配音频采样率。
  • 缺点:不能传普通数据,只能用于音频传输。

示例:STM32 I2S 发送音频数据:

  1. uint16_t audioData[256];
  2. HAL_I2S_Transmit(&hi2s2, audioData,256, HAL_MAX_DELAY);

4. UART

  • 最老牌串口,几乎所有 MCU 都支持。
  • 常见于 调试口、蓝牙模块、GPS 模块。
  • 优点:实现简单,应用广泛。
  • 缺点:不支持挂多设备,速率有限。

示例:STM32 UART 发送字符串:

  1. char msg[]="Hello UART!";
  2. HAL_UART_Transmit(&huart1,(uint8_t*)msg, strlen(msg), HAL_MAX_DELAY);

接收数据:

  1. uint8_t rxBuffer[20];
  2. HAL_UART_Receive(&huart1, rxBuffer,20, HAL_MAX_DELAY);

三、总结与选型建议

可以用生活类比理解:

  • SPI → 高速专车:点对点传输快,但线路多。
  • I2C → 公交车:设备多,但速度不快。
  • I2S → 专用地铁线:只跑音频,不拉其它数据。
  • UART → 普通乡间小道:速度一般,但无处不在。

开发中选择通信接口时可参考:

  • 想高速 → SPI
  • 想简单挂多个设备 → I2C
  • 想传音频 → I2S
  • 想通用、兼容性强 → UART
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分