У STM32F429 есть аппаратный Flexible memory controller (FMC), который позволяет работать с:
- The NOR/PSRAM memory controller
- The NAND/PC Card memory controller
- The Synchronous DRAM (SDRAM/Mobile LPSDR SDRAM) controller
Для работы с SDRAM необходимо настроить timeout‘ы. Рассмотрим, что значит каждый timeout.
FMC_SDRAM_TimingTypeDef Timing;
Timing.LoadToActiveDelay = 2;
Timing.ExitSelfRefreshDelay = 7;
Timing.SelfRefreshTime = 4;
Timing.RowCycleDelay = 7;
Timing.WriteRecoveryTime = 2;
Timing.RPDelay = 2;
Timing.RCDDelay = 2;
NOTE: Все времена задаются в количествах тактирующих импульсов.
Для того, чтобы правильно их настроить, сверяемся с DataSheet на is42s16400j.
Внизу рисунки с выделенными на них временами (выделено красным), которые мы устанавливали выше. А ниже этих картинок описание, каждого параметра.
- LoadToActiveDelay (Tmrd) — время между записью в MODE-REGISTER и ACTIVATE.
- ExitSelfRefreshDelay (Txsr) — время между SELF-REFRESHING и ACTIVATE (exit self-refresh mode).
- SelfRefreshTime (Tras) — минимальное время между SELF-REFRESH.
- RowCycleDelay (Trc) — время между двумя командами REFRESH.
- WriteRecoveryTime (Twr) — задержка между командой WRITE и вызовом PRECHARGE.
- RPDelay (Trp) — время между командой PRECHARGE и любой другой командой.
- RCDDelay (Trcd) — время между подачей команды ACTIVATE и появлением данных на шине.