【笔记】I2S协议是什么?

I2S是一种由飞利浦公司制定的音频数据传输标准,常用于数字音频设备。它包括串行时钟SCK、字段选择信号WS(声道切换)和串行数据SD。I2S协议定义了硬件接口和数据格式,如SCK的频率与音频数据位数相关,WS用于区分左右声道,而SD则传输二进制音频数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天在搞ESP32的btAudio库,接触到了I2S,简单做个笔记。

I2S协议的介绍

I2S(Inter—IC Sound)总线, 又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。

这里代入I2C总线来理解就可以了,说白了就是一种数据传输的通讯协议,基本上类似于I2C,只不过传输的是S(Sound)。
本质就是用数值的方式将模拟信号存储下来,再通过总线传输出去。
在这里插入图片描述

I2S协议有什么

在飞利浦公司的I2S标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。
I2S总线的3个信号线:

SCK: (continuous serial clock) 串行时钟
串行时钟SCK,也叫位时钟BCLK。对应数字音频的每一位数据,SCK都有1个脉冲。SCK的频率 = 声道数 * 采样频率 * 采样位数。

WS: (word select) 字段(声道)选择
字段选择信号WS,也叫LRCLK,用于切换左右声道的数据。WS的频率 = 采样频率。 字段选择信号WS表明了正在被传输的声道。I2S
Philips标准WS信号的电平含义如下: WS为0,表示正在传输的是左声道的数据; WS为1,表示正在传输的是右声道的数据。

SD: (serial data) 串行数据

串行数据SD,就是用二进制补码表示的音频数据。I2S串行数据在传输的时候,由高位(MSB)到低位(LSB)依次进行传输。

I2S2ext_SD和I2S3ext_SD

用于控制I2S全双工模式的附加引脚。

主时钟MCLK
一般还有MCLK,主时钟。是采样频率的256倍或384倍。有时为了使系统间能够更好地同步,当I2S配置为主模式(并且SPI_I2SPR寄存器中的MCKOE位置1)时,使用此时钟,该时钟输出频率
256×fs,fs即音频信号采样频率(fs)。

即:

串行时钟SCLK,也叫位时钟(BCLK)
帧时钟LRCK,(也称WS),用于切换左右声道的数据
串行数据SDATA,音频数据。

参考自 I2S的理解

I2S 百度百科

I2S时序图看这

### 关于I2S协议的教程和开发指南 #### I2S协议简介 I2S(Inter-IC Sound Bus)是一种用于音频设备之间传输数字声音信号的标准总线协议。它由Philips公司开发,广泛应用于音频处理领域,例如DAC(数模转换器)、ADC(模数转换器)以及各种音效处理器。 #### I2S协议的核心特性 I2S协议定义了一种同步串行通信方式,通常包括以下几个主要信号: - **BCLK (Bit Clock)**:位时钟信号,控制每一位数据的传输速率。 - **LRCK (Left/Right Clock)**:声道选择信号,区分左声道和右声道的数据流。 - **SDATA (Serial Data)**:实际传输的音频数据信号[^1]。 这些信号共同协作完成立体声或多通道音频数据的传输。 #### 数据结构设计 在嵌入式系统中,为了高效管理I2S接收到的数据,常会采用DMA技术来减少CPU负载。例如,在某些项目中可能看到如下代码片段: ```c /* 定义全局变量 */ uint32_t dma[4]; // DMA缓冲区,存储从硬件接收的数据 uint32_t val24; // 存储24位原始采样值 int val32; // 将val24扩展至32位后的结果 ``` 上述代码展示了如何利用DMA机制自动将I2S采集到的数据存放到`dma[]`数组中,而无需主程序频繁干预[^4]。 #### 配置与初始化流程 针对具体的微控制器平台,配置I2S外设一般涉及以下方面: 1. 设置时钟源及时钟分频因子以匹配目标采样率; 2. 配置帧格式(标准模式、MSB优先或LSB优先等); 3. 启用DMA功能以便连续捕获大量数据样本。 虽然这里未直接提及I2S的具体操作细节,但从其他相似接口如I2C的经验来看,官方文档通常是最佳参考资料之一。例如Linux内核中的`Documentation/i2c/`目录提供了详尽的技术指导;而对于工具链构建,则可参考[i2c-tools](https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/)的相关资料[^2]。 尽管如此,由于每款MCU厂商提供的SDK差异较大,建议查阅对应型号的手册或者应用笔记获取精确参数设定方法。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创客阿蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值