mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
feat(esp_driver_i2s): support clk tree source management across I2S components
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2020-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -324,6 +324,28 @@ static inline void i2s_ll_rx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
|
||||
hw->clkm_conf.clka_en = (src == I2S_CLK_SRC_APLL) ? 1 : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get TX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current TX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_tx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
return (hw->clkm_conf.clka_en) ? (i2s_clock_src_t)I2S_CLK_SRC_APLL : (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get RX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current RX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_rx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
return (hw->clkm_conf.clka_en) ? (i2s_clock_src_t)I2S_CLK_SRC_APLL : (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set I2S tx bck div num
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -269,6 +269,38 @@ static inline void i2s_ll_rx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get TX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current TX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_tx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
switch (hw->tx_clkm_conf.tx_clk_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get RX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current RX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_rx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
switch (hw->rx_clkm_conf.rx_clk_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set I2S tx bck div num
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2024-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -289,6 +289,42 @@ static inline void i2s_ll_rx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get TX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current TX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_tx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
(void)hw;
|
||||
switch (PCR.i2s_tx_clkm_conf.i2s_tx_clkm_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_240M;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get RX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current RX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_rx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
(void)hw;
|
||||
switch (PCR.i2s_rx_clkm_conf.i2s_rx_clkm_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_240M;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set I2S tx bck div num
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -287,6 +287,42 @@ static inline void i2s_ll_rx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get TX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current TX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_tx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
(void)hw;
|
||||
switch (PCR.i2s_tx_clkm_conf.i2s_tx_clkm_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_240M;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get RX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current RX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_rx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
(void)hw;
|
||||
switch (PCR.i2s_rx_clkm_conf.i2s_rx_clkm_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_240M;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set I2S tx bck div num
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2024-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -290,6 +290,42 @@ static inline void i2s_ll_rx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get TX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current TX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_tx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
(void)hw;
|
||||
switch (PCR.i2s_tx_clkm_conf.i2s_tx_clkm_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_120M;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get RX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current RX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_rx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
(void)hw;
|
||||
switch (PCR.i2s_rx_clkm_conf.i2s_rx_clkm_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_120M;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set I2S tx bck div num
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -287,6 +287,42 @@ static inline void i2s_ll_rx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get TX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current TX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_tx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
(void)hw;
|
||||
switch (PCR.i2s_tx_clkm_conf.i2s_tx_clkm_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_96M;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_64M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get RX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current RX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_rx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
(void)hw;
|
||||
switch (PCR.i2s_rx_clkm_conf.i2s_rx_clkm_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_96M;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_64M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set I2S tx bck div num
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -291,6 +291,40 @@ static inline void i2s_ll_rx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get TX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current TX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_tx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
(void)hw;
|
||||
switch (PCR.i2s_tx_clkm_conf.i2s_tx_clkm_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_96M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get RX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current RX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_rx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
(void)hw;
|
||||
switch (PCR.i2s_rx_clkm_conf.i2s_rx_clkm_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_96M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set I2S tx bck div num
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -522,6 +522,68 @@ static inline void _i2s_ll_rx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
|
||||
_i2s_ll_rx_clk_set_src(__VA_ARGS__); \
|
||||
} while(0)
|
||||
|
||||
/**
|
||||
* @brief Get TX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current TX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_tx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
uint32_t clk_src;
|
||||
switch (I2S_LL_GET_ID(hw)) {
|
||||
case 0:
|
||||
clk_src = HP_SYS_CLKRST.peri_clk_ctrl13.reg_i2s0_tx_clk_src_sel;
|
||||
break;
|
||||
case 1:
|
||||
clk_src = HP_SYS_CLKRST.peri_clk_ctrl15.reg_i2s1_tx_clk_src_sel;
|
||||
break;
|
||||
case 2:
|
||||
clk_src = HP_SYS_CLKRST.peri_clk_ctrl18.reg_i2s2_tx_clk_src_sel;
|
||||
break;
|
||||
default:
|
||||
return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
switch (clk_src) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_APLL;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get RX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current RX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_rx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
uint32_t clk_src;
|
||||
switch (I2S_LL_GET_ID(hw)) {
|
||||
case 0:
|
||||
clk_src = HP_SYS_CLKRST.peri_clk_ctrl11.reg_i2s0_rx_clk_src_sel;
|
||||
break;
|
||||
case 1:
|
||||
clk_src = HP_SYS_CLKRST.peri_clk_ctrl14.reg_i2s1_rx_clk_src_sel;
|
||||
break;
|
||||
case 2:
|
||||
clk_src = HP_SYS_CLKRST.peri_clk_ctrl17.reg_i2s2_rx_clk_src_sel;
|
||||
break;
|
||||
default:
|
||||
return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
switch (clk_src) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_APLL;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set I2S tx bck div num
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2020-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -303,6 +303,28 @@ static inline void i2s_ll_rx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
|
||||
hw->clkm_conf.clk_sel = (src == I2S_CLK_SRC_APLL) ? 1 : 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get TX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current TX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_tx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
return (hw->clkm_conf.clk_sel == 1) ? (i2s_clock_src_t)I2S_CLK_SRC_APLL : (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get RX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current RX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_rx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
return (hw->clkm_conf.clk_sel == 1) ? (i2s_clock_src_t)I2S_CLK_SRC_APLL : (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set I2S tx bck div num
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -281,6 +281,41 @@ static inline void i2s_ll_rx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get TX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current TX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_tx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
switch (hw->tx_clkm_conf.tx_clk_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_240M;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get RX source clock
|
||||
*
|
||||
* @param hw Peripheral I2S hardware instance address.
|
||||
* @return Current RX clock source (i2s_clock_src_t).
|
||||
*/
|
||||
static inline i2s_clock_src_t i2s_ll_rx_clk_get_src(i2s_dev_t *hw)
|
||||
{
|
||||
switch (hw->rx_clkm_conf.rx_clk_sel) {
|
||||
case 0: return (i2s_clock_src_t)I2S_CLK_SRC_XTAL;
|
||||
case 1: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_240M;
|
||||
case 2: return (i2s_clock_src_t)I2S_CLK_SRC_PLL_160M;
|
||||
case 3: return (i2s_clock_src_t)I2S_CLK_SRC_EXTERNAL;
|
||||
default: return (i2s_clock_src_t)I2S_CLK_SRC_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set I2S tx bck div num
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user