Interesting. I'm doing something very similar and continuous reading 4 channels interleaved on esp32. The interleave pattern was predictable up to about 270K total samples/sec. Above that the pattern gets scrambled, repeating, skipping. I take the raw 16 bit samples and split each sample into a 4-bit channel ID and a 12-bit value. You might be seeing something similar if your 80kHz is per channel for 4 or more channels (320K samples/sec). I'm using 264K at the moment. Fast enough for 60Hz power line monitoring.
Experiment, using esp-idf/examples/peripherals/adc/dma_read/main/adc_dma_example_main.c
mod for esp32 to read 4 channels in sequence, original low freq, works fine
Code: Select all
static adc_channel_t channel[4] = {ADC1_CHANNEL_7,ADC1_CHANNEL_6,ADC1_CHANNEL_5,ADC1_CHANNEL_4};
I (8651) ADC DMA: Unit: 1, Channel: 7, Value: 0
I (8651) ADC DMA: Unit: 1, Channel: 4, Value: 0
I (8661) ADC DMA: Unit: 1, Channel: 5, Value: 0
I (8661) ADC DMA: Unit: 1, Channel: 6, Value: 0
I (8671) ADC DMA: Unit: 1, Channel: 7, Value: 0
I (8681) ADC DMA: Unit: 1, Channel: 4, Value: 0
I (8681) ADC DMA: Unit: 1, Channel: 5, Value: 0
I (8691) ADC DMA: Unit: 1, Channel: 6, Value: 0
I (8691) ADC DMA: Unit: 1, Channel: 7, Value: 0
I (8701) ADC DMA: Unit: 1, Channel: 4, Value: 0
I (8701) ADC DMA: Unit: 1, Channel: 5, Value: 0
I (8711) ADC DMA: Unit: 1, Channel: 6, Value: 0
I (8711) ADC DMA: Unit: 1, Channel: 7, Value: 0
mod for 280K, this is too high, the channel ordering is puzzling
I (4481) ADC DMA: Unit: 1, Channel: 7, Value: 0
I (4491) ADC DMA: Unit: 1, Channel: 4, Value: 0
I (4491) ADC DMA: Unit: 1, Channel: 6, Value: 0
I (4501) ADC DMA: Unit: 1, Channel: 7, Value: 0
I (4501) ADC DMA: Unit: 1, Channel: 5, Value: 0
I (4511) ADC DMA: Unit: 1, Channel: 5, Value: 0
I (4511) ADC DMA: Unit: 1, Channel: 4, Value: 0
I (4521) ADC DMA: Unit: 1, Channel: 4, Value: 0
I (4521) ADC DMA: Unit: 1, Channel: 7, Value: 0
I (4531) ADC DMA: Unit: 1, Channel: 7, Value: 0
I (4541) ADC DMA: Unit: 1, Channel: 5, Value: 0
I (4541) ADC DMA: Unit: 1, Channel: 6, Value: 0
mod down to 270K, the channel ordering makes sense again
I (3341) ADC DMA: Unit: 1, Channel: 7, Value: 0
I (3341) ADC DMA: Unit: 1, Channel: 4, Value: 0
I (3351) ADC DMA: Unit: 1, Channel: 5, Value: 0
I (3351) ADC DMA: Unit: 1, Channel: 6, Value: 0
I (3361) ADC DMA: Unit: 1, Channel: 7, Value: 0
I (3361) ADC DMA: Unit: 1, Channel: 4, Value: 0
I (3371) ADC DMA: Unit: 1, Channel: 5, Value: 0
I (3371) ADC DMA: Unit: 1, Channel: 6, Value: 0
I (3381) ADC DMA: Unit: 1, Channel: 7, Value: 0
I (3381) ADC DMA: Unit: 1, Channel: 4, Value: 0
I (3391) ADC DMA: Unit: 1, Channel: 5, Value: 0
I (3401) ADC DMA: Unit: 1, Channel: 6, Value: 0
I (3401) ADC DMA: Unit: 1, Channel: 7, Value: 0
My original working prototype at a lower frequency assumed the channel order would be stable. Ver 2 ran at a higher frequency and the unexpected scrambled channel ordering meant sometimes I'd get a volt reading when I thought I was reading amps.
https://community.jmp.com/t5/Uncharted/ ... a-p/562554