ESP32S3: SPIDriver, DMA and Buffer in SPIRAM
Posted: Sat Jun 07, 2025 11:54 am
Hi
Is there any limitation (chip side) that the SPI Driver using DMA cannot use TX buffers in SPIRAM memory?
From what I understand in the datasheet/reference manual, the GDMA module should be able to access internal RAM and external RAM, the SPI section doesn't seem to mention any limitation on this regard, but the ESP-IDF (v5.4.1) SPI driver implementation limits that the Buffer in case of DMA must be in internal RAM (inside SPI Driver)
And the function "esp_ptr_dma_capable" is only checking that the buffer must be in internal RAM, and if the buffer is in external RAM will attempt to allocate a buffer from internal memory.
Is this limitation from the chip itself, or is it a limitation of ESP-IDF on not supporting this correctly?
Thank You
Is there any limitation (chip side) that the SPI Driver using DMA cannot use TX buffers in SPIRAM memory?
From what I understand in the datasheet/reference manual, the GDMA module should be able to access internal RAM and external RAM, the SPI section doesn't seem to mention any limitation on this regard, but the ESP-IDF (v5.4.1) SPI driver implementation limits that the Buffer in case of DMA must be in internal RAM (inside SPI Driver)
Code: Select all
if (send_ptr && bus_attr->dma_enabled) {
if ((!esp_ptr_dma_capable(send_ptr) || tx_unaligned)) {
Is this limitation from the chip itself, or is it a limitation of ESP-IDF on not supporting this correctly?
Thank You