摘要
LPC17xx系列MCU都帶有EMC接口,外部動(dòng)態(tài)存儲(chǔ)器可以通過(guò)EMC接口掛載在MCU的地址總線上,然后可以通過(guò)直接訪問(wèn)MCU的地址總線來(lái)間接訪問(wèn)SDRAM了。當(dāng)然在對(duì)SDRAM進(jìn)行操作之前,需要對(duì)其進(jìn)行初始化流程,也就是相當(dāng)于打通EMC接口與SDRAM之間的橋梁。橋梁通了,訪問(wèn)就不成問(wèn)題了。
文章預(yù)覽 首先說(shuō)明的是SDRAM芯片與EMC接口電路連接并沒(méi)有特別之處,需要注意的是地址線的連接都是從A0開(kāi)始依次連接,不需要移位;對(duì)于SDRAM芯片的BANK選擇位BA0和BA1引腳依次連接到EMC接口的A13和A14引腳,這個(gè)的連接時(shí)確定的,不能更改。其他的引腳照常連接。
在進(jìn)行SDRAM初始化之前需要對(duì)EMC模塊的動(dòng)態(tài)存儲(chǔ)器配置寄存器進(jìn)行操作,使EMC接口為SDRAM工作。具體的寄存器的設(shè)置值參照具體的SDRAM芯片進(jìn)行正確配置。
SDRAM的初始化流程其實(shí)是幾個(gè)命令的依次按順序切換的過(guò)程,具體的命令是通過(guò)配置EMC的DynamicControl寄存器的7:8位來(lái)實(shí)現(xiàn)的。下面是SDRAM具體的命令切換過(guò)程。
下面對(duì)每個(gè)過(guò)程中需要配置和注意的點(diǎn)進(jìn)行說(shuō)明。 1.SDRAM NOP:這是一個(gè)不運(yùn)行命令,此時(shí)SDRAM失效;
2.SDRAM PALL:SDRAM預(yù)上電過(guò)程,相當(dāng)于SDRAM復(fù)位狀態(tài),在這個(gè)這過(guò)程中需要給一定的延時(shí);
3.SDRAM自刷新設(shè)置:在這個(gè)過(guò)程中,進(jìn)行SDRAM自刷新周期的設(shè)置,這個(gè)時(shí)間的設(shè)置還是很重要的,在SDRAM芯片的中可以找到這個(gè)時(shí)間信息,配置好了之后給一個(gè)小延時(shí)。 4.SDRAM的模式設(shè)置:這個(gè)過(guò)程是對(duì)SDRAM的模式寄存器進(jìn)行設(shè)置,這個(gè)寄存器設(shè)置了Brust長(zhǎng)度、CAS(潛伏延遲)、Brust類型、操作模式以及是運(yùn)行在單個(gè)讀操作還是Brust模式讀操作。這個(gè)寄存器的設(shè)置是通過(guò)地址線來(lái)實(shí)現(xiàn)的。在發(fā)出Load Mode Register命令之后,以設(shè)置值經(jīng)過(guò)移位處理作為地址,通過(guò)讀該地址操作使設(shè)置值傳輸?shù)降刂肪上,這樣,SDRAM的模式設(shè)置就完成了。
5.正常讀寫(xiě)操作:初始化過(guò)程完成,可以正常對(duì)SDRAM進(jìn)行讀寫(xiě)操作。
需要注意的是在SDRAM的模式設(shè)置過(guò)程中,模式設(shè)置值是對(duì)一個(gè)12位寄存器進(jìn)行設(shè)置的,如下圖所示的。進(jìn)行讀操作的地址是通過(guò)公式: Base address+(mode register value<<(Bank bits/2+column bits+bus width/16))計(jì)算的。 Base address是選擇的EMC接口映射的總線基地址;Bank bits是對(duì)應(yīng)外部存儲(chǔ)芯片的bank數(shù)與2的比值(由SDRAM芯片決定);Column bits是外部存儲(chǔ)芯片的列數(shù)(由SDRAM芯片決定);Bus Width是數(shù)據(jù)傳輸位寬;mode register value就是模式設(shè)置值,用戶可根據(jù)外部存儲(chǔ)器以及自己需求對(duì)其進(jìn)行設(shè)置。 
需要注意的是EMC接口規(guī)定了SDRAM的突發(fā)長(zhǎng)度,對(duì)于16位傳輸位寬,起突發(fā)長(zhǎng)度為8,對(duì)于32位傳輸位寬,其突發(fā)長(zhǎng)度為4。
還有一個(gè)寄存器的配置需要說(shuō)明一下:精確的延時(shí)調(diào)整寄存器的配置,這個(gè)寄存器用于精確調(diào)整EMC驅(qū)動(dòng)SDRAM的時(shí)序中的命令延時(shí),該延時(shí)寄存器是以250ps為增量進(jìn)行配置的,對(duì)于這個(gè)寄存器的設(shè)置需要根據(jù)外部存儲(chǔ)芯片以及實(shí)際的硬件電路設(shè)計(jì)來(lái)定,具體的最合適的值用戶需要通過(guò)軟件調(diào)試來(lái)得到。
容易出錯(cuò)的幾個(gè)點(diǎn): ◆ 電路上對(duì)于BANK位選擇引腳的連接,BANK選擇位BA0和BA1引腳依次連接到EMC接口的A13和A14引腳; ◆ 精確的延時(shí)調(diào)整寄存器的設(shè)置:根據(jù)具體的硬件電路來(lái)判別,最合適的值需要調(diào)試才能得到,網(wǎng)上有相關(guān)的找出最合適的值的程序設(shè)計(jì); ◆ 模式寄存器的移位值設(shè)置:根據(jù)以上提供的公式來(lái)計(jì)算,得到正確的值。
這是最近與客戶交流容易出錯(cuò)的地方,希望對(duì)大家有用。
|