Skip to content

Commit a86e389

Browse files
committed
Adding ESP Audio Codec support
1 parent cd52421 commit a86e389

31 files changed

+1305
-26
lines changed

esp32p4/bin/bootloader_qio_80m.elf

0 Bytes
Binary file not shown.

esp32p4/dependencies.lock

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ dependencies:
3333
registry_url: https://components.espressif.com/
3434
type: service
3535
version: 1.0.16
36+
espressif/esp_codec_dev:
37+
component_hash: 9f492cd70c85381c41dc92da48dea93dd43fbfc51532dbf748dc7d94f9846c59
38+
dependencies:
39+
- name: idf
40+
require: private
41+
version: '>=4.0'
42+
source:
43+
registry_url: https://components.espressif.com/
44+
type: service
45+
version: 1.3.3
3646
espressif/esp_hosted:
3747
component_hash: e07e83e12b99a5597469225e17547a3e5b224e267dcf269782f872e1362cbf4e
3848
dependencies:
@@ -120,13 +130,14 @@ dependencies:
120130
direct_dependencies:
121131
- espressif/esp-dsp
122132
- espressif/esp-modbus
133+
- espressif/esp_codec_dev
123134
- espressif/esp_hosted
124135
- espressif/esp_wifi_remote
125136
- espressif/libsodium
126137
- espressif/mdns
127138
- espressif/network_provisioning
128139
- idf
129140
- joltwallet/littlefs
130-
manifest_hash: fe41e13fff64b9973b03729ff2675eaf2a633333fb6edbfc14b1a00db4f20679
141+
manifest_hash: 8a0d0a41c640765bc2727f0ca9073789438c00c24478e6c9a456d40e8bc61667
131142
target: esp32p4
132143
version: 2.0.0

esp32p4/flags/includes

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

