arduino-audio-driver
Loading...
Searching...
No Matches
ES7243E.h
Go to the documentation of this file.
1/*
2 * ESPRESSIF MIT License
3 *
4 * Copyright (c) 2021 <ESPRESSIF SYSTEMS (SHANGHAI) CO., LTD>
5 *
6 * Permission is hereby granted for use on all ESPRESSIF SYSTEMS products, in
7 * which case, it is free of charge, to any person obtaining a copy of this
8 * software and associated documentation files (the "Software"), to deal in the
9 * Software without restriction, including without limitation the rights to use,
10 * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 * the Software, and to permit persons to whom the Software is furnished to do
12 * so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in
15 * all copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 * SOFTWARE.
24 *
25 */
26
27#pragma once
28
29#include "stddef.h" // NULL
30
32#include "DriverCommon.h"
33#include "Platforms/API_I2C.h"
34#include "stdbool.h"
35
36namespace audio_driver {
37
43class ES7243E {
44 public:
45 ES7243E() = default;
46
48 void setWire(i2c_bus_handle_t handle) { i2c_handle = handle; }
49
51 void setAddress(int addr) { i2c_addr = addr; }
52
55 error_t ret = RESULT_OK;
56 ret |= writeReg(0x01, 0x3A);
57 ret |= writeReg(0x00, 0x80);
58 ret |= writeReg(0xF9, 0x00);
59 ret |= writeReg(0x04, 0x02);
60 ret |= writeReg(0x04, 0x01);
61 ret |= writeReg(0xF9, 0x01);
62 ret |= writeReg(0x00, 0x1E);
63 ret |= writeReg(0x01, 0x00);
64
65 ret |= writeReg(0x02, 0x00);
66 ret |= writeReg(0x03, 0x20);
67 ret |= writeReg(0x04, 0x01);
68 ret |= writeReg(0x0D, 0x00);
69 ret |= writeReg(0x05, 0x00);
70 ret |= writeReg(0x06, 0x03); // SCLK=MCLK/4
71 ret |= writeReg(0x07, 0x00); // LRCK=MCLK/256
72 ret |= writeReg(0x08, 0xFF); // LRCK=MCLK/256
73
74 ret |= writeReg(0x09, 0xCA);
75 ret |= writeReg(0x0A, 0x85);
76 ret |= writeReg(0x0B, 0x00);
77 ret |= writeReg(0x0E, 0xBF);
78 ret |= writeReg(0x0F, 0x80);
79 ret |= writeReg(0x14, 0x0C);
80 ret |= writeReg(0x15, 0x0C);
81 ret |= writeReg(0x17, 0x02);
82 ret |= writeReg(0x18, 0x26);
83 ret |= writeReg(0x19, 0x77);
84 ret |= writeReg(0x1A, 0xF4);
85 ret |= writeReg(0x1B, 0x66);
86 ret |= writeReg(0x1C, 0x44);
87 ret |= writeReg(0x1E, 0x00);
88 ret |= writeReg(0x1F, 0x0C);
89 ret |= writeReg(0x20, 0x1A); // PGA gain +30dB
90 ret |= writeReg(0x21, 0x1A); // PGA gain +30dB
91
92 ret |= writeReg(0x00, 0x80); // Slave Mode
93 ret |= writeReg(0x01, 0x3A);
94 ret |= writeReg(0x16, 0x3F);
95 ret |= writeReg(0x16, 0x00);
96 if (ret) {
97 AD_LOGE("Es7243e initialize failed!");
98 return RESULT_FAIL;
99 }
100 return ret;
101 }
102
104 error_t deinit(void) { return RESULT_OK; }
105
107 error_t ctrlStateActive(codec_mode_t mode, bool ctrl_state_active) {
108 error_t ret = RESULT_OK;
109 if (ctrl_state_active) {
110 ret |= writeReg(0xF9, 0x00);
111 ret |= writeReg(0x04, 0x01);
112 ret |= writeReg(0x17, 0x01);
113 ret |= writeReg(0x20, 0x10);
114 ret |= writeReg(0x21, 0x10);
115 ret |= writeReg(0x00, 0x80);
116 ret |= writeReg(0x01, 0x3A);
117 ret |= writeReg(0x16, 0x3F);
118 ret |= writeReg(0x16, 0x00);
119 } else {
120 AD_LOGW("The codec going to stop");
121 ret |= writeReg(0x04, 0x02);
122 ret |= writeReg(0x04, 0x01);
123 ret |= writeReg(0xF7, 0x30);
124 ret |= writeReg(0xF9, 0x01);
125 ret |= writeReg(0x16, 0xFF);
126 ret |= writeReg(0x17, 0x00);
127 ret |= writeReg(0x01, 0x38);
128 ret |= writeReg(0x20, 0x00);
129 ret |= writeReg(0x21, 0x00);
130 ret |= writeReg(0x00, 0x00);
131 ret |= writeReg(0x00, 0x1E);
132 ret |= writeReg(0x01, 0x30);
133 ret |= writeReg(0x01, 0x00);
134 }
135 return ret;
136 }
137
140 return RESULT_OK;
141 }
142
144 error_t setVoiceVolume(int volume) { return RESULT_OK; }
145
147 error_t getVoiceVolume(int* volume) { return RESULT_OK; }
148 error_t writeReg(uint8_t reg_add, uint8_t data) {
149 return i2c_bus_write_bytes(i2c_handle, i2c_addr, &reg_add, sizeof(reg_add),
150 &data, sizeof(data));
151 }
152
153 protected:
155 int i2c_addr = 0x10; // 0x20 >> 1;
156};
157
158} // namespace audio_driver
#define RESULT_OK
Definition DriverCommon.h:74
#define RESULT_FAIL
Definition DriverCommon.h:75
#define AD_LOGE(...)
Definition Logger.h:15
#define AD_LOGW(...)
Definition Logger.h:14
Header-only driver class for the ES7243E ADC chip.
Definition ES7243E.h:43
error_t writeReg(uint8_t reg_add, uint8_t data)
Definition ES7243E.h:148
error_t ctrlStateActive(codec_mode_t mode, bool ctrl_state_active)
Control ES7243E adc chip.
Definition ES7243E.h:107
void setAddress(int addr)
Defines the I2C device address.
Definition ES7243E.h:51
error_t deinit(void)
Deinitialize ES7243E adc chip.
Definition ES7243E.h:104
int i2c_addr
Definition ES7243E.h:155
error_t configI2S(codec_mode_t mode, I2SDefinition *iface)
Configure ES7243E adc mode and I2S interface.
Definition ES7243E.h:139
void setWire(i2c_bus_handle_t handle)
Defines the I2C bus instance to be used.
Definition ES7243E.h:48
i2c_bus_handle_t i2c_handle
Definition ES7243E.h:154
error_t setVoiceVolume(int volume)
Set adc gain (value of gain 0~100)
Definition ES7243E.h:144
error_t getVoiceVolume(int *volume)
Get adc gain (value of gain 0~100)
Definition ES7243E.h:147
error_t init(codec_config_t *codec_cfg)
Initialize ES7243E adc chip.
Definition ES7243E.h:54
Namespace for audio driver components.
Definition AudioBoard.h:5
codec_mode_t
Definition DriverCommon.h:290
int error_t
Definition DriverCommon.h:150
void * i2c_bus_handle_t
Definition DriverCommon.h:155
I2S interface parameters for the audio codec.
Definition DriverCommon.h:384
Top-level codec configuration passed to the audio driver at init.
Definition DriverCommon.h:397