12 static const char *
const TAG =
"es7243e";
15 #define ES7243E_ERROR_FAILED(func) \ 17 this->mark_failed(); \ 22 #define ES7243E_ERROR_CHECK(func) \ 28 ESP_LOGCONFIG(TAG,
"ES7243E audio ADC:");
31 ESP_LOGE(TAG,
" Failed to initialize");
37 ESP_LOGCONFIG(TAG,
"Setting up ES7243E...");
39 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG01, 0x3A));
40 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_RESET_REG00, 0x80));
41 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_TEST_MODE_REGF9, 0x00));
42 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG04, 0x02));
43 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG04, 0x01));
44 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_TEST_MODE_REGF9, 0x01));
45 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_RESET_REG00, 0x1E));
46 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG01, 0x00));
48 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG02, 0x00));
49 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG03, 0x20));
50 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG04, 0x01));
51 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ADC_CTRL_REG0D, 0x00));
52 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG05, 0x00));
53 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG06, 0x03));
54 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG07, 0x00));
55 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG08, 0xFF));
57 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG09, 0xCA));
58 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_SDP_REG0A, 0x85));
59 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_SDP_REG0B, 0x00));
60 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ADC_CTRL_REG0E, 0xBF));
61 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ADC_CTRL_REG0F, 0x80));
62 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ADC_CTRL_REG14, 0x0C));
63 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ADC_CTRL_REG15, 0x0C));
64 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG17, 0x02));
65 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG18, 0x26));
66 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG19, 0x77));
67 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG1A, 0xF4));
68 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG1B, 0x66));
69 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG1C, 0x44));
70 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG1E, 0x00));
71 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG1F, 0x0C));
72 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG20, 0x1A));
73 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG21, 0x1A));
75 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_RESET_REG00, 0x80));
76 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG01, 0x3A));
77 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG16, 0x3F));
78 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG16, 0x00));
80 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_TEST_MODE_REGF9, 0x00));
81 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG04, 0x01));
82 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG17, 0x01));
84 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_RESET_REG00, 0x80));
85 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_CLOCK_MGR_REG01, 0x3A));
86 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG16, 0x3F));
87 ES7243E_ERROR_FAILED(this->
write_byte(ES7243E_ANALOG_REG16, 0x00));
103 ES7243E_ERROR_CHECK(this->
write_byte(ES7243E_ANALOG_REG20, 0x10 | regv));
104 ES7243E_ERROR_CHECK(this->
write_byte(ES7243E_ANALOG_REG21, 0x10 | regv));
112 if (mic_gain <= 33.0) {
113 return (uint8_t) mic_gain / 3;
115 if (mic_gain < 36.0) {
118 if (mic_gain < 37.0) {
bool set_mic_gain(float mic_gain) override
float mic_gain() override
void dump_config() override
uint8_t es7243e_gain_reg_value_(float mic_gain)
Convert floating point mic gain value to register value.
bool configure_mic_gain_()
bool write_byte(uint8_t a_register, uint8_t data, bool stop=true)
Implementation of SPI Controller mode.