新聞中心

        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://www.104case.com/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有點不同。

          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)閉
        主站蜘蛛池模板: 永仁县| 怀来县| 容城县| 格尔木市| 安多县| 天峻县| 农安县| 乐昌市| 通海县| 凉山| 东光县| 舒兰市| 鸡泽县| 左云县| 平泉县| 广河县| 田阳县| 韶山市| 龙游县| 廊坊市| 南华县| 绥宁县| 通河县| 印江| 双峰县| 黑山县| 尉犁县| 鱼台县| 徐水县| 沐川县| 阳曲县| 遂平县| 日土县| 常熟市| 高州市| 盈江县| 集安市| 阿拉善右旗| 巴中市| 栾城县| 浮梁县|