ESPHome  2025.2.0
es7210.h
Go to the documentation of this file.
1 #pragma once
2 
6 
7 #include "es7210_const.h"
8 
9 namespace esphome {
10 namespace es7210 {
11 
12 enum ES7210BitsPerSample : uint8_t {
18 };
19 
20 class ES7210 : public audio_adc::AudioAdc, public Component, public i2c::I2CDevice {
21  /* Class for configuring an ES7210 ADC for microphone input.
22  * Based on code from:
23  * - https://github.com/espressif/esp-bsp/ (accessed 20241219)
24  * - https://github.com/espressif/esp-adf/ (accessed 20241219)
25  */
26  public:
27  void setup() override;
28  float get_setup_priority() const override { return setup_priority::DATA; }
29  void dump_config() override;
30 
31  void set_bits_per_sample(ES7210BitsPerSample bits_per_sample) { this->bits_per_sample_ = bits_per_sample; }
32  bool set_mic_gain(float mic_gain) override;
33  void set_sample_rate(uint32_t sample_rate) { this->sample_rate_ = sample_rate; }
34 
35  float mic_gain() override { return this->mic_gain_; };
36 
37  protected:
43  bool es7210_update_reg_bit_(uint8_t reg_addr, uint8_t update_bits, uint8_t data);
44 
48  uint8_t es7210_gain_reg_value_(float mic_gain);
49 
50  bool configure_i2s_format_();
51  bool configure_mic_gain_();
53 
54  bool setup_complete_{false};
55  bool enable_tdm_{false}; // TDM is unsupported in ESPHome as of version 2024.12
56  float mic_gain_{0};
58  uint32_t sample_rate_{0};
59 };
60 
61 } // namespace es7210
62 } // namespace esphome
const float DATA
For components that import data from directly connected sensors like DHT.
Definition: component.cpp:19
void set_bits_per_sample(ES7210BitsPerSample bits_per_sample)
Definition: es7210.h:31
ES7210BitsPerSample bits_per_sample_
Definition: es7210.h:57
void dump_config() override
Definition: es7210.cpp:27
bool configure_sample_rate_()
Definition: es7210.cpp:99
uint8_t es7210_gain_reg_value_(float mic_gain)
Convert floating point mic gain value to register value.
Definition: es7210.cpp:171
bool set_mic_gain(float mic_gain) override
Definition: es7210.cpp:91
float get_setup_priority() const override
Definition: es7210.h:28
void setup() override
Definition: es7210.cpp:38
bool configure_i2s_format_()
Definition: es7210.cpp:186
bool es7210_update_reg_bit_(uint8_t reg_addr, uint8_t update_bits, uint8_t data)
Updates an I2C registry address by modifying the current state.
Definition: es7210.cpp:220
Implementation of SPI Controller mode.
Definition: a01nyub.cpp:7
This Class provides the methods to read/write bytes from/to an i2c device.
Definition: i2c.h:133
float mic_gain() override
Definition: es7210.h:35
void set_sample_rate(uint32_t sample_rate)
Definition: es7210.h:33
uint32_t sample_rate_
Definition: es7210.h:58