新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > [ARM筆記]存儲控制器的寄存器使用方法

[ARM筆記]存儲控制器的寄存器使用方法

作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏

  存儲器共有13個寄存器,BANK0~BANK5只需要設(shè)置BWSCON和BANKCONx(x為0~5)兩個寄存器;BANK6、BANK7外接時,除了BWSCON和BANKCONx(x為6、7)外,還要設(shè)置REFRESH、BANKSIZE、MRSRB6、MRSRB7等4個寄存器。下面分類說明(“[y:x]”表示占據(jù)了寄存器的位x、x+1、……、y):

本文引用地址:http://m.butianyuan.cn/article/201612/340974.htm

  1. 位寬和等待控制寄存器BWSCON(Bus Width & Wait Status Control Register)

  BWSCON中每4位控制一個BANK,最高4位對應(yīng)BANK7、接下來4位對應(yīng)BANK6,依此類推。

  (1)STx:啟動/禁止的數(shù)據(jù)掩碼引腳,對于,此位為0;對于SRAM,此位為1。Determine SRAM for using UB/LB for bank x, 0 = Not using UB/LB (The pins are dedicated nWBE[3:0])1 = Using UB/LB (The pins are dedicated nBE[3:0])。

  (2)WSx:是否使用存儲器的WAIT信號,通常設(shè)為0。Determine WAIT status for bank x, 0 = WAIT disable 1 = WAIT enable。

  (3)DWx:使用兩位來設(shè)置相應(yīng)BANK的位寬,0b00對應(yīng)8位,0b01對應(yīng)16位,0b10對應(yīng)32位,0b11表示保留。

  比較特殊的是BANK0,它沒有ST0和WS0,DW0([2:1])只讀——由硬件跳線來決定:0b01表示16位,0b10表示32位,BANK0只支持16、32兩種位寬。The states are selected by OM[1:0] pins。

  2. BANK控制寄存器BANKCONx(BANK CONTROL REGISTER,x為0~5,(BANKCONx: nGCS0-nGCS5))

  這幾個寄存器用來控制BANK0~BANK5外接設(shè)備的訪問時序,一般使用默認(rèn)的0x0700即可。

  3. BANK控制寄存器BANKCONx(BANK CONTROL REGISTER,x為6~7,(BANKCONx: nGCS6-nGCS7))

  在8個BANK中,只有BANK6和BANK7可以外接SRAM和SDRAM,所以BANKCON6~BANKCON7與BANKCON0~BANKCON5有點(diǎn)不同。

  MT([16:15])Determine the memory type for bank6 and bank7。00 = ROM or SRAM,01 = Reserved (Do not use),10 = Reserved(Do not use),11 = Sync. DRAM。

  當(dāng)MT=0b00時,此寄存器與BANKCON0~BANKCON5類似,不再贅述。

  當(dāng)MT=0b11時,此寄存器其他值設(shè)置如下。

  Trcd([3:2]):RAS to CAS delay,設(shè)為推薦值0b01。

  SCAN([1:0]):SDRAM的列地址位數(shù),00 = 8-bit;01 = 9-bit;10= 10-bit

  4. 刷新控制寄存器REFRESH(REFRESH CONTROL REGISTER):設(shè)為0x008C0000+R_CNT

  (1)REFEN([23]):0=禁止SDRAM的刷新功能,1=開啟SDRAM的刷新功能。

  (2)TREFMD([22]):SDRAM的刷新模式,0=Auto Refresh,1=Self Refresh(一般在系統(tǒng)休眠時使用)。

  (3)Trp([21:20]):設(shè)為0即可。

  (4)Tsrc([19:18]):設(shè)為默認(rèn)值0b11即可。

  (5)Refresh Counter([10:0]):即上述的R_CNT,可按如下方式計算(SDRAM時鐘頻率就是HCLK):

  R_CNT=2^11+1-SDRAM時鐘頻率(MHz)*SDRAM刷新頻率(us)

  Refresh period = (211-refresh_count+1)/HCLK

  SDRAM的刷新周期在SDRAM的數(shù)據(jù)手冊上有標(biāo)明,例如HY57V561620B的數(shù)據(jù)手冊上有這么一句話“8192 refresh cycles / 64ms”。所以,刷新周期=64ms/8192=7.8125us。

  在未使用PLL時,SDRAM時鐘頻率等于晶振的12MHz。

  現(xiàn)在可以計算:R_CNT=2^11+1-12*7.8125=1955

  所以,在未使用PLL時,REFRESH=0x008C0000+1955=0x008C07A3。

  5. BANKSIZE寄存器REFRESH(BANKSIZE REGISTER)

  (1)BURST_EN([7])

  0=核禁止突發(fā)傳輸,1=核支持突發(fā)傳輸。

  (2)SCKE_EN([5])

  0=不使用SCKE信號SDRAM進(jìn)入省電模式,1=使用SCKE信號令SDRAM進(jìn)入省電模式。

  (3)SCLK_EN([4])

  0=時刻發(fā)出SCLK信號,1=僅在訪問SDRAM期間發(fā)出SCLK信號(推薦)。

  (4)BK76MAP([2:0])

  設(shè)置BANK7/6的大小。BANK0~5的地址空間大小都是固定的128MB,地址范圍是(x*128M)到(x+1)*128-1,x表示0到5。BANK6/7的大小是可變的,以保持這兩個地址的連續(xù),即BANK7的起始地址會隨它們的大小變化。BK76MAP的取值意義如下:

  010 = 128MB/128MB;001 = 64MB/64MB;000 = 32M/32M;111 = 16M/16M;110 = 8M/8M;101 = 4M/4M;100 = 2M/2M

  6. SDRAM模式設(shè)置寄存器MRSRBx(SDRAM MODE REGISTER SET REGISTER,x為6~7)

  能修改的只有位CL([6:4]),這是SDRAM時序的一個時間參數(shù):

  CAS latency 000 = 1 clock, 010 = 2 clocks, 011=3 clocks



關(guān)鍵詞: ARM SDRAM

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