<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > s3c44b0存儲(chǔ)器初始化簡(jiǎn)介

          s3c44b0存儲(chǔ)器初始化簡(jiǎn)介

          作者: 時(shí)間:2016-11-29 來源:網(wǎng)絡(luò) 收藏
          s3c44b0存儲(chǔ)器初始化的問題困擾已久,今天總算是搞明白了點(diǎn),如下總結(jié)吧。

          貼段代碼先:

          本文引用地址:http://www.ex-cimer.com/article/201611/323259.htm

          SMRDATA DATA
          DCD BWSCON_val ;bank0=OM[1:0] bank1-bank7=16bit bank2=8bit
          DCD ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC));bankcon0
          DCD ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC));bankcon1
          DCD ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC));bankcon2
          DCD ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC));bankcon3
          DCD ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC));bankcon4
          DCD ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC));bankcon5
          DCD ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN)) ;bankcon6
          DCD ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN)) ;bankcon7
          DCD ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT) ;refresh register
          DCD 0x16 ;SCLK power mode bank6/7size=8M/8M
          DCD 0x20 ;MRSR6 CL=2clk
          DCD 0x20 ;MRSR7
          ALIGN

          ADS1.2下的存儲(chǔ)器初始化代碼。剛開始看到的時(shí)候一頭霧水,因?yàn)椴欢模篠MRDATA DATA 。。。ALIGN

          格式怎么用的,后來再慢慢看,在該段代碼前發(fā)現(xiàn)這一段代碼:

          ldr r0,=SMRDATA
          ldmia r0,{r1-r13}
          ldr r0,=BWSCON
          stmia r0,{r1-r13}

          總算才明白,原來是定義了13個(gè)4字節(jié)數(shù)據(jù) 用于初始化以BWSCON寄存器開始的連續(xù)13個(gè)寄存器。

          BWSCON=0x01c80000    BANKCON0=0x01c80004     BANKCON1=0x01c80008    

          BANKCON2=0x01c8000c    BANKCON3=0x01c80010    BANKCON4=0x01c80014

          BANKCON5=0x01c80018 BANKCON6=0x01c8001c     BANKCON7=0x01c80020

          REFRESH=0x01c80024    BANKSIZE=0x01c80028     MRSRB6=0x01c8002c

          MRSRB7=0x01c80030 這13個(gè)寄存器用于存儲(chǔ)器的讀寫時(shí)鐘及刷新等的設(shè)置,且只能用STMIA指令來操作。所以這就是為什么存儲(chǔ)器初始化的操作都是如上的形式。

          這篇日志的重點(diǎn)也許并不在這,而在于怎么求的上述分配數(shù)據(jù)空間所給的初始值。

          BWSCON用于定義存儲(chǔ)器的數(shù)據(jù)寬度,由于板子上的flash,sdram都是16bit的,故BSWCON_val=0x01000000

          由于只用到板子上的flash為BANK0 sdram為BANK6 故只需設(shè)置BANKCON0 BANKCON6。

          現(xiàn)給出相關(guān)參數(shù)及其解釋:

          Tacs:設(shè)置nGCSn有效前地址的建立時(shí)間
          Tcos:設(shè)置nOE有效前片選信號(hào)的建立時(shí)間 //讀
          Tacc:訪問周期
          Tcoh:nOE無效后片選信號(hào)的保持時(shí)間
          Tcah:nGCSn無效后地址信號(hào)的保持時(shí)間
          Tacp:頁模式的訪問周期
          PMC:頁模式的配置,每次讀寫的數(shù)據(jù)數(shù)

          依據(jù)flash芯片手冊(cè)(sst39vf160-90)得知下列AC CHARACTAR

          tRC(min) = 90 ns tACC(max) = 90 ns tCE(max) = 90 ns tOE(max) = 45 ns

          依據(jù)flash讀時(shí)序和s3c44b0存儲(chǔ)器操作時(shí)序圖得知:

          Tacs = tACC - tCE = 90 - 90 =0
          Tcos = tCE - tOE = 90 - 45 = 45 ns
          Tacc = tRC - tACC +tOE = 90 - 90 + 45 = 45 ns
          Toch = 0
          Tcah = 0

          并通過s3c44b0手冊(cè)上如下描述:All types of master clock in this memory controller correspond to the bus clock. For example, MCLK in DRAM and SRAM is same as the bus clock, and SCLK in SDRAM is also the same as the bus clock. In this chapter (Memory Controller), one clock means one bus clock.

          可知:存儲(chǔ)器操作周期與總線時(shí)鐘頻率的關(guān)系,故可知道BANKCON0 中各參數(shù)字段的取值如下:

          pllout=40Mhz (板子系統(tǒng)時(shí)鐘設(shè)置為40MHZ)
          Tclk = 1 / 40Mhz = 25ns
          Tacs = 0/25ns =0 clk
          Tcos = 45/25 = 1.8 clk (4clk)(11) (取大于計(jì)算的時(shí)鐘周期是為了使系統(tǒng)運(yùn)行的更穩(wěn)定)
          Tacc = 45/25 = 1.8 clk (2clk) (001) (同上)
          Toch = 0 = 0 clk
          Tcah = 0 = 0 clk

          MRSRB6,BANKCON6及REFESH各寄存器求值如下:

          據(jù)HY57V641620HGT -7芯片手冊(cè),SCAN = 00 column address number = 8-bit (Column addrdess:CA0~CA7)

          Trcd = 20 ns CL = 2 clk Fsdram = 100MHZ T=10 ns 所以

          Trcd = 20/10 = 2 clk (01) Trp = 2 clk(00) Trc = 7clk(11)

          同樣,查看s3c44b0芯片手冊(cè):

          Refresh period(us) = (2^11 - refresh_count +1)/MCLK(Mhz)
          4096 refresh cycles / 64ms
          refresh period(us) = 64ms/4096 = 15.625 us
          MCLK = 40 Mhz
          refresh_count = 1424

          BWSCON_val= 0x11110090

          而據(jù)sdram芯片手冊(cè),得知其大小均為8M(B)= 4(bank)*1M*16bit(SDRAM)

          至此,有關(guān)存儲(chǔ)器的初始化的一些數(shù)值上的計(jì)算算是完了~~

          難點(diǎn)還是時(shí)序圖的理解吧,其實(shí)只要理解了所要用的幾個(gè)參數(shù)段的意義就容易在復(fù)雜的時(shí)序圖中找出其中的換算關(guān)系~~~~關(guān)鍵還是要看得懂datasheet ,英文的,難~~



          關(guān)鍵詞: s3c44b0存儲(chǔ)器初始

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();