Flexible static memory controller (FSMC) RM0008
488/1096 Doc ID 13902 Rev 12
21 Flexible static memory controller (FSMC)
Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx
microcontrollers where the Flash memory density ranges between 16 and 32 Kbytes.
Medium-density devices are STM32F101xx and STM32F103xx microcontrollers where
the Flash memory density ranges between 32 and 128 Kbytes.
High-density devices are STM32F101xx and STM32F103xx microcontrollers where the
Flash memory density ranges between 256 and 512 Kbytes.
XL-density devices are STM32F101xx and STM32F103xx microcontrollers where the
Flash memory density ranges between 768 Kbytes and 1 Mbyte.
Connectivity line devices are STM32F105xx and STM32F107xx microcontrollers.
This section applies to high-density and XL-density devices only.
21.1 FSMC main features
The FSMC block is able to interface with synchronous and asynchronous memories and 16-
bit PC memory cards. Its main purpose is to:
● Translate the AHB transactions into the appropriate external device protocol
● Meet the access timing requirements of the external devices
All external memories share the addresses, data and control signals with the controller.
Each external device is accessed by means of a unique chip select. The FSMC performs
only one access at a time to an external device.
The FSMC has the following main features:
● Interfaces with static memory-mapped devices including:
– Static random access memory (SRAM)
– Read-only memory (ROM)
– NOR Flash memory
– PSRAM (4 memory banks)
● Two banks of NAND Flash with ECC hardware that checks up to 8 Kbytes of data
● 16-bit PC Card compatible devices
● Supports burst mode access to synchronous devices (NOR Flash and PSRAM)
● 8- or 16-bit wide databus
● Independent chip select control for each memory bank
● Independent configuration for each memory bank
● Programmable timings to support a wide range of devices, in particular:
– Programmable wait states (up to 15)
– Programmable bus turnaround cycles (up to 15)
– Programmable output enable and write enable delays (up to 15)
– Independent read and write timings and protocol, so as to support the widest
variety of memories and timings