I2S

示例列表

本章介绍 I2S 示例的详细信息。RTL87x2G 为 I2S 外设提供以下示例。

功能概述

I2S 接口可以支持 I2S、左对齐 (Left-Justified)、PCM 等音频协议。 I2S 可以在 GDMA 模式或 FIFO 模式下操作。 在 GDMA 模式下,根据传输数据的量设置缓冲区大小,或者在 FIFO 模式下直接访问 I2S FIFO 来进行数据的传输和接收。 建议通过 GDMA 自动传输音频数据,因为这样可以减少中断的数量并提高效率。

特性列表

  • 支持最多 2 个 I2S 。

  • 可配置的 BCLK 和 LRCK 时钟频率。

  • 支持主设备模式和从设备模式。

  • 支持 16/20/24/32 位数据长度。

  • 支持 16/20/24/32 位通道长度。

  • 支持中断或轮询模式操作。

  • 支持 GDMA 传输。

时钟分频

  • 根据以下公式计算 BCLK 的分数分频器: BCLK = XTAL 40MHz * (I2S_BClockNi / I2S_BClockMi)

    • 示例:对于 40MHz XTAL 时钟源生成 12.288MHz BCLK 的情况,建议使用 I2S_BClockNi = 192I2S_BClockMi = 625 的设置。

    • 请注意,由于时钟源来自 40MHz XTAL ,实际中的 BCLK 将是由 10MHz 和 13.33MHz 组成的抖动时钟。

  • 根据以下公式为 LRCK 设置偶数位整数分频器: LRCK = BCLK / (I2S_BClockDiv + 1)

    • 其中 I2S_BClockDiv 可以通过以下公式计算: I2S_BClockDiv = (channel width * channel number) - 1

    • 对于 2 个通道和 32 位通道宽度,推荐的时钟分频器设置如下所示。

I2S Clock Divider

BCLK Frequency

Clock Source

I2S_BClockNi

I2S_BClockMi

I2S_BClockDiv

Sampling Rate

0.512 MHz

XTAL 40MHz

8

625

63

8 KHz

0.768 MHz

XTAL 40MHz

12

625

63

12 KHz

1.024 MHz

XTAL 40MHz

16

625

63

16 KHz

1.536 MHz

XTAL 40MHz

24

625

63

24 KHz

2.048 MHz

XTAL 40MHz

32

625

63

32 KHz

3.072 MHz

XTAL 40MHz

48

625

63

48 KHz

6.144 MHz

XTAL 40MHz

96

625

63

96 KHz

12.288 MHz

XTAL 40MHz

192

625

63

192 KHz

2.8224 MHz

XTAL 40MHz

441

6250

63

44.1 KHz

5.6448 MHz

XTAL 40MHz

441

3125

63

88.2 KHz

0.7056 MHz

XTAL 40MHz

441

25000

63

11.025 KHz

1.4112 MHz

XTAL 40MHz

441

12500

63

22.05 KHz

I2S 数据格式

I2S 数据格式分为 I2S 、左对齐 (Left-Justified)、PCM_A 和 PCM_B 格式,可通过 I2S_InitTypeDef::I2S_TxDataFormat 进行设置。

数据格式如图所示:

../../../../../_images/i2s_format.png

I2S 格式

../../../../../_images/i2s_left_justified.png

I2S 左对齐格式

../../../../../_images/i2s_PCM_A.png

I2S PCM_A 格式

../../../../../_images/i2s_PCM_B.png

I2S PCM_B 格式