Sigma Delta ADC on ESP32-S3

Marc_H
Posts: 2
Joined: Wed Dec 22, 2021 6:07 pm

Sigma Delta ADC on ESP32-S3

Postby Marc_H » Wed Dec 22, 2021 7:21 pm

Hello,
my plan is to use a AMC3306M25 (https://www.ti.com/product/AMC3306M25) on a project with a ESP32-S3 (N8R8).
I'm just a hobbyist without proper qualification but i like to build things and right now thats my favourite project.
I created the clock of 20MHz for the ADC with the LEDC without any problem but now i get stuck.
I search for the best way to store the data on the ESP.
The plan is to measure about a period of 2 seconds and store the bitstream inside the PSRAM.
Samplerate = 20MBit/s so i have to store 40MBits in the 8MByte PSRAM so this should fit.
First Question: How fast can the ESP32-S3 write data to the PSRAM on the N8R8?
My first idea to get the data from the Sigma Delta ADC was to use PCNT and two counters.
The first counter to count the ones from the adc and the second one to trigger an interrupt every n samples to store the data in the psram. The problem is that on this way i loose the bitstream the good thing is that i need less ram.
Now i read in the datasheet about RMT and that RMT uses APB CLK so sampling up to 40MHz is possible with RMT?
In combination with DMA from channel 7 it sounds perfect for me.
Someone else told me that I2S is the best for a work like this!? Is I2S on ESP32-S3 capable to generate a constant clock of 20 MHz, store the samples via DMA and trigger an interrupt every n samples to store the data to the PSRAM?
Please let me know your thoughts.

ESP_Sprite
Posts: 9708
Joined: Thu Nov 26, 2015 4:08 am

Re: Sigma Delta ADC on ESP32-S3

Postby ESP_Sprite » Thu Dec 23, 2021 1:59 am

I2S would be your best bet; if I recall correctly (don't have the documents here unfortunately, so I'm not 100% sure on this) it even has a PDM mode which can directly interpret the data your ADC sends out. (I'm not sure if that is usable yet and the TRM chapter on this is not released yet; it's a bit early days for this chip.)

Even if there's no PDM support, you could still use I2S to sample the signal directly; you'll just get a larger data stream. Should still be no issue to store it: 20MHz 1-bit samples means 2.5MByte per second; the ESP32S3 with quad (4-bit data bus) PSRAM can run the PSRAM at 120MHz which gives you a raw throughput of 60MByte/second.

Who is online

Users browsing this forum: No registered users and 53 guests