I'm considering to design an audio processor based on the STM32H7. I want to experiment with MCU-based DSP instead of using a dedicated DSP. I chose this high-end ARM MCU to have ample headroom for audio DSP calculations.

I also want to program a delay. Assuming I'm using 24-bit samples at 48kHz, a three seconds buffer for a three second delay on a mono channel is already going to take up 432kB memory. Just for fun I looked for the maximum external memory configuration, which is SDRAM with 13-bit row address, 11-bit column address and 4 internal banks, giving 256MB memory (32-bit word length). Two of these can be addressed, giving a total of 512MB.

I checked online to find memory ICs that matched that spec, but did not find any with the correct row/column address lengths and also all of those matching the memory configuration were DDR modules and the STM32H743 does not support DDR.

My questions are:

  • Can I use a DDR chip on a non-DDR controller?
  • Is it crazy to attempt to add 512MB of external SDRAM to a STM32H7? Or why are memory modules that match these criteria so hard to find?
  • Would perhaps Quad-SPI Flash fit better? I'm afraid it's too slow for an audio delay application.
  • \$\begingroup\$ Looking at the costs - if you need so much RAM why not use a full-featured MPU? It may actually end up being cheaper... \$\endgroup\$
    – jaskij
    Sep 22, 2018 at 23:41
  • \$\begingroup\$ Even a high-end Arduino comes with a piggy-back 256MB Dram IC in a BGA package. They offer so much because they do not expect expansion of Dram, as is would be untenable. A bona-fide CPU with a Dram controller built in is more like what you need. They can control several GB of DRAM as part of the same memory map. The drivers are supposed to keep house-keeping chores abstracted from the programmer and user, such as columns and bank sizes. \$\endgroup\$
    – user105652
    Sep 23, 2018 at 0:28
  • 1
    \$\begingroup\$ If you actually need that much memory, you have chosen the wrong compute platform. The irony is that cheap external-memory SoC modules don't really cost any more than high end-internal flash MCUs; they are more complicated, yes, but not more expensive. \$\endgroup\$ Sep 23, 2018 at 4:03
  • \$\begingroup\$ Thank you for the input. I considered an MPU at first but it is a significant step up in complexity (from a board design point of view) from a LQPF M7. In the end I massively exaggerated the amount of required RAM, in the end, for 10 seconds stereo delay, i just need around 3MB of RAM, so adding 32MB of external RAM should totally sufice. \$\endgroup\$
    – Xaser
    Sep 23, 2018 at 9:07

2 Answers 2


Can I use a DDR chip on a non-DDR controller?


Is it crazy to attempt to add 512MB of external SDRAM to a STM32H7?

It's just barely possible, but probably not worth the trouble. The largest SDRAM parts available are 512 MBit (not MByte). They can be configured as 64M x 8. Four of these in parallel can operate as a 64M x 32 = 256 MB memory; two banks of this gives you 512 MB.

Would perhaps Quad-SPI Flash fit better?

No. Flash isn't appropriate for applications which require memory to be continuously written to.


If I interpret your question more broadly as 'How do I connect a large external memory to the STM32H7', a solution is to examine the design of the ST Microelectronics STM32H743 evaluation board with 32M bytes of DRAM, for which ST Microelectronics provides complete design information: schematics, PCB layout, BOM, and software:


If you want to test your design ideas using such an evaluation board, you might consider the ST Microelectronics STM32F746 Discovery Kit, because while the processor is only half the clock rate of the STM32H7, the Discovery Kit is inexpensive and widely available. This board has 8M bytes of DRAM (again, ST Microelectronics provides full design documentation):


If I interpret your question even more broadly, as looking for an embedded solution with a fast processor and large DRAM, I agree with the comment by Jan Dorniak, and suggest looking at a small embedded single-board computer (SBC). These modules are easy to integrate into a product. That has been my solution for similar problems. The power consumption is higher than the STM32H7, but the NXP i.MX6 SBC I use in one design provides an astonishing amount of processing power for 2-3 Watt power consumption (for comparison, STCube32MX estimates 300mW consumption for the STM32H7 processor core at 400MHz, I do not have figures for the entire board).

A complication when using high-performance processors for such processing is input-to-output synchronization. If your solution for the STM32H7 is to use DMA for SPI I/O, and keep the input and output channels synchronized, be aware that (at least on the STM32F7, with which I have some experience), the Cortex-M7 processor data cache must be dealt with, because the DMA controller bypasses the processor cache. The most elegant solution is to use the processor MPU to make a small section of the memory non-cacheable, and use that for DMA I/O buffers.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.