AM30LV0064D在單片機(jī)系統(tǒng)中的典型應(yīng)用
所有操作都建立在命令字基礎(chǔ)上。對主存操作時,所有命令字都通過芯片的8個I/O引腳寫到命令寄存器中,激活狀態(tài)機(jī)進(jìn)行相應(yīng)的操作。存儲器地址以及數(shù)據(jù)也從8位I/O腳寫入。對存儲器地址進(jìn)行連續(xù)操作或?qū)Υ鎯K操作時都要先向地址寄存器寫入1個起始地址。地址分3次寫進(jìn)去,從低字節(jié)開始傳送,具體的地址位傳送順序分配。(由于對存儲器的讀操作分前后2個半頁,每半頁256字節(jié),在命令字中已經(jīng)包含了此信息,而編程以頁為單位、擦除以塊為單位,所以傳送的地址位中不含A8)
AM30LV0064D通過片選引腳CE使能,先是CLE和WE信號有效,通過I/O口寫入命令字;接著ALE和WE有效,寫入數(shù)據(jù)存取的起始地址。最后根據(jù)命令要求,讀數(shù)據(jù)或數(shù)據(jù)。由于具有多元的控制總線,對應(yīng)AM30LV0064D的操作方式也是多樣的。根據(jù)命令字的定義可進(jìn)行以下操作。
3 應(yīng)用電路設(shè)計
AM30LV0064D的外圍電路設(shè)計簡單。其控制總線包括CE(片選)、CLE(命令字鎖存使能)、ALE(地址鎖存使能)、WE(寫使能)、RE(讀使能)、SE(預(yù)留區(qū)使能)、WP(寫保護(hù))等。對于那些具有可編程的I/O口的微控制器或DSP來說,可以直接把引腳與控制線相連。如果沒有可編程的I/O口,則需要加一些簡單的邏輯控制。下面介紹AM30LV0064D與at89ls8252單片機(jī)接口時的一種應(yīng)用設(shè)計電路。由于單片機(jī)缺少UltraNAND閃存所需的多元控制總線,在本設(shè)計中,采用地址譯碼的方法增加了控制端口,這部分邏輯可以用1片PLD(可編程邏輯器件)完成。具體接口電路。
以下是PLD內(nèi)部邏輯設(shè)計的源代碼:
PORT0=!A14!A13!A12!A11; /*讀寫數(shù)據(jù)端口*/
PORT1=!A14!A13!A12!A11; /*CLE寫端口*/
PORT2=!A14!A13!A12!A11; /*設(shè)置ALE端口*/
PORT3=!A14!A13!A12!A11; /*清ALE端口*/
PORT4=!A14!A13!A12!A11; /*設(shè)置SE端口*/
PORT5=!A14!A13!A12!A11; /*清SE端口*/
PORT6=!A14!A13!A12!A11; /*設(shè)置WP端口*/
PORT7=!A14!A13!A12!A11; /*清除WP端口*/
PORT8=!A14!A13!A12!A11; /*設(shè)置CE1端口*/
PORT9=!A14!A13!A12!A11; /*清除CE1端口*/
PORTA=!A14!A13!A12!A11; /*讀RY/BY狀態(tài)端口*/
PORTB=!A14!A13!A12!A11; /*設(shè)置CE2端口*/
PORTC=!A14!A13!A12!A11; /*清除CE2端口*/
/*邏輯方程*/
READY.OE=PORTAREAD;/*Ready只通過PORTA讀取*/
READY=RY_BY;
CLE=PORT1;
ALE=WRTIE PORT2#ALE!(WRITE PORT3)#ALE PORT2);
SE=WRITEPORT4#SE!(WRITE PORT5)#SE PORT4;
WP=WRITE PORT6#WP!(WRITE PORT7)# WP PORT6;
CE1=WRITE PORT8#CE !(WRITE PORT9)#CE PORT8;
CE2=WRITE PORTB#CE!(WRITE PORTC)#CE PORTB;
WE=WRITE (PORT0#PORT1);
RE=READPORT0;
4 軟件流程
下面重點(diǎn)介紹通過單片機(jī)對AM30LV0064D進(jìn)行數(shù)據(jù)編程的軟件流程:單片機(jī)啟動編程程序,將IS61LV256中的數(shù)據(jù)讀出后再寫到FLASH中,每次寫512字節(jié)的數(shù)據(jù)(半頁為256字節(jié))。然后,對相應(yīng)頁進(jìn)行編程,編程命令字寫入后定期查詢RY/BY引腳,看編程是否已經(jīng)完成,如果完成再讀取FLASH的狀態(tài)寄存器,可以知道編程是否成功。具體流程。
評論