AM30LV0064D在单片机系统中的典型应用
所有操作都建立在命令字基础上。对主存操作时,所有命令字都通过芯片的8个I/O引脚写到命令寄存器中,激活状态机进行相应的操作。存储器地址以及数据也从8位I/O脚写入。对存储器地址进行连续操作或对存储块操作时都要先向地址寄存器写入1个起始地址。地址分3次写进去,从低字节开始传送,具体的地址位传送顺序分配。(由于对存储器的读操作分前后2个半页,每半页256字节,在命令字中已经包含了此信息,而编程以页为单位、擦除以块为单位,所以传送的地址位中不含A8)
AM30LV0064D通过片选引脚CE使能,先是CLE和WE信号有效,通过I/O口写入命令字;接着ALE和WE有效,写入数据存取的起始地址。最后根据命令要求,读数据或数据。由于具有多元的控制总线,对应AM30LV0064D的操作方式也是多样的。根据命令字的定义可进行以下操作。
3 应用电路设计
AM30LV0064D的外围电路设计简单。其控制总线包括CE(片选)、CLE(命令字锁存使能)、ALE(地址锁存使能)、WE(写使能)、RE(读使能)、SE(预留区使能)、WP(写保护)等。对于那些具有可编程的I/O口的微控制器或DSP来说,可以直接把引脚与控制线相连。如果没有可编程的I/O口,则需要加一些简单的逻辑控制。下面介绍AM30LV0064D与at89ls8252单片机接口时的一种应用设计电路。由于单片机缺少UltraNAND闪存所需的多元控制总线,在本设计中,采用地址译码的方法增加了控制端口,这部分逻辑可以用1片PLD(可编程逻辑器件)完成。具体接口电路。
以下是PLD内部逻辑设计的源代码:
PORT0=!A14!A13!A12!A11; /*读写数据端口*/
PORT1=!A14!A13!A12!A11; /*CLE写端口*/
PORT2=!A14!A13!A12!A11; /*设置ALE端口*/
PORT3=!A14!A13!A12!A11; /*清ALE端口*/
PORT4=!A14!A13!A12!A11; /*设置SE端口*/
PORT5=!A14!A13!A12!A11; /*清SE端口*/
PORT6=!A14!A13!A12!A11; /*设置WP端口*/
PORT7=!A14!A13!A12!A11; /*清除WP端口*/
PORT8=!A14!A13!A12!A11; /*设置CE1端口*/
PORT9=!A14!A13!A12!A11; /*清除CE1端口*/
PORTA=!A14!A13!A12!A11; /*读RY/BY状态端口*/
PORTB=!A14!A13!A12!A11; /*设置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 软件流程
下面重点介绍通过单片机对AM30LV0064D进行数据编程的软件流程:单片机启动编程程序,将IS61LV256中的数据读出后再写到FLASH中,每次写512字节的数据(半页为256字节)。然后,对相应页进行编程,编程命令字写入后定期查询RY/BY引脚,看编程是否已经完成,如果完成再读取FLASH的状态寄存器,可以知道编程是否成功。具体流程。
评论