几种常见的I2S数据格式

I2S有4个主要信号:

  1. SCLK:串行时钟,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率=2×采样频率×采样位数 
  2. LRCK:帧时钟,用于切换左右声道的数据。LRCK的频率=采样频率。
  3. SDATA:串行数据,就是用二进制补码表示的音频数据
  4. MCLK:主时钟,也叫系统时钟(Sys Clock)。为了使系统间能够更好地同步,MCLK的频率= 256倍或384倍采样频率。

随着技术的发展,在统一的 I2S接口下,出现了多种不同的数据格式。根据SDATA数据相对于LRCK和SCLK的位置不同分为:

  • 左对齐(较少使用)
  • I2S格式(即飞利浦规定的格式)
  • 右对齐(也叫日本格式、普通格式)。

这些格式的具体描述如下。

24位左对齐格式

技术分享

24/16位I2S格式

技术分享    对于这种标准I2S格式的信号,无论有多少位有效数据,数据的最高位总是出现在LRCK变化(也就是一帧开始)后的第2个SCLK脉冲处。这就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位。这种同步机制使得数字音频设备的互连更加方便,而且不会造成数据错位。

 

24位右对齐格式

技术分享

 

20位右对齐格式

技术分享
 

18位右对齐格式

技术分享

 

16位右对齐格式

技术分享

由上述数据格式图可知:

对于左/右对齐格式:LRCK为“1”表示正在传输的是左声道的数据,为“0”则表示正在传输的是右声道的数据;

对于标准I2S格式:LRCK为“0”表示正在传输的是左声道的数据,为“1”则表示正在传输的是右声道的数据。

综上为了保证数字音频信号的正确传输,发送端和接收端应该采用相同的数据格式和长度。当然,对标准I2S格式来说数据长度可以不同。


I2S(Inter-IC Sound Bus)接口是一种广泛用于数字音频设备之间传输音频数据的总线标准。在音频处理中,采样频率(Fs)是指每秒钟对声音信号进行采样的次数,通常以赫兹(Hz)为单位[^2]。为了保证音频质量并满足不同应用场景的需求,I2S接口支持多种常见的采样频率值。 以下是I2S接口常用的音频采样频率: - **8 kHz**:这是电话通信中最基本的采样频率,适用于语音通话等低带宽需求的应用。 - **16 kHz**:相较于8kHz,提供更好的语音清晰度,常用于高清语音通信和语音识别场景。 - **22.05 kHz**:该频率是CD音频标准的一半,适合播放音乐和广播内容,但使用较少。 - **44.1 kHz**:这是CD音频的标准采样频率,广泛应用于音乐播放、录音等领域,能够覆盖人耳听觉范围内的所有频率。 - **48 kHz**:视频和数字音频领域常用的标准采样频率,如DVD音频、蓝光音频以及许多数字音频工作站(DAW)默认设置。 - **96 kHz** 及 **192 kHz**:这些高采样频率用于高分辨率音频(Hi-Res Audio),可提供比CD音质更精细的声音细节,常见于专业录音和高端音频播放设备中。 对于具体的I2S接口实现,其支持的采样频率可能还取决于硬件设计和主控芯片的能力。在实际应用中,用户可以通过配置寄存器或选择适当的时钟源来设定所需的采样频率。 ### 示例代码 以下是一个简单的示例代码片段,展示了如何在嵌入式系统中配置I2S接口以设置特定的采样频率(假设使用的是ESP32平台): ```c #include "driver/i2s.h" void configure_i2s(int sample_rate) { i2s_config_t i2s_config = { .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX), .sample_rate = sample_rate, // 设置采样率 .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT, .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, .communication_format = I2S_COMM_FORMAT_I2S_MSB, .dma_buf_count = 8, .dma_buf_len = 64, .use_apll = false }; i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL); } // 调用函数设置44.1kHz采样率 configure_i2s(44100); ``` 上述代码定义了一个`configure_i2s`函数,允许通过传入不同的采样频率参数来动态调整I2S接口的工作模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值