news 2026/5/4 17:22:02

IIS音频协议核心技术

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IIS音频协议核心技术

IIS(Inter-IC Sound,也常写作 I2S)是一种由飞利浦公司(现恩智浦)制定的数字音频串行接口标准,专门用于在集成电路之间传输高质量的数字音频数据。它广泛应用于音频编解码器(CODEC)、数字信号处理器(DSP)、微控制器(如STM32)和现场可编程门阵列(FPGA)等设备间的音频数据传输。

一、 IIS协议核心详解

IIS协议主要定义了音频数据的传输时序和信号线,其核心设计目标是简化音频数据的串行传输,并实现左右声道的分离。

1. 基本信号线

一个完整的IIS接口通常包含以下三根核心信号线(有时会增加一根主时钟线):

信号线名称全称方向描述
SCLK/BCLKSerial Clock / Bit Clock主->从位时钟,用于同步每一位数据的传输。其频率 = 采样频率 × 位数 × 声道数。
LRCK/WSLeft/Right Channel Clock / Word Select主->从声道选择时钟(字选择)。用于指示当前传输的是左声道(通常为低电平)还是右声道(通常为高电平)数据。其频率等于音频采样频率。
SDSerial Data双向串行音频数据。音频数据以二进制补码形式,最高位(MSB)在前进行传输。
MCLKMaster Clock主->从主时钟(可选)。为音频CODEC等设备提供系统参考时钟,通常是采样频率的256倍或384倍,以保障内部模数/数模转换的精度。

2. 数据传输时序与模式

数据传输在SCLK的下降沿或上升沿进行,具体取决于配置。根据LRCK和SD信号的相对时序,IIS有三种主要的数据传输模式:

模式标准IIS模式左对齐模式右对齐模式
时序图特征LRCK变化后,延迟1个SCLK周期,SD数据开始传输。LRCK变化的同时,SD数据开始传输。SD数据在LRCK周期结束前完成传输。
数据对齐数据在LRCK边沿后第二个SCLK上升沿开始。数据与LRCK边沿对齐。数据尾部与LRCK边沿对齐。
常见应用最通用,飞利浦标准。部分CODEC。部分DSP或旧式设备。

标准IIS模式时序要点

  • LRCK(WS)信号指示当前传输的声道。一个LRCK周期对应一个声道的数据字(Word)。
  • 数据总是在LRCK发生跳变(表示声道切换)后的第二个SCLK上升沿开始传输(对于部分设备可能是下降沿)。
  • 数据字(Word)的长度可以配置(如16位、24位、32位),但传输时可能占用固定的时间槽。例如,配置为24位数据时,在32位的时间槽内传输,高位在前,低位在后,未使用的低位在传输周期内补零。

3. 主从模式

IIS接口设备可以配置为主模式(Master)或从模式(Slave),这决定了由谁提供时钟信号:

  • 主模式设备:负责产生并输出SCLK和LRCK(以及可选的MCLK)时钟信号。
  • 从模式设备:接收外部提供的SCLK和LRCK时钟信号,并依据此时钟来发送或接收SD数据。

例如,在一个由STM32微控制器(主)连接INMP441麦克风(从)的系统中,STM32需要配置其IIS接口为主模式,生成BCLK和WS时钟,INMP441则作为从设备,在STM32提供的时钟下输出数字音频数据。

二、 IIS协议实现方法

IIS协议的实现依赖于硬件控制器和正确的软件配置或逻辑设计。

1. 在微控制器(如STM32)上的实现

以STM32通过IIS采集INMP441麦克风音频数据为例,通常结合DMA以减轻CPU负担并确保实时性。

关键配置步骤:

  1. 初始化IIS外设:配置IIS为主模式发射器(若驱动扬声器)或接收器(若接收麦克风数据)。设置数据格式(16/24/32位)、音频采样率(如16kHz)、时钟极性等。
  2. 配置DMA:将IIS的数据寄存器与一个内存缓冲区通过DMA通道关联。设置为循环模式,使得缓冲区填满后自动从头开始,实现连续采集。
  3. 使能IIS和DMA:启动DMA传输,然后使能IIS外设,开始接收数据。
// 示例:STM32 HAL库 IIS接收初始化代码框架(部分关键代码) I2S_HandleTypeDef hi2s2; DMA_HandleTypeDef hdma_i2s2_rx; // 1. IIS外设初始化 hi2s2.Instance = SPI2; // 假设IIS复用至SPI2 hi2s2.Init.Mode = I2S_MODE_MASTER_RX; // 主模式接收 hi2s2.Init.Standard = I2S_STANDARD_PHILIPS; // 标准IIS模式 hi2s2.Init.DataFormat = I2S_DATAFORMAT_24B; // 24位数据 hi2s2.Init.MCLKOutput = I2S_MCLKOUTPUT_DISABLE; // 不输出MCLK hi2s2.Init.AudioFreq = I2S_AUDIOFREQ_16K; // 16kHz采样率 hi2s2.Init.CPOL = I2S_CPOL_LOW; // 时钟极性 HAL_I2S_Init(&hi2s2); // 2. 关联DMA __HAL_LINKDMA(&hi2s2, hdmarx, hdma_i2s2_rx); // 配置DMA:从IIS数据寄存器到内存,半字/字传输,循环模式 HAL_DMA_Init(&hdma_i2s2_rx); // 3. 启动DMA接收 uint32_t audio_buffer[BUFFER_SIZE]; HAL_I2S_Receive_DMA(&hi2s2, audio_buffer, BUFFER_SIZE);

