串行接口FLASH存储器在8051单片机中的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

串行接口FL AS H存储器在8051单片机中的应用3

张亚华,李福勤

(河南机电高等专科学校电子与通信工程系,河南新乡453002)

摘要:介绍了flash存储器A T25FS040与8051单片机的接口方法,详细叙述了A T25FS040读取,写入和擦除操作的具体方法和时序,设计了A T25FS040与8051单片机接口的硬件,并给出参考例子程序。

关键词:8051单片机;FL ASH存储器;SPI

中图分类号:TP368.1 文献标识码:A 文章编号:100822093(2007)0620001203

在单片机控制的大屏幕L ED显示屏中,需要存

储大量文字、图形的点阵数据。而8051

单片机内部

的程序存储器容量有限,且只能存储固定的点阵数据,缺乏灵活性。使用扩充外部数据存储器的方法存储点阵数据,除容量有限外,还存在占用单片机接口资源和数据掉电保护等问题。因此在此类单片机应用系统中,以尽量少的硬件资源,外扩大容量的FL ASH存储器,是一种较好的解决方案。

1 大容量FL ASH存储器A T25FS040

A T25FS040[1]是A TM EL公司生产的一种大容量串口FL A SH存储器,在一片SO IC封装的8脚芯片中,有4Mbit存储单元,组成512K×8的结构。整个存储区划分为8个64K字节的存储块,每一个块又划分为16个4K字节的扇区。数据写入时,一次可以写入一个字节或一个256字节的页面。读取数据时,可以一次读一个字节,也可以连续读相临单元的数据。数据擦除时,可以分别擦除一个扇区,一个数据块或者整个存储器。芯片可以反复擦写10000次。A T25FS040的I/O接口采用了4线的SPI接口,SPI时钟频率最高可达到50M Hz。该芯片采用低压供电,电源电压2.7V-3.6V。芯片还设计了完善的软硬件写保护功能和串口等待功能。

AT25FS040的引脚定义和引脚功能见图1和表1。

图1 A T25FS040引脚定义

表1 A T25FS040引脚功能

引脚功能引脚功能

/CS片选SI串行数据输入

SO串行数据输出SC K串行时钟

/WP写保护/HOLD串口等待

GND地线VCC电源

1.1 A T25FS040的操作指令

A T25FS040定义了11组操作指令,常用的有以下7种:

表2 A T25FS040常用指令表

指令代码操作WREN06H使能写操作

RDSR05H读状态寄存器

READ03H读操作

PRO GRAM02H写操作

SECTOR ERASE20H擦除扇区(4K)

BLOC K ERASE52H擦除块(64K)

CHIP ERASE60H擦除芯片(512K)

向A T25FS040发送操作指令的顺序是:SC K为低电平时,片选信号/CS由高电平变为低电平,然后单片机按SPI时序要求,在时钟脉冲作用下,经SI引脚向A T25FS040发送指令代码(高位在前),紧接着发送或接受指令的参数(地址、状态、数据等),完成后在SC K低电平时置“1”/CS信号。

1.2 A T25FS040的读操作

向A T25FS040发送读操作指令(03H),紧跟着

1

第15卷第6期 2007年11月

河南机电高等专科学校学报

Journal of Henan Mechanical and Electrical Engineering College

Vol.15№.6

Nov.2007

3收稿日期:2007209220

作者简介:张亚华(19512),男,河南郑州人,副教授,主要从事嵌入式系统开发研究。

发送三个字节的地址(高位在前),即可从SO 引脚串行读出所选中单元的数据。若只读一个字节,则需在读出最后一位后,将/CS 置为高电平,结束读操作。若要连续读相邻单元数据,只需保持/CS 为低电平,持续发时钟脉冲,A T25FS040内部的地址计数器会自动+1,将后续单元的数据由SO 引脚连续移出,直到/CS 变为高电平为止。地址计数器自动+1可持续到最高地址(07FFFF H ),再自动+1,会返回起始地址(000000H )。读出的数据高位在前。A T25FS040的读操作时序见图2

图2 A T25FS040读操作时序

1.3 A T25FS040的写操作

写入数据前要确保待写入的存储区为擦除状态(全“1”

),否则应先用擦除指令将待写入的存储区擦除。每次写入前要先向A T25FS040发送写入使能指令(06H )。写操作与读操作相似,先向A T25FS040发送写操作指令(02H ),紧跟着发送三个字节的地址,随即发送要写入的数据,一次最多可发送一个页面(256字节)。在连续发送过程中,内部地址计数器会自动+1,指向下一单元。需要注意的是,当地址指向页面边

界(低字节地址为0FF H )时,再+1,不是进入下一页面,而是返回当前页面的起始地址(低字节地址为00H )。发送完数据后,在SC K 低电平状态下,置“1”/CS ,将启动A T25FS040内部的写入操作,写入过程需

用时30

μs/字节。判断写入是否完成,可用RDSR 指令读状态寄存器,查询状态寄存器的D0位。D0=“1”表示正在写入,D0=“0”表示写入完成。每次写入操作完成后,芯片都自动进入写保护状态。A T25FS040的写操作时序见图3

图3 A T25FS040写操作时序

1.4 A T25FS040的擦除操作

A T25FS040在写入数据前要求待写入单元必须为擦除状态(全“1”

),因此在改写存储器前,要先进行擦除操作。A T25FS040定义了三种擦除操作指令:扇区擦除SEC TOR ERASE (20H ),一次擦除一个扇区4K 字节;块擦除BLOC K ERASE (52H ),一次擦除一块64K 字节;芯片擦除(60H ),一次擦除整个芯片512K 字节。使用擦除指令前,要求先执行写操作使能指令WREN 。执行擦除操作指令的顺序是:置/CS =“0”后发送擦除指令,紧跟三个字节的地址,选中待擦除扇区

(块)中任一单元,在SC K 低电平状态下,置/CS =

“1”,启动擦除过程开始。芯片擦除指令无须带地址参数。三种擦除指令的典型擦除时间分别为:扇区擦除,50ms ;块擦除,200ms ;芯片擦除,1.6s 。判断擦除是否完成,也可以用RDSR 指令读状态寄存器,查询状态寄存器的D0位。D0=“1”表示正在擦除,D0=

“0”表示擦除完成。

2 A T25FS040与8051单片机的接口与驱动

程序

2.1 硬件接口8051单片机没有SPI 接口,使用P1口来模拟

SPI 接口,由软件模拟SPI 时序。具体硬件电路见图4

。图4 8051与A T25FS040硬件接口

2.2 

读写子程序下面两段程序分别模拟SPI 的字节读写时序,

SRD 为读字节子程序,读出的数据在累加器A 中;SWR 为写字节子程序,待写入的数据在累加器A 中。

A T25FS040的SPI 接口采用模式0和模式3[2]

,读操作,由SC K 下降沿读出,经M ISO 左移入累加器A 。

写操作,高位数据从累加器A 移至MOSI ,由SC K 上升沿写入。

SC K BITP1.2MISOBITP1.1MOSIBITP1.3SCSB ITP1.0SRD :MOV R2,#8

2

河南机电高等专科学校学报 2007年6期

相关文档
最新文档