Skip to content

Commit 1e31f04

Browse files
committed
Merge branch 'feature/add_cjc8910_codec_driver' into 'master'
feat(esp_codec_dev): Add support for cjc8910 codec See merge request adf/esp-adf-internal!1418
2 parents 7b987ee + 5c471b8 commit 1e31f04

File tree

11 files changed

+615
-66
lines changed

11 files changed

+615
-66
lines changed

components/esp_codec_dev/CHANGELOG.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# Changelog
22

3+
## v1.3.6
4+
5+
### Feature
6+
7+
- Added support for CJC8910 codec.
8+
9+
### Bug Fixed
10+
11+
- Added missing ES8389 include in `esp_codec_dev_defaults.h`.
12+
313
## v1.3.5
414

515
### Feature
@@ -56,8 +66,8 @@
5666

5767
### Features
5868

59-
- Add IDF v5.3 support
60-
Using new i2c driver `esp_driver_i2c`, add `bus_handle` configuration for `audio_codec_i2c_cfg_t`.
69+
- Add IDF v5.3 support
70+
Using new i2c driver `esp_driver_i2c`, add `bus_handle` configuration for `audio_codec_i2c_cfg_t`.
6171
User need create the `bus_handle` using API `i2c_new_master_bus` instead of `i2c_driver_install`.
6272
- Change test code to standalone application, user can directly build it under folder [codec_dev_test](test_apps/codec_dev_test)
6373

components/esp_codec_dev/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ if (CONFIG_CODEC_ZL38063_SUPPORT)
7070
device/zl38063/example_apps/tw_spi_access.c)
7171
endif()
7272

