ARM與不同位寬存儲器的地址線錯位接口
這種操作也符合使用8位單片機時候的習(xí)慣,WR扮演了“寫”的角色。
網(wǎng)友wag提出這樣的問題,能否用ARM的WE引腳直接連接到存儲器芯片的WE引腳。有這樣的問題可能是源于以前的習(xí)慣,也可能是不清楚RBLE位為0時,寫訪問期間BLS[3:0]引腳的狀態(tài)。
LPC2210/2220 User Manual 上面介紹了RBLE=0的時候的讀寫情況。EMC的WE信號沒有被使用。在寫周期,BLS[3:0]拉低,將數(shù)據(jù)送到要寫入的地址。對于讀周期,BLS[3:0]拉高。
網(wǎng)友sky421提到“我用的是2214,接一片8位的RAM,寫的時候WE腳不會有變化,BLS0在變化”
我個人理解,如果RBLE=0,BLS引腳就取代了WR的功能,WR腳就不可以使用了。
有心的朋友可以用邏輯分析儀測一下,實際情況如何,驗證一把。
總結(jié),當RBLE=1,WR 有效,BLS充當字節(jié)選擇,其隨WR,OE的變化而變化,讀、寫操作時 BLS都是低電平,此時用于有字節(jié)選擇的外部設(shè)備。
本文引用地址:http://m.butianyuan.cn/article/201611/321046.htm不是ARM9 S3C2440的,但是有相似之處!
存儲器映射:
0-1G(0x0000,0000 - 0x3fff,ffff):片內(nèi)Flash.
1-2G(0x4000,0000 - 0x7fff,ffff):片內(nèi)RAM.
2-3.5G(0x8000,0000 - 0xbfff,ffff - 0xdfff,ffff):片外存儲器。
3.5G - 3.75G(0xe000,0000 - 0xefff,ffff): VPB外設(shè)。
3.75G - 4G(0xf000,0000 - 0xffff,ffff): AHB外設(shè)。
雖然ARM7的尋址空間為4G,但是LPC2200系列只提供A0~A23總共16M的地址。片選信號CS0 - CS3是A24和A25的譯碼輸出,將片外存儲區(qū)0x8000,0000 - 0x83ff,ffff劃分為bank0 - bank3,共16M*4=64M.這4個bank可以被分別配置為8/16/32位總線寬度。復(fù)位時,bank0的總線寬度由Boot1:0引腳決定, bank1為32位,bank2為16位,bank3為8位。
字節(jié)定位信號(BLS0 - BLS3)協(xié)調(diào)總線寬度和外存芯片數(shù)據(jù)線寬度。
當Memory由“字節(jié)寬度器件”(如62256)或者“未按照字節(jié)區(qū)分的多字節(jié)器件”組成時,應(yīng)將RBLE設(shè)置為"0"。此時,讀訪問時EMC將BLS0~BLS3拉高。
當Memory由“含有字節(jié)選擇輸入的16位或32位器件”組成時,應(yīng)將RBLE設(shè)置為"1"。此時,讀訪問時EMC將BLS0~BLS3拉低。
所以,當Memory由62256組成時,由于不需要“片內(nèi)字節(jié)選擇輸入”,故令RBLE = 0,則BLS0~BLS3只會與nWR同步,可以代替nWR使用。
但是,當Memory由IS61LV25616AL組成時,由于該芯片有"nLB"和"nUB"控制低/高8位的輸入,故令RBLE = 1,則BLS0~BLS3與nRD和nWR都會同步,此時,不可以使用BLS0~BLS3代替nWR信號。
地址數(shù)據(jù)總線:D0 - D31, A0 - A23, OE, WE, CS0 - CS3, BLS0 - BLS3
啟動后由P2.7/P2.6控制引導(dǎo)方式,然后由程序設(shè)置MEMMAP決定中斷向量的映射。
BCFG0 - BCFG3控制讀寫延時和總線寬度。注意復(fù)位后的默認值。
PINSEL2控制引腳功能。
Boot Block
LPC2114/2214的BootBlock被固化在最高的Flash塊中,運行時被映射到0x7FFF,E000 - 0x7FFFF,FFFF的區(qū)域。而LPC2210沒有片內(nèi)Flash,但它有8K片內(nèi)ROM存儲了BootBlock,也被映射到0x7FFF,E000處。
評論