mirror of
https://github.com/espressif/esp-idf.git
synced 2026-08-18 06:35:35 +03:00
docs(i2s): fix some i2s capabilities in programming guide
This commit is contained in:
@@ -3,7 +3,8 @@ I2S
|
||||
|
||||
:link_to_translation:`en:[English]`
|
||||
|
||||
{IDF_TARGET_I2S_NUM:default="1", esp32="2", esp32s3="2"}
|
||||
{IDF_TARGET_I2S_NUM:default="1", esp32="2", esp32s3="2", esp32p4="3"}
|
||||
{IDF_TARGET_I2S_STD_TDM:default="标准和 TDM", esp32="标准", esp32s2="标准"}
|
||||
|
||||
简介
|
||||
----
|
||||
@@ -12,7 +13,7 @@ I2S(Inter-IC Sound,集成电路内置音频总线)是一种同步串行通
|
||||
|
||||
{IDF_TARGET_NAME} 包含 {IDF_TARGET_I2S_NUM} 个 I2S 外设。通过配置这些外设,可以借助 I2S 驱动来输入和输出采样数据。
|
||||
|
||||
标准或 TDM 通信模式下的 I2S 总线包含以下几条线路:
|
||||
{IDF_TARGET_I2S_STD_TDM} 模式下的 I2S 总线包含以下几条线路:
|
||||
|
||||
- **MCLK**:主时钟线。该信号线可选,具体取决于从机,主要用于向 I2S 从机提供参考时钟。
|
||||
- **BCLK**:位时钟线。用于数据线的位时钟。
|
||||
@@ -51,10 +52,12 @@ I2S 文件结构
|
||||
|
||||
**需要包含在 I2S 应用中的公共头文件如下所示:**
|
||||
|
||||
- ``i2s.h``:提供原有 I2S API(用于使用原有驱动的应用)。
|
||||
- ``i2s_std.h``:提供标准通信模式的 API(用于使用标准模式的新驱动程序的应用)。
|
||||
- ``i2s_pdm.h``:提供 PDM 通信模式的 API(用于使用 PDM 模式的新驱动程序的应用)。
|
||||
- ``i2s_tdm.h``:提供 TDM 通信模式的 API(用于使用 TDM 模式的新驱动的应用)。
|
||||
.. list::
|
||||
|
||||
- ``i2s.h``:提供原有 I2S API(用于使用原有驱动的应用)。
|
||||
- ``i2s_std.h``:提供标准通信模式的 API(用于使用标准模式的新驱动程序的应用)。
|
||||
:SOC_I2S_SUPPORTS_PDM: - ``i2s_pdm.h``:提供 PDM 通信模式的 API(用于使用 PDM 模式的新驱动程序的应用)。
|
||||
:SOC_I2S_SUPPORTS_TDM: - ``i2s_tdm.h``:提供 TDM 通信模式的 API(用于使用 TDM 模式的新驱动的应用)。
|
||||
|
||||
.. note::
|
||||
|
||||
@@ -72,27 +75,14 @@ I2S 时钟
|
||||
时钟源
|
||||
^^^^^^
|
||||
|
||||
- :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_DEFAULT`:默认 PLL 时钟。
|
||||
.. list::
|
||||
|
||||
.. only:: SOC_I2S_SUPPORTS_PLL_F160M
|
||||
|
||||
- :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_PLL_160M`:160 MHz PLL 时钟。
|
||||
|
||||
.. only:: SOC_I2S_SUPPORTS_PLL_F120M
|
||||
|
||||
- :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_PLL_120M`:120 MHz PLL 时钟。
|
||||
|
||||
.. only:: SOC_I2S_SUPPORTS_PLL_F96M
|
||||
|
||||
- :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_PLL_96M`:96 MHz PLL 时钟。
|
||||
|
||||
.. only:: SOC_I2S_SUPPORTS_PLL_F240M
|
||||
|
||||
- :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_PLL_240M`:240 MHz PLL 时钟。
|
||||
|
||||
.. only:: SOC_I2S_SUPPORTS_APLL
|
||||
|
||||
- :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_APLL`:音频 PLL 时钟,在高采样率应用中比 ``I2S_CLK_SRC_PLL_160M`` 更精确。其频率可根据采样率进行配置,但如果 APLL 已经被 EMAC 或其他通道占用,则无法更改 APLL 频率,驱动程序将尝试在原有 APLL 频率下工作。如果原有 APLL 频率无法满足 I2S 的需求,时钟配置将失败。
|
||||
- :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_DEFAULT`:默认 PLL 时钟。
|
||||
:SOC_I2S_SUPPORTS_PLL_F160M: - :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_PLL_160M`:160 MHz PLL 时钟。
|
||||
:SOC_I2S_SUPPORTS_PLL_F120M: - :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_PLL_120M`:120 MHz PLL 时钟。
|
||||
:SOC_I2S_SUPPORTS_PLL_F96M: - :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_PLL_96M`:96 MHz PLL 时钟。
|
||||
:SOC_I2S_SUPPORTS_PLL_F240M: - :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_PLL_240M`:240 MHz PLL 时钟。
|
||||
:SOC_I2S_SUPPORTS_APLL: - :cpp:enumerator:`i2s_clock_src_t::I2S_CLK_SRC_APLL`:音频 PLL 时钟,在高采样率应用中比 ``I2S_CLK_SRC_PLL_160M`` 更精确。其频率可根据采样率进行配置,但如果 APLL 已经被 EMAC 或其他通道占用,则无法更改 APLL 频率,驱动程序将尝试在原有 APLL 频率下工作。如果原有 APLL 频率无法满足 I2S 的需求,时钟配置将失败。
|
||||
|
||||
时钟术语
|
||||
^^^^^^^^
|
||||
@@ -125,8 +115,8 @@ ESP32-C6 I2S 0 I2S 0 无 I2S 0 无 无
|
||||
ESP32-S3 I2S 0/1 I2S 0 I2S 0 I2S 0/1 无 无
|
||||
ESP32-H2 I2S 0 I2S 0 无 I2S 0 无 无
|
||||
ESP32-P4 I2S 0~2 I2S 0 I2S 0 I2S 0~2 无 无
|
||||
ESP32-C5 I2S 0 I2S 0 I2S 0 I2S 0 无 无
|
||||
ESP32-C61 I2S 0 I2S 0 I2S 0 I2S 0 无 无
|
||||
ESP32-C5 I2S 0 I2S 0 无 I2S 0 无 无
|
||||
ESP32-C61 I2S 0 I2S 0 无 I2S 0 无 无
|
||||
========= ======== ======== ======== ======== ======== ==========
|
||||
|
||||
标准模式
|
||||
@@ -841,7 +831,7 @@ STD RX 模式
|
||||
全双工
|
||||
^^^^^^
|
||||
|
||||
全双工模式可以在 I2S 端口中同时注册 TX 和 RX 通道,同时通道共享 BCLK 和 WS 信号。目前,STD 和 TDM 通信模式支持以下方式的全双工通信,但不支持 PDM 全双工模式,因为 PDM 模式下 TX 和 RX 通道的时钟不同。
|
||||
全双工模式可以在 I2S 端口中同时注册 TX 和 RX 通道,同时通道共享 BCLK 和 WS 信号。目前,{IDF_TARGET_I2S_STD_TDM} 通信模式支持以下方式的全双工通信,但不支持 PDM 全双工模式,因为 PDM 模式下 TX 和 RX 通道的时钟不同。
|
||||
|
||||
请注意,一个句柄只能代表一个通道,因此仍然需要对 TX 和 RX 通道逐个进行声道和时钟配置。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user