Skip to content

Commit 6032b75

Browse files
Merge pull request #11 from webmonkey/master
modified to work properly with the ESP32-S3
2 parents 952ee28 + 521ff51 commit 6032b75

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

ESP32AnalogRead.cpp

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88

99
#include "ESP32AnalogRead.h"
1010

11+
#undef ADC_WIDTH_BIT_DEFAULT
12+
#define ADC_WIDTH_BIT_DEFAULT ((adc_bits_width_t) ((int)ADC_WIDTH_MAX-1))
13+
1114
ESP32AnalogRead::ESP32AnalogRead(int pinNum)
1215
{
1316
if (!(pinNum < 0))
@@ -19,6 +22,7 @@ void ESP32AnalogRead::attach(int pin)
1922
{
2023
myPin = pin;
2124
channel = (adc_channel_t)digitalPinToAnalogChannel(myPin);
25+
2226
attached = true;
2327
}
2428

@@ -56,15 +60,15 @@ float ESP32AnalogRead::readVoltage()
5660
*/
5761
uint32_t ESP32AnalogRead::readMiliVolts()
5862
{
59-
#if defined(CONFIG_IDF_TARGET_ESP32S2)
63+
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
6064
if (!attached)
6165
return 0;
6266
analogRead(myPin);
6367
// Configure ADC
6468
adc_unit_t unit;
6569
if (myPin < 11)
6670
{
67-
adc1_config_width(ADC_WIDTH_BIT_13);
71+
adc1_config_width(ADC_WIDTH_BIT_DEFAULT);
6872
adc1_channel_t chan = ADC1_CHANNEL_0;
6973
unit = ADC_UNIT_1;
7074
switch (myPin)
@@ -144,12 +148,13 @@ uint32_t ESP32AnalogRead::readMiliVolts()
144148
adc2_channel = chan;
145149
adc2_config_channel_atten(chan, ADC_ATTEN_11db);
146150
}
151+
147152
// Calculate ADC characteristics i.e. gain and offset factors
148153
#ifdef ESP_IDF_VERSION
149154
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(3, 1, 0)
150155
esp_adc_cal_characterize(unit,
151156
ADC_ATTEN_DB_11,
152-
ADC_WIDTH_BIT_13,
157+
ADC_WIDTH_BIT_DEFAULT,
153158
V_REF,
154159
&characteristics);
155160
#else
@@ -167,7 +172,7 @@ uint32_t ESP32AnalogRead::readMiliVolts()
167172
}
168173
else
169174
{
170-
adc2_get_raw(adc2_channel, ADC_WIDTH_BIT_13, &raw);
175+
adc2_get_raw(adc2_channel, ADC_WIDTH_BIT_DEFAULT, &raw);
171176
}
172177
voltage = esp_adc_cal_raw_to_voltage(raw, &characteristics);
173178
return voltage;
@@ -361,15 +366,15 @@ uint32_t ESP32AnalogRead::readMiliVolts()
361366

362367
uint16_t ESP32AnalogRead::readRaw()
363368
{
364-
#if defined(CONFIG_IDF_TARGET_ESP32S2)
369+
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
365370
if (!attached)
366371
return 0;
367372
analogRead(myPin);
368373
// Configure ADC
369374
adc_unit_t unit;
370375
if (myPin < 11)
371376
{
372-
adc1_config_width(ADC_WIDTH_BIT_13);
377+
adc1_config_width(ADC_WIDTH_BIT_DEFAULT);
373378
adc1_channel_t chan = ADC1_CHANNEL_0;
374379
unit = ADC_UNIT_1;
375380
switch (myPin)
@@ -454,7 +459,7 @@ uint16_t ESP32AnalogRead::readRaw()
454459
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(3, 1, 0)
455460
esp_adc_cal_characterize(unit,
456461
ADC_ATTEN_DB_11,
457-
ADC_WIDTH_BIT_13,
462+
ADC_WIDTH_BIT_DEFAULT,
458463
V_REF,
459464
&characteristics);
460465
#else
@@ -472,7 +477,7 @@ uint16_t ESP32AnalogRead::readRaw()
472477
}
473478
else
474479
{
475-
adc2_get_raw(adc2_channel, ADC_WIDTH_BIT_13, &raw);
480+
adc2_get_raw(adc2_channel, ADC_WIDTH_BIT_DEFAULT, &raw);
476481
}
477482
return raw;
478483
#elif defined(CONFIG_IDF_TARGET_ESP32)

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Load the calibration data and provide a calibrated analog read
44
# Supported Versions
55
- ESP32
66
- ESP32-S2
7+
- ESP32-S3
78

89
# Documentation by Doxygen
910

0 commit comments

Comments
 (0)