• 音频功放系列音频功放系列'
  • 为客户提供订制化需求服务为客户提供订制化需求服务'
  • 电源管理芯片电源管理芯片'
  • 网站首页

  • 产品中心

  • 应用方案

  • 电话咨询

  • 技术资讯
    SPI、I2C、I2S、UART:通信协议解释
    来源:admin  日期:11-18  栏目:技术资讯

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

     

    一、通信协议快速对照表

    协议 全称 线数 通信方式 速率 应用场景 特点
    SPI Serial Peripheral Interface 4根常用线(MOSI, MISO, SCLK, CS) 全双工、主从 高速(可达几十 MHz) Flash、传感器、显示屏 硬件简单、速率高,但线多,扩展性差
    I2C Inter-Integrated Circuit 2根线(SDA, SCL) 半双工、多主多从 100 kbps \~ 3.4 Mbps EEPROM、传感器、RTC 线少,可挂多设备,但速率低,总线长时稳定性差
    I2S Inter-IC Sound 3\~4根线(SD, WS, SCK, MCLK 可选) 同步串行(专用于音频) 常见 44.1kHz、48kHz(音频采样率) 音频数据传输(DAC、Codec、耳机) 专为音频设计,不能传通用数据
    UART Universal Asynchronous Receiver/Transmitter 2根线(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);
    网站首页 产品分类 电话咨询 联系我们