大容量NAND FLASH在ARM嵌入式系统中的设计与实现
2.3 K9F2808U0C与LPC2210的连接
K9F2808U0C与LPC2210的连接如图3所示,使用8位数据总线D0~D7与K9F2808U0C的I/O0~I/O7引脚相连,使用数据总线来发送地址、数据和命令。K9F2808U0C的片选信号由CS3控制,即使用LPC2210的外部存储器接口的Bank3地址空间,而CLE,ALE信号
分别由A0,A1控制,所以K9F2808U0C的操作地址如下:
3 读写操作流程
K9F2808U0C的页编程操作流程图。
首先向I/O写人编程指令80H,然后使用3个时钟周期写入目的地址(A0~A23),接着向I/O写入数据。数据发送完成后,写入指令10H启动页编程,此时芯片内部的逻辑电路将进行页擦除和数据编程操作。微控制器可以读状态指令70H来读取状态寄存器的值,若D6位为1,则表明写操作完成。
写操作完成后,通过读取状态寄存器的D0位判断编程是否成功,若D0位为0,则表示编程成功;否则表示编程失败。
K9F2808U0C的块擦除和读数据操作如图5所示:对于K9F2808U0C的擦除是以块为单位,擦除时首先写入块擦除命令60H,然后输入要擦除块的地址,再写入指令DoH启动块擦除。微控制器可以读取状态指令70H来读取状态寄存器的值,若D6位为1,则表明擦除完成。写操作完成后,通过读取状态寄存器的D0位来判断擦除是否成功。
对于K9F2808U0C的读数据操作是以页为单位,读数据时首先写入读数据命令00H,然后输入要读取页的地址,接着从数据寄存器中读取数据,最后进行ECC校验。
4 在μC/OS实时操作系统下的实现和性能验证
μC/OS是一个多任务的实时操作系统,专为嵌入式应用而设计,可用于各类8位、16位和32位单片机或DSP,已有10余年应用史,其安全性和实时性得到了广泛的认同,在嵌入式领域发挥着重要作用。该操作系统公开了他的实时性内核源码,同时提供了较多的应用接口函数。通过在其实时内核的基础上做少量的修改,便可将对NAND FLASH的操作移植到μC/OS中,利用OSTa-skCreateExt()函数创建任务并检查堆栈空间,利用PC-ElapsedInit()初始化时间测量功能。共建立5个任务,分别为空闲任务、统计任务、页编程任务、块擦除任务和读数据任务,程序代码示意如下:
5 结 语
以Samsung NAND FLASH器件K9F2808U0C为例,通过PHILIPS LPC2210实现对存储器的器件操作,以μC/OS实时操作系统为平台完成测试实验,将得到的实验结果与Satnsung公司的K9F2808UOC FLASH Memory手册进行对比,表明该设计满足设计要求,达到预期目标。
pos机相关文章:pos机原理
评论