常州大学信息科学与工程学院 陈江烨
华北石化公司机动设备处 乔悦峰
新型大容量闪存与单片机的接口设计
常州大学信息科学与工程学院 陈江烨
华北石化公司机动设备处 乔悦峰
介绍了大容量存储器AT45DB041B的特点,给出了用AVR单片机对AT45DB041B进行读写操作的程序。
AT45DB041B;单片机;大容量;存储器;串行
AT45DB041B是ATMEL公司的新型FLASH芯片。该芯片具有容量大、读写速度快、外围电路少等诸多优点,更为重要的是该芯片可最低工作在2.5V,工作电流仅为4mA,因此在移动通信、便携等场合得到了广泛的应用。由于采用了串行接口,大大减少了引脚数量,同时也提高了系统可靠性,降低了开关噪声,缩小了封装体积。可以应用于商业、工业等需要高密度、低引脚数、低电压与低功耗的应用场合。
AT45DB041B中的数据按页存放,主存共2048页,每页264字节,总容量为528K字节(约4M比特)。存放在主存中的数据掉电不丢失。除了主存以外,AT45DB041B还有两个容量为264字节的数据缓存。
表1 引脚功能描述
表2 状态寄存器格式
AT45DB041B引脚见图1,引脚功能描述见表1。
存放在主存储器中的数据掉电不丢失。除了主存储器以外,AT45DB041B还有两个容量为264字节的数据缓存。缓存可以用作主存与外部进行数据交换时的缓冲区域,也可以暂存一些临时数据。缓存读写方便迅速,但掉电数据会丢失。AT45DB041B数据读写采用串行方式,读写速度快,并且兼容CMOS和TTL输入和输出。
图1 AT45DB041B 引脚图
根据数据手册可以编写单片机对AT45DB041B的读写程序,下面仅介绍数据读取中的连续阵列读过程:
图2 读取数据流程图
图3 写入数据流程图
在提供了主存储器阵列的开始地址后,在时钟信号的作用下连续读命令可以从芯片中以数据流方式进行数据读取,而无需额外的地址信息或控制信号。芯片内部的地址计数器会在每一个时钟周期后自动增加,因而可以在不用写入新的地址的情况下继续读取下一个字节。要进行一次连续读操作,操作码E8H必须要写入芯片中,随后是3个字节的地址(24位)与4个无关字节(32位)。24个地址位中,开始的4位是保留位,接下来的的11位(PA10-PA0)来用表示将要读取的数据在主存储器中的页地址,再接下来的9位(BA8-BA0)用来表示字节在页中的地址。无关字节在读操作初始化时是必需的,在无关字节后,SCK引脚上的时钟信号使数据从SO引脚输出。
状态寄存器是一个重要寄存器,其格式见表2。读状态寄存器的值可以用来确定设备的忙闲状态,忙闲状态通过寄存器的第7位指示,如果第7位为1,则设备位于空闲状态并可接收下一条指令。如果为0,则表示设备忙,需要等待。图2、图3分别是读出数据和写入数据的流程图。
下面给出用AVR单片机ATmega88对AT45DB041B操作的有关程序。
根据AT45DB041B的操作时序,完成了其与单片机之间的通信,并在笔者设计的装置中得到了成功的应用,运行稳定可靠。AT45DB041B的突出特点是电路简单、价格低、存储容量大,占用系统资源少,适宜在大容量数据采集系统中应用。
[1]Atmel Corporation.AVR 8-bit Microcontroller Data Sheet:Atmega88.pdf,2006.
[2]Atmel Corporation.Serial DATAFLASH Product Databook.
[3]Atmel Corporation.Serial DATAFLASH Application Note.
陈江烨(1977—),女,硕士,常州大学信息科学与工程学院讲师。