esp32p4/flags/ld_libs

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
#ifndef _AW88298_DAC_H_
7+
#define _AW88298_DAC_H_
8+
9+
#include "audio_codec_if.h"
10+
#include "audio_codec_ctrl_if.h"
11+
#include "audio_codec_gpio_if.h"
12+
#include "esp_codec_dev_vol.h"
13+
14+
#ifdef __cplusplus
15+
extern "C" {
16+
#endif
17+
18+
#define AW88298_CODEC_DEFAULT_ADDR (0x36 << 1)
19+
20+
/**
21+
* @brief AW88298 codec configuration
22+
*/
23+
typedef struct {
24+
const audio_codec_ctrl_if_t *ctrl_if; /*!< Codec Control interface */
25+
const audio_codec_gpio_if_t *gpio_if; /*!< Codec GPIO interface */
26+
int16_t reset_pin; /*!< Reset pin */
27+
esp_codec_dev_hw_gain_t hw_gain; /*!< Hardware gain */
28+
} aw88298_codec_cfg_t;
29+
30+
/**
31+
* @brief New AW88298 codec interface
32+
* @attention Need set mclk_multiple to I2S_MCLK_MULTIPLE_384 in esp_codec_dev_sample_info_t to support 44100
33+
* @param codec_cfg: AW88298 codec configuration
34+
* @return NULL: Fail to new AW88298 codec interface
35+
* -Others: AW88298 codec interface
36+
*/
37+
const audio_codec_if_t *aw88298_codec_new(aw88298_codec_cfg_t *codec_cfg);
38+
39+
#ifdef __cplusplus
40+
}
41+
#endif
42+
43+
#endif
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
#ifndef _ES7210_ADC_H_
7+
#define _ES7210_ADC_H_
8+
9+
#include "audio_codec_if.h"
10+
#include "audio_codec_ctrl_if.h"
11+
12+
#ifdef __cplusplus
13+
extern "C" {
14+
#endif
15+
16+
#define ES7210_CODEC_DEFAULT_ADDR (0x80)
17+
18+
#define ES7120_SEL_MIC1 (uint8_t)(1 << 0)
19+
#define ES7120_SEL_MIC2 (uint8_t)(1 << 1)
20+
#define ES7120_SEL_MIC3 (uint8_t)(1 << 2)
21+
#define ES7120_SEL_MIC4 (uint8_t)(1 << 3)
22+
23+
/**
24+
* @brief ES7210 MCLK clock source when work in master mode
25+
*/
26+
typedef enum {
27+
ES7210_MCLK_FROM_PAD,
28+
ES7210_MCLK_FROM_CLOCK_DOUBLER,
29+
} es7210_mclk_src_t;
30+
31+
/**
32+
* @brief ES7210 codec configuration, only support ADC feature
33+
*/
34+
typedef struct {
35+
const audio_codec_ctrl_if_t *ctrl_if; /*!< Codec Control interface */
36+
bool master_mode; /*!< Whether codec works as I2S master or not */
37+
uint8_t mic_selected; /*!< Selected microphone */
38+
es7210_mclk_src_t mclk_src; /*!< MCLK clock source in master mode */
39+
uint16_t mclk_div; /*!< MCLK/LRCK default is 256 if not provided */
40+
} es7210_codec_cfg_t;
41+
42+
/**
43+
* @brief New ES7210 codec interface
44+
* @param codec_cfg: ES7210 codec configuration
45+
* @return NULL: Fail to new ES7210 codec interface
46+
* -Others: ES7210 codec interface
47+
*/
48+
const audio_codec_if_t *es7210_codec_new(es7210_codec_cfg_t *codec_cfg);
49+
50+
#ifdef __cplusplus
51+
}
52+
#endif
53+
54+
#endif
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
#ifndef _ES7243_ADC_H_
7+
#define _ES7243_ADC_H_
8+
9+
#include "audio_codec_if.h"
10+
#include "audio_codec_ctrl_if.h"
11+
12+
#ifdef __cplusplus
13+
extern "C" {
14+
#endif
15+
16+
#define ES7243_CODEC_DEFAULT_ADDR (0x26)
17+
18+
/**
19+
* @brief ES7243 codec configuration, only support ADC feature
20+
*/
21+
typedef struct {
22+
const audio_codec_ctrl_if_t *ctrl_if; /*!< Codec Control interface */
23+
} es7243_codec_cfg_t;
24+
25+
/**
26+
* @brief New ES7243 codec interface
27+
* Notes: this API should called after I2S clock ready
28+
* Or else write register may fail
29+
* @param codec_cfg: ES7243 codec configuration
30+
* @return NULL: Fail to new ES7243 codec interface
31+
* -Others: ES7243 codec interface
32+
*/
33+
const audio_codec_if_t *es7243_codec_new(es7243_codec_cfg_t *codec_cfg);
34+
35+
#ifdef __cplusplus
36+
}
37+
#endif
38+
39+
#endif
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
#ifndef _ES7243E_ADC_H_
7+
#define _ES7243E_ADC_H_
8+
9+
#include "audio_codec_if.h"
10+
#include "audio_codec_ctrl_if.h"
11+
12+
#ifdef __cplusplus
13+
extern "C" {
14+
#endif
15+
16+
#define ES7243E_CODEC_DEFAULT_ADDR (0x20)
17+
18+
/**
19+
* @brief ES7243E codec configuration
20+
*/
21+
typedef struct {
22+
const audio_codec_ctrl_if_t *ctrl_if; /*!< Codec Control interface */
23+
} es7243e_codec_cfg_t;
24+
25+
/**
26+
* @brief New ES7243E codec interface
27+
* @param codec_cfg: ES7243E codec configuration
28+
* @return NULL: Fail to new ES7243E codec interface
29+
* -Others: ES7243E codec interface
30+
*/
31+
const audio_codec_if_t *es7243e_codec_new(es7243e_codec_cfg_t *codec_cfg);
32+
33+
#ifdef __cplusplus
34+
}
35+
#endif
36+
37+
#endif
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
#ifndef _ES8156_DAC_H_
7+
#define _ES8156_DAC_H_
8+
9+
#include "audio_codec_if.h"
10+
#include "audio_codec_ctrl_if.h"
11+
#include "audio_codec_gpio_if.h"
12+
#include "esp_codec_dev_vol.h"
13+
14+
#ifdef __cplusplus
15+
extern "C" {
16+
#endif
17+
18+
#define ES8156_CODEC_DEFAULT_ADDR (0x10)
19+
20+
/**
21+
* @brief ES8156 codec configuration
22+
*/
23+
typedef struct {
24+
const audio_codec_ctrl_if_t *ctrl_if; /*!< Codec Control interface */
25+
const audio_codec_gpio_if_t *gpio_if; /*!< Codec GPIO interface */
26+
int16_t pa_pin; /*!< PA chip power pin */
27+
bool pa_reverted; /*!< false: enable PA when pin set to 1, true: enable PA when pin set to 0 */
28+
esp_codec_dev_hw_gain_t hw_gain; /*!< Hardware gain */
29+
} es8156_codec_cfg_t;
30+
31+
/**
32+
* @brief New ES8156 codec interface
33+
* @param codec_cfg: ES8156 codec configuration
34+
* @return NULL: Fail to new ES8156 codec interface
35+
* -Others: ES8156 codec interface
36+
*/
37+
const audio_codec_if_t *es8156_codec_new(es8156_codec_cfg_t *codec_cfg);
38+
39+
#ifdef __cplusplus
40+
}
41+
#endif
42+
43+
#endif
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
#ifndef _ES8311_CODEC_H_
7+
#define _ES8311_CODEC_H_
8+
9+
#include "audio_codec_if.h"
10+
#include "audio_codec_ctrl_if.h"
11+
#include "audio_codec_gpio_if.h"
12+
#include "esp_codec_dev_vol.h"
13+
14+
#ifdef __cplusplus
15+
extern "C" {
16+
#endif
17+
18+
#define ES8311_CODEC_DEFAULT_ADDR (0x30)
19+
20+
/**
21+
* @brief ES8311 codec configuration
22+
*/
23+
typedef struct {
24+
const audio_codec_ctrl_if_t *ctrl_if; /*!< Codec Control interface */
25+
const audio_codec_gpio_if_t *gpio_if; /*!< Codec GPIO interface */
26+
esp_codec_dec_work_mode_t codec_mode; /*!< Codec work mode: ADC or DAC */
27+
int16_t pa_pin; /*!< PA chip power pin */
28+
bool pa_reverted; /*!< false: enable PA when pin set to 1, true: enable PA when pin set to 0 */
29+
bool master_mode; /*!< Whether codec works as I2S master or not */
30+
bool use_mclk; /*!< Whether use external MCLK clock */
31+
bool digital_mic; /*!< Whether use digital microphone */
32+
bool invert_mclk; /*!< MCLK clock signal inverted or not */
33+
bool invert_sclk; /*!< SCLK clock signal inverted or not */
34+
esp_codec_dev_hw_gain_t hw_gain; /*!< Hardware gain */
35+
bool no_dac_ref; /*!< When record 2 channel data
36+
false: right channel filled with dac output
37+
true: right channel leave empty
38+
*/
39+
uint16_t mclk_div; /*!< MCLK/LRCK default is 256 if not provided */
40+
} es8311_codec_cfg_t;
41+
42+
/**
43+
* @brief New ES8311 codec interface
44+
* @param codec_cfg: ES8311 codec configuration
45+
* @return NULL: Fail to new ES8311 codec interface
46+
* -Others: ES8311 codec interface
47+
*/
48+
const audio_codec_if_t *es8311_codec_new(es8311_codec_cfg_t *codec_cfg);
49+
50+
#ifdef __cplusplus
51+
}
52+
#endif
53+
54+
#endif
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
#ifndef _ES8374_CODEC_H_
7+
#define _ES8374_CODEC_H_
8+
9+
#include "audio_codec_if.h"
10+
#include "audio_codec_ctrl_if.h"
11+
#include "audio_codec_gpio_if.h"
12+
13+
#ifdef __cplusplus
14+
extern "C" {
15+
#endif
16+
17+
#define ES8374_CODEC_DEFAULT_ADDR (0x20)
18+
#define ES8374_CODEC_DEFAULT_ADDR_1 (0x21)
19+
20+
/**
21+
* @brief ES8374 codec configuration
22+
*/
23+
typedef struct {
24+
const audio_codec_ctrl_if_t *ctrl_if; /*!< Codec Control interface */
25+
const audio_codec_gpio_if_t *gpio_if; /*!< Codec GPIO interface */
26+
esp_codec_dec_work_mode_t codec_mode; /*!< Codec work mode: ADC or DAC */
27+
bool master_mode; /*!< Whether codec works as I2S master or not */
28+
int16_t pa_pin; /*!< PA chip power pin */
29+
bool pa_reverted; /*!< false: enable PA when pin set to 1, true: enable PA when pin set to 0 */
30+
} es8374_codec_cfg_t;
31+
32+
/**
33+
* @brief New ES8374 codec interface
34+
* @param codec_cfg: ES8374 codec configuration
35+
* @return NULL: Fail to new ES8374 codec interface
36+
* -Others: ES8374 codec interface
37+
*/
38+
const audio_codec_if_t *es8374_codec_new(es8374_codec_cfg_t *codec_cfg);
39+
40+
#ifdef __cplusplus
41+
}
42+
#endif
43+
44+
#endif //__ES8374_H__

0 commit comments

Comments
 (0)