0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

信盈达 2025-11-17 10:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式开发中,最常用的几种通信接口无非就是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_ttxData=0xA5;
  2. HAL_SPI_Transmit(&hspi1,&txData,1,HAL_MAX_DELAY);

从设备接收数据:

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

2.I2C

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

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

  1. uint8_treg=0x00;// 温度寄存器地址
  2. uint8_ttemp;
  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_taudioData[256];
  2. HAL_I2S_Transmit(&hi2s2,audioData,256,HAL_MAX_DELAY);

4.UART

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

示例:STM32 UART 发送字符串:

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

接收数据:

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

三、总结与选型建议

可以用生活类比理解:

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

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

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

    关注

    28

    文章

    1073

    浏览量

    41866
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1866

    浏览量

    99729
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1547

    浏览量

    130447
  • uart
    +关注

    关注

    22

    文章

    1304

    浏览量

    106077
  • I2S
    I2S
    +关注

    关注

    1

    文章

    80

    浏览量

    43870
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    逼真动画展示I2CSPIUART通信过程

    到目前为止,I2CSPIUART等仍然是电子嵌入式设备中最常用的通信协议,本文,我们将剖析这三种协议,让大家清楚、直观的了解它们的功能、
    的头像 发表于 04-12 08:27 1642次阅读
    逼真动画展示<b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>、<b class='flag-5'>UART</b>的<b class='flag-5'>通信</b>过程

    i2c通信协议

    1.1 i2c通信协议通信协议:用来实现数据传输。i2c物理总线:SCL(时钟线) SDA(数据线)i2c
    发表于 03-06 16:15

    SPII2CUART串行总线协议

    串口通讯通信协议UART,以及常用外设通信协议 SPII2C的介绍与他们之间的区别
    发表于 11-30 11:28 96次下载

    SPI、SCI、I2CUART之间的异同

    详细介绍了SPI、SCI、I2CUART几种通信方式的异同便于读者整体了解通信的意义.
    发表于 12-15 14:32 0次下载

    CAN、I2SI2CSPI、SSP总线的介绍和比较

    CAN、I2SI2CSPI、SSP总线的介绍和比较。
    发表于 07-14 16:20 57次下载

    spii2c总线协议对比分析

    通信协议非常适合近距离低速芯片间通信。Philips(for I2C)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准
    发表于 12-06 11:57 3350次阅读

    I2C通信协议应该如何学习

    我最近刚做完I2C通信协议的编写与调试,下面介绍一下我从一开始理解夏老师的程序,修改程序,直到下板调试整个的学习过程,希望对大家学习 I2C 有一定的帮助。一、 分析源代码学习 I2C
    发表于 04-28 08:00 22次下载
    <b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>应该如何学习

    简述UARTSPII2C协议区别

    I2CSPIUART都是常见的低速板级通信协议 ,目前主流的SoC都内置了这些通讯协议的控制器,同样,各种传感器、Touch控制器、指纹
    的头像 发表于 02-17 10:50 3174次阅读
    简述<b class='flag-5'>UART</b>、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b><b class='flag-5'>协议</b>区别

    一文搞懂UARTI2CSPI协议

    UARTI2CSPI都是常见的低速板级通信协议,目前主流的SoC都内置了这些通讯协议的控制器,同样,各种传感器、Touch控制器、指纹模
    的头像 发表于 03-26 09:29 3141次阅读

    UARTSPII2C比较 串口通信介绍

    ,较少用于远距离通信SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议
    的头像 发表于 11-09 18:06 2484次阅读
    <b class='flag-5'>UART</b>、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>比较 串口<b class='flag-5'>通信</b>介绍

    蓝牙串口通讯总线——I2C/SPI/UART

    嵌入式工程师在做串口通信调试工作的时候,会经常用到I2CSPIUART这3条总线,I2CSPI
    的头像 发表于 01-22 09:41 3061次阅读
    蓝牙串口通讯总线——<b class='flag-5'>I2C</b>/<b class='flag-5'>SPI</b>/<b class='flag-5'>UART</b>

    总结usart、uarti2cspi区别及相关知识

    USART、UARTI2CSPI是四种不同的串行通信协议,它们各自具有独特的特点和应用领域
    的头像 发表于 04-10 09:47 3106次阅读
    总结usart、<b class='flag-5'>uart</b>、<b class='flag-5'>i2c</b>、<b class='flag-5'>spi</b>区别及相关知识

    SPII2C通信协议:应用与区别

    本文深入解析了SPII2C这两种通信协议的特点、工作原理和应用场景。SPI适用于高速数据传输,常用于存储器芯片和显示器驱动等领域;I2C
    的头像 发表于 04-22 16:45 3399次阅读

    简单认识I2C通信协议

    I2C(Inter-Integrated Circuit)通信协议是由飞利浦公司(现为恩智浦半导体)开发的一种简单、双向二线制同步串行总线协议。自1982年发布以来,I2C
    的头像 发表于 07-25 18:06 3290次阅读

    SPII2CI2SUART通信协议解释

            在嵌入式开发中,最常用的几种通信接口无非就是SPII2CI2SUART。名字看起来差不多,但应用场景和特性却大不相同。
    的头像 发表于 11-18 10:53 184次阅读