Page 1 of 1

ESP32S3 as QSPI Slave

Posted: Mon Sep 15, 2025 9:09 pm
by karol2228
Hello everyone,

first of all, sorry if this question sounds naive. I’m new to ESPs and my experience with MCUs is still quite limited. (For now at least ;) )

My goal is to transmit image data from an STM32U5 to an ESP32-C6 via Quad SPI (QSPI). I already achieved this with simple SPI, which was relatively easy thanks to the ESP-IDF API. For example, configuring SPI is done like this:

Code: Select all

spi_bus_config_t buscfg = {
        .mosi_io_num = PIN_MOSI,
        .miso_io_num = PIN_MISO,
        .sclk_io_num = PIN_SCLK,
        .quadwp_io_num = -1,
        .quadhd_io_num = -1
    };
Unfortunately, the same cannot be said about QSPI. Even though the buscfg structure suggests that it should be possible, I couldn’t get it to work. I also tried to implement QSPI by manually configuring the registers as described in the Technical Reference Manual – without success.

As far as I understand, QSPI requires a fixed frame with Command, Address, Dummy cycles, and Data. I implemented this on the sender (STM32), and I verified the signals with a logic analyzer. That part works for sure.

Has anyone here implemented something similar and could share their experience?
In the end, it should be possible to use the ESP32-C6 as a QSPI slave, since it’s clearly mentioned in the TRM – or am I misunderstanding something? I couldn’t find any useful information online.

Thanks in advance!

Re: ESP32S3 as QSPI Slave

Posted: Tue Sep 16, 2025 4:01 pm
by ahsrabrifat
The simplest way is to use regular SPI (4-wire). You’ve already got it working. If bandwidth is enough, this is the most stable solution.

Re: ESP32S3 as QSPI Slave

Posted: Tue Sep 16, 2025 6:06 pm
by karol2228
Hi ahsrabrifat,

yes, SPI works kind of. However, the bandwidth isn’t quite sufficient, since my goal is to transmit images of up to 5 megapixels.
On top of that, my STM32 is already wired for QSPI — so it would be a shame not to make use of it.

Re: ESP32S3 as QSPI Slave

Posted: Thu Apr 09, 2026 6:35 am
by nimaltd2
Hi, could you mange it? I could send data in DIO and DOUT correctly, But can read only first 3 bytes.
In QOUT QIO, esp receives randomey less 1-2 bytes.