-->
Page 1 of 1

Interfacing ESP-12s with ADS1299 using SPI

PostPosted: Wed Apr 24, 2019 4:35 pm
by mark.o.s14
Hello,

I want to design a schematic and PCB to interface an ESP-12s directly with the ADS1299 (8 channel 24-bit ADC, which communicates over SPI).
I plan to use GPIO 12, 13, 14 for MISO, MOSI, SCLK.
I need to use another GPIO as an external interrupt, and 3 outputs for the start, reset and pwdn pins on the ADS1299 chip.
Are there any particular pins I should or shouldn't use for these functions? Am I right in saying I'm only really left with 3 GPIOs that aren't used by the SPI and start-up functions?
Is there any reason this is not possible? Clock speeds? Clock accuracy? Not enough power? Resources?
I haven't seen any projects doing it so far, so I assume there's a reason for that?
The ADC will be sending 240bits at 250Hz. Is the SPI line on the ESP-12s able to handle this?
Also, is the chip fast enough to be able to then send this 240bits at 250Hz over Wifi without losing data?

I have followed this as essentially the bare minimum external components to get started with the ESP-12s.
Is there any other external components I'm missing? I don't need an external flash chip or anything like that do I? That's internally connected to the bottom SPI pins isn't it?
I will write the code in Arduino IDE. Is the easiest method to program the ESP-12s using a USB-to-Serial converter? Pull GPIO0 and RST low to enable programmer mode?
Image

Any advice would be greatly appreciated.

Mark

Re: Interfacing ESP-12s with ADS1299 using SPI

PostPosted: Wed Apr 24, 2019 11:09 pm
by rudy
When I use SPI I use GPIO15 for the chip enable. The pull down resistor will momentarily enable the connected device on star up but that shouldn't matter on input type devices.

I took a brief look at the ADS1299 and I didn't see any reason it should be a problem with the ESP8266.

You don't need any extra external memory. The connections on the bottom of the ESP-12 type modules are almost always unused.

One thing to keep in mind is that the ESP8266 is running the WiFi functions and that needs to be serviced. It needs some time and when it takes that time your code needs to wait. This is not a problem with most applications. But if an application (other than the WiFi) need complete control over when it did things then the ESP32 might be a better choice since it has two cores. One could do the WiFi and the other can do microcontroller tasks with little interference.

By default the clock frequency selected for the ESP8266 with the Arduino framework is 80MHz. You might want to switch that to the 160MHz option.

The ESP-12S has 12K pull up resistors on reset, enable and GPIO0. And 12K pull down on GPIO15. 10K would be better but 12K seems to work fine. It doesn't have the bottom row of connections that the other ESP-12 series parts have. But since they are not used I consider that a plus.