康奋威科技(杭州)有限公司 310052
摘要:嵌入式PDA系统广泛应用于各个领域, 为了设计一个高性能低成本的PDA系统, 该设计利用ADS1.2开发环境开发基于ARM芯片的PDA系统, 采用STR710芯片设计PDA硬件电路系统,利用坏块管理技术实现NAND FLASH的存储管理, 提高系统的整体性能,以及其在整体电路系统设计中外围芯片与CPU连接方式的可行性探讨, 通过该设计很好地实现了预期目的,证实了系统采用ST公司的STR710芯片设计一套嵌入式PDA 的可行性。
关键词:ARM;嵌入式PDA;驱动程序;NAND FLASH
引言
随着CPU技术的进一步发展, 基于ARM平台的32位嵌入式PDA技术也得到了很大的发展。PDA 已经从原来简单意义上的个人数字助理, 变成了人们离不开的随身工具。该设计基于ARM平台的STR710 CPU,主要完成了其硬件电路的设计及实现并通过编程实现液晶显示器、NANAD FLASH的驱动的设计并在此基础实现PDA的图形操作。
1 系统设计及功能模块
设计中主要采用ARM平台的32位处理器STR710 ,NAND512W3,MAX4468语音数据采集芯片以及LCD液晶显示器, 在完成硬件电路的基础上编写程序实现LED显示器及NAND FLASH驱动。系统采用STR710单片机设计实现PDA 系统具有很高的性价比和可靠性特别是在A/D采集上具有12位的精度非常适合工业和手持设备使用。
1.1 STR710及NAND512W3主要芯片功能介绍
STARM 微控制器集成了常用的各种外设,弥补了其他许多ARM 微控制器的不足, 可以大大简化系统硬件设计。在设计中采用NAND FLASH 是由于在PDA系统中一般需要存放大量代码及数据而NAND512W3 系列芯片正好具有很高的存储密度、可擦写性能好、稳定性好等优点很适合作PDA 的存储芯片, 而且具有很高的性价比。
1.2 ST R710 与各芯片的功能模块及接口电路设计
在系统中PDA主要有以下功能:通过CPU的控制实现LCD显示屏的显示控制,NAND FLASH的存储操作、并实现数据的FAT16格式存储,数据ADC采集,USB接口的识别及控制键操作等功能模块主要功能模块如图1所示。
1.3.1 NAND FLASH 接口电路
设计采用STR芯片的BANK3作为NAN DFLASH的外部存储I/O口,主要引脚A LE , CLE引脚与处理器的P2.5,P2.6连接作为地址和命令锁寸引脚的I/O口;读、写使能RE,WE引脚与nRD和nWE连接;I/O口与处理器的D0~D7连接用于数据传输。图2为NAND FLASH 与STR710的典型接口连接图。
在设计NAND FLASH与STR710的接口电路图时不能将电路设计为ALE,CLE ,WP,R/B全部连接到STR710的地址线上。这样在写入命令或地址时会引起CLE和ALE(对应MCU 的地址线)在写信号WE的上升沿锁存时保持时间至少应达到10ns ,而MCU的芯片说明中写信号WE发出之后,地址线在WE的上升沿后的保持时间只有3ns,这样两者之间会造成时序的不匹配,无法正确操作NAND FLASH。在设计时需采用将上述引脚与CPU的GPIO引脚连。
1.3.2 LCD接口电路
该设计采用160×160像素LCD液晶显示器, R18是一个滑动变阻器可用于液晶显示器进行灰度的调节,LCD片选信号与处理器的P2.0引脚连接, 图3为LCD显示的典型接口电路。
图3 LCD 液晶显示器接口图
2 PDA系统功能的实现
完成硬件电路设计并调试通过后主要针对以下
3 方面的软件编程功能实现:
对硬件电路(CPU及主要外围电路)的初始化,NAND FLASH驱动程序和LCD驱动程序的编写及实现。
2.1 系统的初始化
初始化硬件电路主要完成ST R710各寄存器的配置及内存映射和中断向量配置、处理器与外芯片的初始化以及功能库函数加载等。其主要步骤是首先调用71xinit.s源文件完成CPU各寄存器的初始化配置后中断异常的处理实现及中断优先级设置、系统堆栈和变量的初始化最后完成初始化后使用BL语句跳转至MAIN功能函数:IMPORT main;B main;main为C语言主函数入口。初始化流程图如图4所示。
2.2 NAND FLASH驱动程序
NAND FLASH的驱动主要包括芯片的复位, ID的正确读取, 块的擦除, 和页的写入和读取几个操作。此外NAND FLASH允许要2%的坏块, 在编写驱动时要做好NANDFLASH的坏块的统计与管理,坏块的识别主要是读取块中第一页的第6字节的1 个WORD是否为FF来判断块的好坏。为了便于统计坏块和存储管理须在调用NAND FLASH内存管理函数时建立坏块统计表, 系统不断使用会增加坏块的数量,在每次系统启动时都可以通过调用内存管理函数来更新坏块表实现对内存的最优管理以提高系统的性能。坏块管理流程如图5所示。
NAND FLASH 驱动主要步骤:
(1)向指令寄存器写入0xFF使芯片复位;
(2)调用Unsigned int check Flash Id(void)函数读取芯片ID:
For(i=0;i<10;i++);id=Nand IO<<8;id+=Nand IO;//读出2个字节即芯片ID
(3)调用NAND manage()函数做坏块管理;
(4)调用Unsigned int Erase Block(unsigned int block)实现块的擦除;
(5)调用int Write page()和int Read page()写入和读出页数据。
2.3 LCD驱动程序设计
在系统中LCD 驱动程序主要是对屏幕显示的初始化包括字符显示高度和宽度、行字符显示数、显示频率的设置以及显示点位移设置、显示合成设置、休眠模式设置、光标形状设置、光标指针设置等操作。LCD 驱动LCD Initialize(void)主要步骤:
(1)调用LCD WriteCommand(SYSTEM SET);用于系统初始化。
(2)调用LCD WriteCommand(SCROLL);用于显示域设置。
(3)调用LCD Wri teCommand(HDOT SCR);用于光标点位移设置。
(4)调用LCD Wri teCommand(OV LAY);用于显示合成设置。
(5)调用LCD WriteCommand(CS RFORM);
LCD WriteData(0x07);LCD Write Data(0x87);用于初始化光标形状。设计好驱动后利用ADS1.2编译器将程序烧至RAM 进行调试, 可根据屏幕显示字符尺寸大小及适宜程度再做修改驱动程序直至满意。
3 系统调试
当设计好硬件系统后, 要对电路板进行整体调试看各功能模块是否正常, 值得注意的是在设计NANDFLASH接口电路时不能将ALE,CLE, WP,R/B全部连接到STR710 的地址线上否则会引起两者间的时序不匹配。在设计NAND FLASH 文件系统时采用F16系统可根据系统需要修改ST公司提供的F16文件系统代码。
4 结语
该设计是基于ARM芯片的ST R710嵌入式PDA系统, 很好实现了硬件系统的设计以及LCD显示器、NAND FLASH 的驱动程序、基于F16文件系统在NAND FLASH大容量数据的文件存储管理。随着信息化、智能化、网络化的快速发展, 嵌入式PDA技术也将获得广阔的发展空间。
参考文献
[1] ST公司.STR71XF DATASH EET[Z] .PDF, 2002(4):1-50.
[2] 周立功.ARM嵌入式系统软件开发实列[M].北京:北京航空航天大学出版社, 2005.
[3] 张崙.32位嵌入式系统硬件设计与调试[M] .2版.北京:机械工业出版社, 2003.
[4] 周立功.PDIUSBD12 固件编程与驱动开发[M] .北京:北京航空航天大学出版社, 2003.
论文作者:马保华
论文发表刊物:《基层建设》2016年7期
论文发表时间:2016/7/5
标签:系统论文; 芯片论文; 初始化论文; 电路论文; 硬件论文; 接口论文; 嵌入式论文; 《基层建设》2016年7期论文;