ESP32S3 as QSPI Slave
Posted: Mon Sep 15, 2025 9:09 pm
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:
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!
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
};
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!