Showing results for 
Search instead for 
Did you mean: 

FMC for STM32 in muxed mode

Kvon .1

Please help me with operation of the FMC module in STM32F407VE. It is necessary to connect external RAM memory; since FMC module in this microcontroller uses the address bus and data bus in muxed mode, its need to demultiplex this signals. For this purpose the nADV (nL) signal is used. This signal must route to external latches.

It is assumed to use RAM type IS61LV25616AL or something similar. Datasheet is here:

My questions:

1) Timing diagrams are shown only for accessing NOR FLASH in the Reference Manual (RM0090). It can be expected that in general timing diagrams should be the same for PSRAM (RM0090, see page 1547). However, it is not very clear on which edge the address bus should be latched. I suppose that address bus should be latched on rising edge; precisely during time between the falling and rising edges of the nADV (nL) signal the transients on traces must end and then the FMC module samples the data (for read mode). If this true, the two 74HC574 chip can be used to latch address.

By the way this IC is rather slow. Delay between input and output can be over 200 ns with a 2 V supply, and 45 ns with a 4.5 V supply. Although my circuit will operate on a 3.3 V supply, the delay will still remain big enough. Maybe I should look for something faster?

2) Since the data bus is 16-bit width FMC will use split access to call 32-bit data (RM0090, see page 1533). I wonder what consequences I should expect in this case besides the increase in the data access time compared to the data access time in the internal memory. Also is it true that good practice not to make calls to external memory from interrupt routines, and as a last resort - to use the __DSB () instruction?

3) The data line would be in a high-Z state for a short time in the multiplexed mode, as well as during byte-by-byte access. Should I pull these lines to the ground or power with 1…10k resistors?


I don't think there's much expertise here for muxed mode of FSMC.

  1. There are faster alternatives for '574, and also 16-bit ones, usually marked 74xxx16374. Have a look at TI, onsemi, nexperia offerings.
  2. The transaction split should be transparent to the user. You may perhaps want to experiment prior building the final hardware, the resulting speed may be shockingly low. Unfortunately I don't know of any ready-made devboard you could use.
  3. I don't think there's any reason to do that.