ESP32的I2S引脚及支持的音频标准使用说明

ESP32 I2S 接口

ESP32 有 2 个标准 I2S 接口。这 2 个接口可以以主机或从机模式,在全双工或半双工模式下工作,并且可被配置为 8/16/32/48/64-bit 的输入输出通道,支持频率从 10 kHz 到 40 MHz 的 BCK 时钟。当 1 个或 2 个 被配置为主机模式时,主机时钟可以输出到外部 DAC/CODEC。

2 个 I2S 接口都有专用的 DMA 控制器。支持 PDM 和 BT PCM 接口。
PDM可直接接入I2S,但只能接入I2S0。
用于串行立体声数据的输入输出,并行LCD 数据的输出,camera 并行数据的输入。

I2S第0通道接口

信号 管脚
I2S0I_DATA_in0~15 I2S除I2S_CLK,均支持映射(切换)到任意 GPIO 管脚
I2S0O_BCK_in
I2S0O_WS_in
I2S0I_BCK_in
I2S0I_WS_in
I2S0I_H_SYNC
I2S0I_V_SYNC
I2S0I_H_ENABLE
I2S0O_BCK_out
I2S0O_WS_out
I2S0I_BCK_out
I2S0I_WS_out
I2S0O_DATA_out0~23

I2S第1通道接口

信号 管脚
I2S1I_DATA_in0~15 I2S除I2S_CLK,均支持映射(切换)到任意 GPIO 管脚
I2S1O_BCK_in
I2S1O_WS_in
I2S1I_BCK_in
I2S1I_WS_in
I2S1I_H_SYNC
I2S1I_V_SYNC
I2S1I_H_ENABLE
I2S1O_BCK_out
I2S1O_WS_out
I2S1I_BCK_out
I2S1I_WS_out
I2S1O_DATA_out0~23
信号 管脚
I2S0_CLK 仅可通过GPIO0、U0RXD、或 U0TXD
I2S1_CLK 仅可通过GPIO0、U0RXD、或 U0TXD

注:I2S0_CLK 和 I2S1_CLK 仅可通过 IOMUX 映射至 GPIO0、U0RXD (GPIO3) 或U0TXD (GPIO1),选择 GPIO 功能CLK_OUT1、CLK_OUT2 或 CLK_OUT3。这个CLK是高速CLK,主要是用于RGB接口的LCD液晶显示屏。每组I2S的DATA有0-23个信号,用于RGB接口液晶显示屏时,可连接18位或24位的LCD液晶显示屏。

12.4 I2S 模式

ESP32 I2S 模块内置数据 A 律压缩/解压缩模块,用于对接收到的音频数据进行 A 律缩/解压缩操作。如果要使用 A 律缩/解压缩模块,需要将 I2S_CONF1_REG 寄存器的 RX_PCM_BYPASS 比特和 TX_PCM_BYPASS 比特清零。

12.4.1 支持的音频标准

I2S 模式下,BCK 为串行时钟;WS 为通道选择信号,用于表示左右声道的切换;SD 为串行数据信号,传输音频数据。WS 信号和 SD 信号在 BCK 的下降沿发生变化,并在 BCK 的上升沿采样 SD 信号。如果将寄存器I2S_CONF_REG 的 I2S_RX_RIGHT_FIRST 比特和 I2S_TX_RIGHT_FIRST 比特都置 1,表示 I2S 模块首先接收和发送的是右声道数据,否则为首先接收和发送的是左声道数据。

12.4.1.1 Philips 标准

在这里插入图片描述

图 12­3. Philips 标准

如图 12-3 所示,在 Philips 标准下,在 BCK 的下降沿,WS 信号先于 SD 信号一个 BCK 时钟周期开始变化,即WS 信号从当前通道数据的第一个位之前的一个时钟开始有效,并在当前通道数据发送结束前一个 BCK 时钟周期变化。SD 信号线首先传输音频数据的最高有效位。如果分别将寄存器 I2S_CONF_REG 的I2S_RX_MSB_SHIFT 比特和 I2S_TX_MSB_SHIFT 比特置 1,I2S 模块接收数据和发送数据将使用 Philips 标准。

12.4.1.2 MSB 对齐标准

在这里插入图片描述

图 12­4. MSB 对齐标准

如图 12-4 所示,MSB 对齐标准下,在 BCK 下降沿,WS 信号和 SD 信号同时变化。WS 持续到当前通道数据发送结束,SD 信号线上首先传输音频数据的最高位。如果寄存器 I2S_CONF_REG 的 I2S_RX_MSB_SHIFT 比特和 I2S_TX_MSB_SHIFT 比特清零,则 I2S 模块接收数据和发送数据将使用 MSB 对齐标准。

12.4.1.3 PCM 标准

在这里插入图片描述

图 12­5. PCM 标准

如图 12-5 所示,在 PCM 标准的短帧同步模式下,在 BCK 的下降沿,WS 信号先于 SD 信号一个 BCK 时钟周期开始变化,即 WS 信号从当前通道数据的第一个位之前的一个时钟开始有效,并持续 1 个 BCK 时钟周期。
SD 信号线上首先传输音频数据的最高位。如果将寄存器 I2S_CONF_REG 的 I2S_RX_SHORT_SYNC 比特和I2S_TX_SHORT_SYNC 比特置 1,那么 I2S 模块接收数据和发送数据将使用短帧同步模式。

相关推荐

  1. <span style='color:red;'>音频</span><span style='color:red;'>I</span><span style='color:red;'>2</span><span style='color:red;'>S</span>

    音频I2S

    2024-07-13 12:28:03      47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 12:28:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 12:28:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 12:28:03       58 阅读
  4. Python语言-面向对象

    2024-07-13 12:28:03       69 阅读

热门阅读

  1. 【微服务】Spring Cloud中如何使用Eureka

    2024-07-13 12:28:03       21 阅读
  2. 视觉定位是否比GPS更精确?

    2024-07-13 12:28:03       21 阅读
  3. string的模拟实现

    2024-07-13 12:28:03       15 阅读
  4. 源码编译安装LAMP

    2024-07-13 12:28:03       23 阅读
  5. 益铭祥元宇宙

    2024-07-13 12:28:03       28 阅读
  6. Jupyter Notebook基础:用IPython实现动态编程

    2024-07-13 12:28:03       28 阅读
  7. LCP 61. 气温变化趋势

    2024-07-13 12:28:03       25 阅读
  8. codeforce 954 div3 G2题

    2024-07-13 12:28:03       20 阅读
  9. elk部署springboot

    2024-07-13 12:28:03       26 阅读
  10. 音频筑基:入门50问

    2024-07-13 12:28:03       28 阅读
  11. 永恒之蓝:一场网络风暴的启示

    2024-07-13 12:28:03       30 阅读
  12. TensorFlow系列:第三讲:MobileNetV2使用介绍

    2024-07-13 12:28:03       24 阅读
  13. MySQL上亿数据查询优化:实践与技巧

    2024-07-13 12:28:03       20 阅读