Do we need to "burst" (periodically toggle CS) to stream data to our ESP32S3 via SPI?
Posted: Sat Jul 11, 2026 1:24 am
Hello there. We are using an STM32H7 as a SPI master connected to our ESP32-S3 as a slave. I've read over the documentation on how to code the ESP32 end, below:
https://github.com/hideakitai/ESP32SPISlave
https://docs.espressif.com/projects/esp ... slave.html
As far as I can see, the SPI slave API (eg spi_slave_queue_trans, spi_slave_get_trans_result) will not return any data until the slave is deselected (set CS to high). We are sending a large set of data, being forwarded by the ESP32-S3 over Wifi, more than can fit in a single buffer, so the only option I see is on the master, is to send the data N bytes at a time ("bursts" for lack of a better term) and then deselect-wait-select CS so that the ESP-IDF functions return the data and my application can forward the data, before resuming listening for the next "burst".
This is adding a fair amount of complexity -- not to mention slows things down -- and we are seeing problems, so I just wanted to confirm: is this the way? Do we need to "burst" data (ie periodically toggle CS) in order to stream data to the ESP32S3 via SPI?
https://github.com/hideakitai/ESP32SPISlave
https://docs.espressif.com/projects/esp ... slave.html
As far as I can see, the SPI slave API (eg spi_slave_queue_trans, spi_slave_get_trans_result) will not return any data until the slave is deselected (set CS to high). We are sending a large set of data, being forwarded by the ESP32-S3 over Wifi, more than can fit in a single buffer, so the only option I see is on the master, is to send the data N bytes at a time ("bursts" for lack of a better term) and then deselect-wait-select CS so that the ESP-IDF functions return the data and my application can forward the data, before resuming listening for the next "burst".
This is adding a fair amount of complexity -- not to mention slows things down -- and we are seeing problems, so I just wanted to confirm: is this the way? Do we need to "burst" data (ie periodically toggle CS) in order to stream data to the ESP32S3 via SPI?