EMC作為一個(gè)外部存儲(chǔ)接口,使其為MCU追求大容量、高速度成為可能。作為比較常用的外部存儲(chǔ)芯片SDRAM,其相對(duì)復(fù)雜的數(shù)據(jù)傳輸時(shí)序,在擁有EMC之后,又會(huì)出現(xiàn)那些問題,今天就談一下它們之間的那些事。
恩智浦(NXP)公司生產(chǎn)的這款LPC1788芯片帶有控制外部存儲(chǔ)的控制器,它是一個(gè)多端口存儲(chǔ)外設(shè),它支持異步靜態(tài)存儲(chǔ)設(shè)備,如RAM、ROM和Flash,也支持單數(shù)據(jù)速率傳輸?shù)腟DRAM這種動(dòng)態(tài)存儲(chǔ)器。該控制器帶有26根地址線,32根數(shù)據(jù)線。其支持4塊靜態(tài)存儲(chǔ)片選地址映射和4塊動(dòng)態(tài)存儲(chǔ)片選地址映射。下圖是EMC接口在內(nèi)存映射的位置。
EMC與外部的動(dòng)態(tài)存儲(chǔ)器相連時(shí),其占用的地址線相對(duì)來說是比較少的,這還是跟動(dòng)態(tài)存儲(chǔ)器的這種存儲(chǔ)結(jié)構(gòu)是有一定關(guān)系的。就拿SDRAM來說,其內(nèi)部存儲(chǔ)是按行列分布的,如下圖所示,就像表格一樣,有對(duì)應(yīng)的行地址和列地址,每一個(gè)小方格就是一個(gè)存儲(chǔ)單元。在對(duì)其尋址時(shí),需要先進(jìn)行行地址尋址,再進(jìn)行列地址尋址,才選擇出確定的操作單元。所以其行列地址線是可以分時(shí)復(fù)用,這也就決定了其占用的地址線較少。
◆ EMC為動(dòng)態(tài)存儲(chǔ)器提供了引腳完成對(duì)應(yīng)的信號(hào)傳輸 ◆ EMC_D[31:0]: 數(shù)據(jù)線;
EMC_A[14:0]:地址線;
EMC_CLK:為SDRAM提供時(shí)鐘;
EMC_CKE:SDRAM的時(shí)鐘使能位;
EMC_DQM[3:0]:數(shù)據(jù)掩碼信號(hào);
EMC_RAS:SDRAM行地址選通脈沖信號(hào);
EMC_CAS:SDRAM列地址選通脈沖信號(hào)
EMC_DYCS[3:0]:SDRAM的片選信號(hào);
EMC_WE:SDRAM寫使能。
當(dāng)動(dòng)態(tài)存儲(chǔ)器件的引腳連接到EMC上后,就需要對(duì)EMC的寄存器來進(jìn)行配置。可以看到對(duì)于SDRAM,有很多的關(guān)于時(shí)間參數(shù)配置的寄存器,需要根據(jù)實(shí)際連接的外部存儲(chǔ)器件來進(jìn)行相應(yīng)的配置。當(dāng)然,這些時(shí)間參數(shù)在外部存儲(chǔ)器件的數(shù)據(jù)手冊(cè)中都是可以找著的。
但我們也不能掉以輕心,一些錯(cuò)誤的時(shí)間配置可能導(dǎo)致數(shù)據(jù)傳輸無法完成,嚴(yán)重的可能導(dǎo)致動(dòng)態(tài)存儲(chǔ)器內(nèi)部數(shù)據(jù)丟失。對(duì)于動(dòng)態(tài)存儲(chǔ)器件來說,其需要不斷進(jìn)行刷新才能保存數(shù)據(jù),這是它很重要的操作,所以刷新時(shí)間的配置是很重要的。對(duì)于常用的SDRAM 芯片IS42S16400來說,在其數(shù)據(jù)手冊(cè)中找到下圖這樣一個(gè)時(shí)間參數(shù),它的意思就是說刷新4096次需要的時(shí)間是64ms,也就是說刷新一次的時(shí)間是15.625us,如果刷新的周期比這個(gè)大的話,SDRAM就無法保存數(shù)據(jù)。而對(duì)于LPC1788 EMC模塊,它就有這樣一個(gè)時(shí)間參數(shù)寄存器EMCDynamicRefresh,它可以用來設(shè)置SDRAM刷新一次的時(shí)間。

由于寄存器是以EMC的時(shí)鐘作為基準(zhǔn)的,所以這個(gè)刷新時(shí)間的設(shè)置還跟EMC的時(shí)鐘有關(guān),在配置的過程中,根據(jù)當(dāng)前時(shí)鐘計(jì)算一下,以免出現(xiàn)錯(cuò)誤。對(duì)于連有多個(gè)動(dòng)態(tài)外部存儲(chǔ)芯片,而他們是共用這一個(gè)刷新時(shí)間的,這時(shí)候就要根據(jù)各個(gè)數(shù)據(jù)手冊(cè)中要求的刷新周期,以每次刷新時(shí)間最短的為準(zhǔn),這樣才能保證都能在規(guī)定的時(shí)間內(nèi)完成刷新。同時(shí)對(duì)于支持熱復(fù)位的情況下,也要注意一下,由于熱復(fù)位期間,EMC的時(shí)鐘發(fā)生變化,這時(shí)候的刷新周期也就有所變化,在配置過程中,也要考慮到上面的情況。
對(duì)于其他的時(shí)間參數(shù),可以對(duì)照EMC關(guān)于時(shí)間參數(shù)配置的寄存器和對(duì)應(yīng)的外部存儲(chǔ)芯片的數(shù)據(jù)手冊(cè),完成正確的配置,當(dāng)EMC配置完成之后,就可以通過訪問總線地址來訪問外部存儲(chǔ)。
EMC實(shí)現(xiàn)的這種與外部存儲(chǔ)數(shù)據(jù)傳輸方式,會(huì)在以后的嵌入式產(chǎn)品中應(yīng)用越來越廣泛,它為小容量MCU提供了新的契機(jī)。
|