Skip to content

Commit

Permalink
i2s: fixed tdm mclk doubled issue
Browse files Browse the repository at this point in the history
Closes: #10196
  • Loading branch information
L-KAYA committed Nov 21, 2022
1 parent 71968a4 commit 22531d2
Showing 1 changed file with 6 additions and 8 deletions.
14 changes: 6 additions & 8 deletions components/driver/i2s/i2s_tdm.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,12 @@ static esp_err_t i2s_tdm_calculate_clock(i2s_chan_handle_t handle, const i2s_tdm
clk_info->bclk = rate * handle->total_slot * slot_bits;
clk_info->mclk = rate * clk_cfg->mclk_multiple;
clk_info->bclk_div = clk_info->mclk / clk_info->bclk;
/* While RECEIVING multiple slots, the data will go wrong if the bclk_div is euqal or smaller than 2 */
do {
clk_info->mclk *= 2;
clk_info->bclk_div = clk_info->mclk / clk_info->bclk;
if (clk_info->bclk_div <= 2) {
ESP_LOGW(TAG, "the current mclk multiple is too small, adjust the mclk multiple to %"PRIu32, clk_info->mclk / rate);
}
} while (clk_info->bclk_div <= 2);
/* While RECEIVING multiple slots, the data will go wrong if the bclk_div is equal or smaller than 2 */
if (clk_info->bclk_div <= 2) {
clk_info->bclk_div = 3;
clk_info->mclk = clk_info->bclk * clk_info->bclk_div;
ESP_LOGW(TAG, "the current mclk multiple is too small, adjust the mclk multiple to %"PRIu32, clk_info->mclk / rate);
}
} else {
if (clk_cfg->bclk_div < 8) {
ESP_LOGW(TAG, "the current bclk division is too small, adjust the bclk division to 8");
Expand Down

0 comments on commit 22531d2

Please sign in to comment.