ESP32C3何时发布支持I2S的版本?
ESP32C3何时发布支持I2S的版本?
目前使用ESP32-C3芯片开发音频产品,但目前V4.3版本不支持I2S接口. 预计什么时候可以发布支持I2S的版本?
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: ESP32C3何时发布支持I2S的版本?
4.4 版会支持,预计 8 月底之前,会先合入到 master 分支。
Re: ESP32C3何时发布支持I2S的版本?
最新master分支支持了i2s。但是在使用中发现以下两个问题:
1. 不支持SLAVE模式下的全双工
2. 不支持SLAVE模式下的MONO格式,只能STETEO
1. 不支持SLAVE模式下的全双工
2. 不支持SLAVE模式下的MONO格式,只能STETEO
Re: ESP32C3何时发布支持I2S的版本?
相关BUG正在修复中
关于第一个BUG解决方案是把i2s.c的line 197~203替换为:
- if (p_i2s[i2s_num]->mode & I2S_MODE_RX) {
- gpio_matrix_in_check_and_set(pin->ws_io_num, i2s_periph_signal[i2s_num].rx_ws_sig, 0);
- gpio_matrix_in_check_and_set(pin->bck_io_num, i2s_periph_signal[i2s_num].rx_bck_sig, 0);
- } else {
- gpio_matrix_in_check_and_set(pin->ws_io_num, i2s_periph_signal[i2s_num].tx_ws_sig, 0);
- gpio_matrix_in_check_and_set(pin->bck_io_num, i2s_periph_signal[i2s_num].tx_bck_sig, 0);
- }
Re: ESP32C3何时发布支持I2S的版本?
”上面能解决无法通信问题,但是仍有可能出现SLAVE发送的数据延迟较大导致接收端数据出现移位,需要将mclk_div和bck_div设为1“
上面这个如何设置?
上面这个如何设置?
Re: ESP32C3何时发布支持I2S的版本?
临时性的办法是在'i2s_hal.c'的'i2s_hal_tx_clock_config'和'i2s_hal_rx_clock_config'中,把'i2s_hal_clk_cal'删掉,直接初始化'i2s_ll_clk_cal_t'变量,代码如下:
解释:SLAVE mode 下mclk和bclk由外部codec提供,自身不需要产生相同频率的时钟,但是如果自身模块时钟太慢,就会导致对输入的时钟采样时出现延迟,所以最后发送的数据会出现移位现象,因此需要把模块时钟分频设得尽可能小一些,以一个较高的频率采样输入时钟,才能保证输出数据比较小的延迟
注意:这样改的前提是使用的是SLAVE mode,如果是MATER mode需要改回来,或者可以在进这个函数前加个判断是否是slave之类的。
Code: Select all
void i2s_hal_tx_clock_config(i2s_hal_context_t *hal, uint32_t sclk, uint32_t fbck, int factor)
{
i2s_ll_clk_cal_t clk_set = {
.mclk_div = 1,
.bck_div = 1,
.a = 1,
.b = 0
};
i2s_ll_tx_set_clk(hal->dev, &clk_set);
}
void i2s_hal_rx_clock_config(i2s_hal_context_t *hal, uint32_t sclk, uint32_t fbck, int factor)
{
i2s_ll_clk_cal_t clk_set = {
.mclk_div = 1,
.bck_div = 1,
.a = 1,
.b = 0
};
i2s_ll_rx_set_clk(hal->dev, &clk_set);
}
注意:这样改的前提是使用的是SLAVE mode,如果是MATER mode需要改回来,或者可以在进这个函数前加个判断是否是slave之类的。
Who is online
Users browsing this forum: No registered users and 41 guests