Arduino AudioKit HAL
esxxx_common.h
1 /*
2  * ESPRESSIF MIT License
3  *
4  * Copyright (c) 2019 <ESPRESSIF SYSTEMS (SHANGHAI) CO., LTD>
5  *
6  * Permission is hereby granted for use on all ESPRESSIF SYSTEMS products, in which case,
7  * it is free of charge, to any person obtaining a copy of this software and associated
8  * documentation files (the "Software"), to deal in the Software without restriction, including
9  * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
10  * and/or sell copies of the Software, and to permit persons to whom the Software is furnished
11  * to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all copies or
14  * substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
18  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
19  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
20  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22  *
23  */
24 
25 #ifndef _ESXXX_COMMON_H_
26 #define _ESXXX_COMMON_H_
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 typedef enum {
33  BIT_LENGTH_MIN = -1,
34  BIT_LENGTH_16BITS = 0x03,
35  BIT_LENGTH_18BITS = 0x02,
36  BIT_LENGTH_20BITS = 0x01,
37  BIT_LENGTH_24BITS = 0x00,
38  BIT_LENGTH_32BITS = 0x04,
39  BIT_LENGTH_MAX,
40 } es_bits_length_t;
41 
42 typedef enum {
43  MCLK_DIV_MIN = -1,
44  MCLK_DIV_1 = 1,
45  MCLK_DIV_2 = 2,
46  MCLK_DIV_3 = 3,
47  MCLK_DIV_4 = 4,
48  MCLK_DIV_6 = 5,
49  MCLK_DIV_8 = 6,
50  MCLK_DIV_9 = 7,
51  MCLK_DIV_11 = 8,
52  MCLK_DIV_12 = 9,
53  MCLK_DIV_16 = 10,
54  MCLK_DIV_18 = 11,
55  MCLK_DIV_22 = 12,
56  MCLK_DIV_24 = 13,
57  MCLK_DIV_33 = 14,
58  MCLK_DIV_36 = 15,
59  MCLK_DIV_44 = 16,
60  MCLK_DIV_48 = 17,
61  MCLK_DIV_66 = 18,
62  MCLK_DIV_72 = 19,
63  MCLK_DIV_5 = 20,
64  MCLK_DIV_10 = 21,
65  MCLK_DIV_15 = 22,
66  MCLK_DIV_17 = 23,
67  MCLK_DIV_20 = 24,
68  MCLK_DIV_25 = 25,
69  MCLK_DIV_30 = 26,
70  MCLK_DIV_32 = 27,
71  MCLK_DIV_34 = 28,
72  MCLK_DIV_7 = 29,
73  MCLK_DIV_13 = 30,
74  MCLK_DIV_14 = 31,
75  MCLK_DIV_MAX,
76 } es_sclk_div_t;
77 
78 typedef enum {
79  LCLK_DIV_MIN = -1,
80  LCLK_DIV_128 = 0,
81  LCLK_DIV_192 = 1,
82  LCLK_DIV_256 = 2,
83  LCLK_DIV_384 = 3,
84  LCLK_DIV_512 = 4,
85  LCLK_DIV_576 = 5,
86  LCLK_DIV_768 = 6,
87  LCLK_DIV_1024 = 7,
88  LCLK_DIV_1152 = 8,
89  LCLK_DIV_1408 = 9,
90  LCLK_DIV_1536 = 10,
91  LCLK_DIV_2112 = 11,
92  LCLK_DIV_2304 = 12,
93 
94  LCLK_DIV_125 = 16,
95  LCLK_DIV_136 = 17,
96  LCLK_DIV_250 = 18,
97  LCLK_DIV_272 = 19,
98  LCLK_DIV_375 = 20,
99  LCLK_DIV_500 = 21,
100  LCLK_DIV_544 = 22,
101  LCLK_DIV_750 = 23,
102  LCLK_DIV_1000 = 24,
103  LCLK_DIV_1088 = 25,
104  LCLK_DIV_1496 = 26,
105  LCLK_DIV_1500 = 27,
106  LCLK_DIV_MAX,
107 } es_lclk_div_t;
108 
109 typedef enum {
110  D2SE_PGA_GAIN_MIN = -1,
111  D2SE_PGA_GAIN_DIS = 0,
112  D2SE_PGA_GAIN_EN = 1,
113  D2SE_PGA_GAIN_MAX = 2,
114 } es_d2se_pga_t;
115 
116 typedef enum {
117  ADC_INPUT_MIN = -1,
118  ADC_INPUT_LINPUT1_RINPUT1 = 0x00,
119  ADC_INPUT_MIC1 = 0x05,
120  ADC_INPUT_MIC2 = 0x06,
121  ADC_INPUT_LINPUT2_RINPUT2 = 0x50,
122  ADC_INPUT_DIFFERENCE = 0xf0,
123  ADC_INPUT_MAX,
124 } es_adc_input_t;
125 
126 typedef enum {
127  DAC_OUTPUT_MIN = -1,
128  DAC_OUTPUT_LOUT1 = 0x04,
129  DAC_OUTPUT_LOUT2 = 0x08,
130  DAC_OUTPUT_SPK = 0x09,
131  DAC_OUTPUT_ROUT1 = 0x10,
132  DAC_OUTPUT_ROUT2 = 0x20,
133  DAC_OUTPUT_ALL = 0x3c,
134  DAC_OUTPUT_MAX,
135 } es_dac_output_t;
136 
137 typedef enum {
138  MIC_GAIN_MIN = -1,
139  MIC_GAIN_0DB = 0,
140  MIC_GAIN_3DB = 3,
141  MIC_GAIN_6DB = 6,
142  MIC_GAIN_9DB = 9,
143  MIC_GAIN_12DB = 12,
144  MIC_GAIN_15DB = 15,
145  MIC_GAIN_18DB = 18,
146  MIC_GAIN_21DB = 21,
147  MIC_GAIN_24DB = 24,
148  MIC_GAIN_MAX,
149 } es_mic_gain_t;
150 
151 typedef enum {
152  ES_MODULE_MIN = -1,
153  ES_MODULE_ADC = 0x01,
154  ES_MODULE_DAC = 0x02,
155  ES_MODULE_ADC_DAC = 0x03,
156  ES_MODULE_LINE = 0x04,
157  ES_MODULE_MAX
158 } es_module_t;
159 
160 typedef enum {
161  ES_MODE_MIN = -1,
162  ES_MODE_SLAVE = 0x00,
163  ES_MODE_MASTER = 0x01,
164  ES_MODE_MAX,
165 } es_mode_t;
166 
167 typedef enum {
168  ES_I2S_MIN = -1,
169  ES_I2S_NORMAL = 0,
170  ES_I2S_LEFT = 1,
171  ES_I2S_RIGHT = 2,
172  ES_I2S_DSP = 3,
173  ES_I2S_MAX
174 } es_i2s_fmt_t;
175 
176 /**
177  * @brief Configure ES8388 clock
178  */
179 typedef struct {
180  es_sclk_div_t sclk_div; /*!< bits clock divide */
181  es_lclk_div_t lclk_div; /*!< WS clock divide */
183 
184 #ifdef __cplusplus
185 }
186 #endif
187 
188 #endif
Configure ES8388 clock.
Definition: esxxx_common.h:179
es_lclk_div_t lclk_div
Definition: esxxx_common.h:181
es_sclk_div_t sclk_div
Definition: esxxx_common.h:180