73+
if (CONFIG_CODEC_CJC8910_SUPPORT)
74+
list(APPEND COMPONENT_SRCS device/cjc8910/cjc8910.c)
75+
endif()
76+
7377
idf_component_register(SRCS "${COMPONENT_SRCS}"
7478
INCLUDE_DIRS "${COMPONENT_ADD_INCLUDEDIRS}"
7579
PRIV_INCLUDE_DIRS "${COMPONENT_PRIV_INCLUDEDIRS}"

components/esp_codec_dev/Kconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,10 @@ menu "Audio Codec Device Configuration"
7676
help
7777
Enable this option to support codec ZL38063.
7878
ZL38063 firmware only support xtensa, don't enable for RISC-V IC.
79+
80+
config CODEC_CJC8910_SUPPORT
81+
bool "Support CJC8910 Codec Chip"
82+
default n
83+
help
84+
Enable this option to support codec CJC8910.
7985
endmenu

components/esp_codec_dev/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ The currently supported codec devices are listed as below:
2929
|ES7243 |N|Y|
3030
|ES7243E |N|Y|
3131
|ES8156 |N|Y|
32+
|CJC8910 |Y|Y|
3233

3334

3435
## Architecture overview

components/esp_codec_dev/README_CN.md

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,12 @@
2828
|ES7243 |N|Y|
2929
|ES7243E |N|Y|
3030
|ES8156 |N|Y|
31+
|CJC8910 |Y|Y|
3132

3233

3334
## 架构预览
3435

35-
以编解码器设备 (ES8311) 为例,下面分别介绍硬件框图和软件架构。
36+
以编解码器设备 (ES8311) 为例,下面分别介绍硬件框图和软件架构。
3637
编解码器设备 (ES8311) 和主芯片(ESP32-S3) 之间的硬件连接简图如下:
3738
```mermaid
3839
graph LR;
@@ -79,7 +80,7 @@ class audio_codec_ctrl_if_t {
7980
open()
8081
read_reg()
8182
write_reg()
82-
close()
83+
close()
8384
}
8485
8586
class audio_codec_gpio_if_t {
@@ -134,19 +135,19 @@ audio_codec_if_t ..> esp_codec_dev
134135
audio_codec_data_if_t ..> esp_codec_dev
135136
```
136137

137-
通讯通道抽象为两种接口:
138+
通讯通道抽象为两种接口:
138139
* `audio_codec_ctrl_if_t` 控制接口:
139-
主要提供 `read_reg` 和 `write_reg` API 来配置编解码器设备
140+
主要提供 `read_reg` 和 `write_reg` API 来配置编解码器设备
140141
常用控制通道包括 I2C, SPI 等
141142
* `audio_codec_data_if_t` 数据接口:
142-
主要提供 `read` 和 `write` API 用来交换音频数据
143+
主要提供 `read` 和 `write` API 用来交换音频数据
143144
常用数据通道包括 I2S, SPI 等
144145

145146
`esp_codec_dev` 为用户提供便捷的上层 API 来实现播放和录音功能。它是由 `audio_codec_data_if_t``audio_codec_if_t` 组成。`audio_codec_if_t` 对编解码器控制操作进行抽象,通过编解码器特有的配置参数构建(由 `audio_codec_ctrl_if_t``audio_codec_gpio_if_t` 通过 `es8311_codec_cfg_t` 进行配置)。`audio_codec_gpio_if_t ` 对 IO 控制进行抽象,以适配主控 IO 或者扩展芯片 IO, 在编解码器内部进行调用用以匹配特有的设定时序。
146147

147148
## 解码器音量设定
148149

149-
音量统一通过 API `esp_codec_dev_set_out_vol` 进行设定。
150+
音量统一通过 API `esp_codec_dev_set_out_vol` 进行设定。
150151
`esp_codec_dev` 支持以下音量设定实现:
151152
1. 通过调节音量寄存器实现
152153
2. 在硬件不支持音量调节下,可以使用内置的软件音量实现 `audio_codec_new_sw_vol`
@@ -159,13 +160,13 @@ audio_codec_data_if_t ..> esp_codec_dev
159160
## 使用方法
160161

161162
以 ES8311 为例,下面将演示播放和录音的具体步骤
162-
1. 为编解码器设备的控制和数据总线安装驱动,可参考[test_board.c](test_apps/codec_dev_test/main/test_board.c)
163+
1. 为编解码器设备的控制和数据总线安装驱动,可参考[test_board.c](test_apps/codec_dev_test/main/test_board.c)
163164
```c
164165
ut_i2c_init(0);
165166
ut_i2s_init(0);
166167
```
167-
168-
2. 为编解码器设备实现控制接口,数据接口和 GPIO 接口 (使用默认提供的接口实现)
168+
169+
2. 为编解码器设备实现控制接口,数据接口和 GPIO 接口 (使用默认提供的接口实现)
169170
```c
170171
audio_codec_i2s_cfg_t i2s_cfg = {
171172
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
@@ -181,7 +182,7 @@ audio_codec_data_if_t ..> esp_codec_dev
181182
const audio_codec_gpio_if_t *gpio_if = audio_codec_new_gpio();
182183
```
183184

184-
3. 基于控制接口和 ES8311 特有的配置实现 `audio_codec_if_t` 接口
185+
3. 基于控制接口和 ES8311 特有的配置实现 `audio_codec_if_t` 接口
185186
```c
186187
es8311_codec_cfg_t es8311_cfg = {
187188
.codec_mode = ESP_CODEC_DEV_WORK_MODE_BOTH,
@@ -193,7 +194,7 @@ audio_codec_data_if_t ..> esp_codec_dev
193194
const audio_codec_if_t *out_codec_if = es8311_codec_new(&es8311_cfg);
194195
```
195196

196-
4. 通过 API `esp_codec_dev_new` 获取 `esp_codec_dev_handle_t` 句柄
197+
4. 通过 API `esp_codec_dev_new` 获取 `esp_codec_dev_handle_t` 句柄
197198
参考下面代码用获取到的句柄来进行播放和录制操作:
198199
```c
199200
esp_codec_dev_cfg_t dev_cfg = {
@@ -221,8 +222,8 @@ audio_codec_data_if_t ..> esp_codec_dev
221222

222223
## 客制化编解码器设备
223224

224-
1. 实现接口 `audio_codec_ctrl_if_t``audio_codec_data_if_t`
225-
如果使用 I2C 总线作控制,I2S 总线做数据传输,可以使用默认的接口实现:
225+
1. 实现接口 `audio_codec_ctrl_if_t``audio_codec_data_if_t`
226+
如果使用 I2C 总线作控制,I2S 总线做数据传输,可以使用默认的接口实现:
226227
`audio_codec_new_i2c_ctrl``audio_codec_new_i2s_data`
227228

228229
2. 在第一步的基础上实现接口 `audio_codec_if_t`

0 commit comments

Comments
 (0)