数据传输瓶颈与优化:如参考案例所述,通过UART将实时音频数据发送到上位机时,需注意UART波特率可能成为瓶颈。例如,16位、16kHz立体声音频的数据率为16bit * 2 * 16000Hz = 512kbps,若使用115200bps的UART,必然丢失数据。解决方案包括提高UART波特率(如到921600bps)、使用USB或网络传输,或在MCU端进行压缩、降采样等预处理。

2. 在FPGA/Verilog中的实现

在FPGA中实现IIS接收端,本质上是设计一个符合IIS时序的数字逻辑电路,将串行数据流转换为并行的PCM音频数据。

核心设计思路:

  1. 时钟域处理:IIS的SCLK和LRCK通常由外部主设备提供,属于FPGA的外部异步时钟。需要使用寄存器进行同步处理,避免亚稳态。
  2. 数据恢复:在Verilog中,通常检测SCLK的边沿(如上升沿),并在该时刻对SD数据进行采样。
  3. 串并转换与对齐:根据LRCK的状态(左/右声道),将连续采样的位数据拼接成完整的音频数据字。需要特别注意标准IIS模式下数据起始的1个SCLK延迟。
// 示例:Verilog IIS接收器核心逻辑代码框架 module iis_receiver ( input wire mclk, // 主时钟(可选,用于内部逻辑) input wire sclk, // 位时钟(来自外部主设备) input wire lrck, // 字选择时钟 input wire sdata, // 串行数据 output reg [23:0] pcm_data_left, // 并行左声道PCM输出 output reg [23:0] pcm_data_right, // 并行右声道PCM输出 output reg data_valid ); reg [4:0] bit_counter; // 假设接收24位数据,用5位计数器(0-23) reg [23:0] shift_reg; reg lrck_d1; always @(posedge sclk) begin lrck_d1 <= lrck; // 检测lrck边沿,表示一个声道数据开始或结束 if (lrck != lrck_d1) begin bit_counter <= 5'd0; // 开始新的声道数据计数 shift_reg <= 24'd0; data_valid <= 1'b0; end else begin if (bit_counter < 5'd24) begin // 标准IIS模式:第一个SCLK不采样,从第二个开始 if (!(lrck != lrck_d1 && bit_counter == 0)) begin shift_reg[23-bit_counter] <= sdata; // MSB first end bit_counter <= bit_counter + 1; end // 当计数到24位(或配置的字长)时,锁存数据并产生有效信号 if (bit_counter == 5'd23) begin if (lrck_d1 == 1'b0) begin // 根据lrck电平判断声道 pcm_data_left <= shift_reg; end else begin pcm_data_right <= shift_reg; end data_valid <= 1'b1; end end end endmodule

此Verilog模块实现了IIS串行数据到并行PCM数据的转换。关键点在于准确处理LRCK边沿后的延迟,并正确计数以捕获完整的数据字。

三、 相关协议对比

IIS常用于芯片间短距离板级通信。其他常见音频协议包括:

  • PCM:与IIS类似,但定义更宽泛,LRCK(帧同步FS)信号的位置和极性更灵活,常用于电话系统。
  • PDM:使用单线传输1位高速数据流,通过密度表示幅度,常用于数字麦克风,接口更简单但需要后端数字滤波器。
  • S/PDIF:一种单线串行传输协议,同时传输音频数据和时钟,并加入纠错和状态信息,用于消费电子设备间长距离数字音频传输。

参考来源

  • STM32 使用IIS实现INMP441模块全速音频采样(附python上位机)
  • 基于verilog实现IIS音频数据接收
  • 音频常用协议说明 IIS TDM PDM PCM SPDIF协议解析
  • 【通信协议】I2S/IIS总线介绍
  • 音频硬件基础
  • 数字音频接口之I2S总线协议详解
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 15:42:25

如何为iPad mini 2降级iOS 10.3.3:终极性能恢复完整指南

如何为iPad mini 2降级iOS 10.3.3&#xff1a;终极性能恢复完整指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit …

作者头像 李华
网站建设 2026/5/2 15:37:28

【花雕动手做】重塑 AI 端侧智能:ESP32-S3 如何定义低成本具身智能的云边端协同标准?

引言:当大模型遇见二十元的芯片 2026年的AI世界,大模型正以空前速度渗透每一个数字角落。然而,一个根本矛盾始终悬而未决:当AI需要“走出屏幕、进入物理世界”时——让机器人在客厅里听懂你的话、让桌面助手看清你的手势——我们真的需要为每个设备配备一台价值数千元的高…

作者头像 李华
网站建设 2026/5/2 15:28:05

对比观察不同模型在代码生成任务上的效果与token消耗

对比观察不同模型在代码生成任务上的效果与token消耗 1. 实验设计与执行方法 为评估不同模型在代码生成任务上的表现&#xff0c;我们设计了一个简单的Python函数生成实验。任务要求模型根据自然语言描述生成一个计算斐波那契数列的函数。我们通过Taotoken平台统一调用多个模…

作者头像 李华
网站建设 2026/5/2 15:23:14

WaveTools鸣潮工具箱:终极免费工具箱解锁游戏新体验 [特殊字符]

WaveTools鸣潮工具箱&#xff1a;终极免费工具箱解锁游戏新体验 &#x1f680; 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 你是否曾经因为《鸣潮》游戏卡顿而烦恼&#xff1f;是否因为多个账号切换繁琐…

作者头像 李华