Mini2440學習筆記(三) SDRAM

2021-05-26 09:40:45 字數 2718 閱讀 5979

2440的儲存控制器有個8個bank:bank0~bank7,對外引出27根位址線(addr0~addr26),訪問範圍是128m,有8個片選訊號(ngcs0~ngcs7)與之對應,所有可以訪問1g的位址空間。bank6和bank7的可訪問位址空間是可以設定的。

只有bank6和bank7可以外接sdram或sram。

cpu提供了一組用於sdram的訊號(具體內容在datasheet的signal description):

nsras  o  sdram 行位址選通 

nscas  o  sdram 列位址選通 

nscs[1:0]  o  sdram 片選 

dqm[3:0]  o  sdram 資料遮蔽 

sclk[1:0]  o  sdram 時鐘 

scke  o  sdram 時鐘使能 

nbe[3:0]  o  高位位元組/低位位元組使能(16 位 sram 情況時)   

nwbe[3:0]  o  寫位元組使能 

mini2440使用的sdram晶元是32m的hy57v561620,這是乙個4banks*4m*16bit的sdram,也就是由4個邏輯塊(logical bank,簡稱l-bank)組成,每個l-bank有4m儲存單元,每個單元是16bit。所有它的資料線是16根(dq[15:0]);位址線有13根(a[12:0]),其中行位址13根(a[12:0]),列位址9根(a[8:0]);還有兩根訊號線(ba[1:0])用於選擇l-bank。

兩個晶元(u6和u7)並接,就可以組成位寬32位的sdram,空間為64m,對映到ngcs6(bank6),訪問的位址空間為0x30000000~0x33ffffff。

管腳連線方式如下:

位址線:

addr[14:2]同時連線u6和u7的a[12:0];(位址線的連線方法可以依據s3c2440a的datasheet,儲存器控制器一節中的「儲存器(sram/sdram)的位址引腳連線」)

資料線:

data[15:0]連線u6的dq[15:0];

data[31:16]連線u7的dq[15:0];

l-bank選擇:

使用addr[25:24]同時連線u6和u7的ba[1:0];(這個連線依據s3c2440a的datasheet,儲存器控制器一節中的「sdram bank位址引腳連線例子」)

sdram控制訊號:

scke連線u6和u7的時鐘使能訊號cke;

sclk0和sclk1分別連線u6和u7的時鐘訊號clk;

nscs0(d2管腳,與ngcs6同一引腳)同時連線u6和u7的片選訊號cs,低電平有效;

nsras同時連線u6和u7的行位址訊號ras,低電平有效;

nscas同時連線u6和u7的列位址訊號cas,低電平有效;

nwe(e6管腳)是匯流排控制訊號,同時連線u6和u7的寫使能訊號,低電平有效。

1. bwscon:0x48000000(位寬和等待控制暫存器)

每四位控制乙個bank,bank6對應[27:24]位;

st6 [27]:使能/禁止資料掩碼引腳,對於sdram,此位應該設為0,禁止。

ws6 [26]:使能/禁止wait訊號,設為0,禁止。

dw6 [25:24]:位寬,0b10表示32位。

2. bankcon6:0x4800001c(bank6的控制暫存器)

mt[16:15]:sram - 0b00,sdram - 0b11。

tcrd[3:2]:ras到cas的延遲,0b00,兩個時鐘;0b01,三個時鐘。

scan[1:0]:列位址數,0b01,9位。

當bank6或bank7外接sdram時,還需要設定如下暫存器:

3. refresh:0x48000024(重新整理控制暫存器)

refen[23]:sdram重新整理使能,設為1。

trefmd[22]:重新整理模式,設為0,自動重新整理。

trp[21:20]:ras預充電時間,0b00,兩個時鐘。

tscr[19:18]:半行週期時間,0b11,7個時鐘。

refresh counter[10:0]:重新整理計數器,計算公式如下:

2^11 + 1 - sdram時鐘頻率(hclk)(mhz) * 重新整理周期(μs)

在未使用pll時,hclk等於晶振頻率;

在hy57v561620的資料手冊裡有寫:8192 refresh cycles / 64ms,據此可以計算重新整理周期。

注:trp、trcd等設定,參照2440資料手冊裡的sdram時序圖。

4. banksize:0x48000028(bank大小暫存器)

burst_en[7]:設為1,arm核支援突發傳輸。

scke_en[5]:設為1,使用scke訊號使sdram進入省電模式。

sclk_en[4]:設為1,僅在訪問sdram時發出sclk訊號。

bk76map[2:0]:設定bank6/7的大小,0b001,64m。

5.mrsrb6:0x4800002c(sdram模式設定)

cl[6:4]:cas等待時間,0b010或0b011,2或3個時鐘。

在資料手冊裡有寫:promgrammable cas latency:2、3 clocks

hy57v561620資料手冊

s3c2440a資料手冊

s3c2440-sdram連線分析

Mini2440學習筆記(三) SDRAM(續)

從 nand flash 啟動cpu 時,cpu 會自動將 nand flash 開始的4k 資料複製到 4kb的內部 ram中 起始位址 0 然後位址 0開始執行。本例程先用彙編設定好 sdram 將程式從內部 ram複製到 sdram 然後跳轉到 sdram 執行。源 包括 sdram.s gp...

Mini2440學習筆記(一) Start

win7 openocd openjtag mini2440 按照 eclipse,openocd,openjtagv3嵌入式開發教程 將軟硬體安裝好。然後執行openocd ftd2xx。這個程式會作為乙個守護程序執行,等待客戶端 telnet或gdb 的連線,可以使用 h引數檢視該程式的一些可選...

(三)MINI2440的時鐘配置

時鐘源 om 3 2 選擇時鐘源 mpll main pll 主鎖相環 在mini2440開發板中,1 nreset為低時復位晶元,延時一段時間等待電壓穩定後,nreset才輸出高電平,cpu才可以工作。2 根據om 3 2 的值,選擇輸入時鐘源,在mini2440中,輸入時鐘源是12mhz的晶振 ...