STM32F429驅動SDRAM


1 FMC

  STM32F429以外的控制器中,只有FSMC(可變靜態存儲控制器),不能驅動SDRAM這樣的動態存儲器,因為驅動SDRAM時需要定時刷新。STM32F429的FMC才支持該功能,且只支持普通的SDRAM,不支持DDR類型的SDRAM。

FMC可以用於驅動SRAM、SDRAM、NOR FLASH以及NAND FLASH類型的存儲器。

1.1 通信引腳

SDRAM引腳 FMC引腳 說明
CLK FMC_SDCLK 同步時鍾信號
CKE FMC_SDCKE1

時鍾使能信號

CS FMC_SDNE1 片選信號
CAS FMC_NCAS 列地址選通
RAS FMC_NRAS 行地址選通
WE FMC_SDNWE 寫使能
DQM[0:1] FMC_NBL[0:1] 數據輸入/輸出掩碼信號
BA[0:1] FMC_A[14:15] SDRAM芯片內部Bank地址輸入
A[0:11] FMC_A[0:11] 地址輸入
DQ[0:15] FMC_D[0:15] 數據輸入/輸出

CKE和CS作用:

FMC_SDCKE0,FMC_SDCLK0:FMC映射的SDRAM的存儲區域Bank1

FMC_SDCKE1,FMC_SDCLK1:FMC映射的SDRAM的存儲區域Bank2

1.2 地址映射

FMC_SDCKE0,FMC_SDCLK0:FMC映射的SDRAM的存儲區域Bank1(0xC000 0000~0xCFFF FFFF)

FMC_SDCKE1,FMC_SDCLK1:FMC映射的SDRAM的存儲區域Bank2(0xD000 0000~0xDFFF FFFF)

注意:這里的Bank和上面所講的SDRAM芯片內部存儲區域Bank1~4是不一樣的概念。

2 SDRAM控制原理

2.1 SDRAM信號線

 2.2 SDRAM地址線

  SDRAM包含有“A”以及“BA”兩類地址線:

A:行(Row)與列(Column)共用的地址線

BA:獨立的用於指定SDRAM芯片內部存儲陣列號(Bank)

   通訊時,當RAS=0,則“行地址選通器”被選通,地址線A[11:0]表示的地址會被輸入到“行地址譯碼器”中,行地址被選中;同時地址線BA[1:0]表示的Bank也被鎖存,選中要操作的Bank號;接着CAS=0,則“列地址選通器”被選通,地址線A[11:0]表示的地址會被輸入到“列地址譯碼及鎖存器”中作為列地址,完成尋址過程。

2.3 SDRAM數據線

  IS45s16400J存儲陣列的“數據寬度”是16位,但在實際應用中也可能會以8位寬度存取數據,這時我們只需要DQ[7:0]表示數據,而DQ[15:8]數據線表示的數據必須忽略。所以數據輸入輸出時,還會使用DQM[1:0]來配合,每根DQM線對應8位數據。如DQM0=0,DQM1=1時,數據線DQ[7:0]表示數據有效,而DQ[15:8]表示數據無效。

2.4 SDRAM容量計算

  已知IS45s16400J芯片行地址12根線,列地址8根,4個Bank,位寬16bit。

可以計算出:

SDRAM的總單元數 =(2^行地址選擇線)*(2^列地址選擇線)*Bank選擇線=2^(12+8)*4=2^10*4=1M bits*4

SDRAM總容量 = 單元數*位寬=1M bits*4*16=64M bits = 8MB(Bytes)

2.5 SDRAM的命令

(1)命令禁止

(2)空操作

(3)行有效

(4)列讀寫

(5)預充電

(6)刷新

(7)加載模式寄存器

2.6 SDRAM初始化流程

(1)給SDRAM上電,並提供穩定的時鍾,至少100us

(2)發送“空操作”(NOP)命令

(3)發送“預充電”(PRECHARGE)命令,控制所有Bank進行預充電,並等待tPR時間

(4)發送至少2個“自動刷新”(AUTO REFRESH)命令,每個命令后等待tRFC時間

(5)發送“加載模式寄存器”(LOAD MODE REGISTER)命令,配置SDRAM工作參數,並等待tMRD時間

(6)初始化完成,開始讀寫數據。

2.7 SDRAM的讀寫流程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM