46
46
#define NUM_SAMPLES_PER_INTERRUPT 256
47
47
#define NUM_ADC_CHANNELS 1
48
48
#define DMA_BUFFER_SIZE 1024
49
- #define ATTENUATION ADC_ATTEN_DB_0
49
+ #define ATTENUATION ADC_ATTEN_DB_11
50
50
#define ADC_READ_TIMEOUT_MS 2000
51
+ #define ADC_PIN_MAX_VALUE 0xfff
51
52
52
53
#if defined(CONFIG_IDF_TARGET_ESP32 )
53
54
#define ADC_RESULT_BYTE 2
@@ -239,6 +240,7 @@ uint32_t common_hal_analogbufio_bufferedin_readinto(analogbufio_bufferedin_obj_t
239
240
uint32_t captured_bytes = 0 ;
240
241
esp_err_t ret ;
241
242
uint32_t ret_num = 0 ;
243
+ uint32_t adc_reading = 0 ;
242
244
adc_digi_convert_mode_t convert_mode = ADC_CONV_SINGLE_UNIT_2 ;
243
245
adc_digi_output_format_t output_format = ADC_DIGI_OUTPUT_FORMAT_TYPE1 ;
244
246
@@ -264,11 +266,13 @@ uint32_t common_hal_analogbufio_bufferedin_readinto(analogbufio_bufferedin_obj_t
264
266
uint16_t * pBuffer = (uint16_t * )(void * )& buffer [captured_bytes ];
265
267
if (output_format == ADC_DIGI_OUTPUT_FORMAT_TYPE1 ) {
266
268
#if defined(CONFIG_IDF_TARGET_ESP32 ) || defined(CONFIG_IDF_TARGET_ESP32S2 )
267
- * pBuffer = pResult -> type1 .data ;
269
+ adc_reading = pResult -> type1 .data ;
268
270
#endif
269
271
} else {
270
- * pBuffer = pResult -> type2 .data ;
272
+ adc_reading = pResult -> type2 .data ;
271
273
}
274
+ adc_reading = adc_reading * ((1 << 16 ) - 1 ) / ADC_PIN_MAX_VALUE ;
275
+ * pBuffer = (uint16_t )adc_reading ;
272
276
captured_bytes += sizeof (uint16_t );
273
277
captured_samples ++ ;
274
278
} else {
0 commit comments