You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
868 B
31 lines
868 B
#include "battery.h"
|
|
|
|
#include "driver/adc.h"
|
|
#include "esp_adc_cal.h"
|
|
#include "hal/adc_types.h"
|
|
|
|
namespace gay_ipod {
|
|
|
|
static esp_adc_cal_characteristics_t calibration;
|
|
|
|
esp_err_t init_adc(void) {
|
|
// Calibration should already be fused into the chip from the factory, so
|
|
// we should only need to read it back out again.
|
|
esp_adc_cal_characterize(
|
|
ADC_UNIT_1, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_12, 0, &calibration);
|
|
|
|
// Max battery voltage should be a little over 2V due to our divider, so
|
|
// we need the max attenuation to properly handle the full range.
|
|
adc1_config_width(ADC_WIDTH_BIT_12);
|
|
adc1_config_channel_atten(ADC1_CHANNEL_6, ADC_ATTEN_DB_11);
|
|
|
|
return ESP_OK;
|
|
}
|
|
|
|
uint32_t read_battery_voltage(void) {
|
|
// GPIO 34
|
|
int raw = adc1_get_raw(ADC1_CHANNEL_6);
|
|
return esp_adc_cal_raw_to_voltage(raw, &calibration);
|
|
}
|
|
|
|
} // namespace gay_ipod
|
|
|