ARM嵌入式PDA系统设计及功能分析

(整期优先)网络出版时间:2016-07-17
/ 2

ARM嵌入式PDA系统设计及功能分析

马保华

康奋威科技(杭州)有限公司310052

摘要:嵌入式PDA系统广泛应用于各个领域,为了设计一个高性能低成本的PDA系统,该设计利用ADS1.2开发环境开发基于ARM芯片的PDA系统,采用STR710芯片设计PDA硬件电路系统,利用坏块管理技术实现NANDFLASH的存储管理,提高系统的整体性能,以及其在整体电路系统设计中外围芯片与CPU连接方式的可行性探讨,通过该设计很好地实现了预期目的,证实了系统采用ST公司的STR710芯片设计一套嵌入式PDA的可行性。

关键词:ARM;嵌入式PDA;驱动程序;NANDFLASH

引言

随着CPU技术的进一步发展,基于ARM平台的32位嵌入式PDA技术也得到了很大的发展。PDA已经从原来简单意义上的个人数字助理,变成了人们离不开的随身工具。该设计基于ARM平台的STR710CPU,主要完成了其硬件电路的设计及实现并通过编程实现液晶显示器、NANADFLASH的驱动的设计并在此基础实现PDA的图形操作。

1系统设计及功能模块

设计中主要采用ARM平台的32位处理器STR710,NAND512W3,MAX4468语音数据采集芯片以及LCD液晶显示器,在完成硬件电路的基础上编写程序实现LED显示器及NANDFLASH驱动。系统采用STR710单片机设计实现PDA系统具有很高的性价比和可靠性特别是在A/D采集上具有12位的精度非常适合工业和手持设备使用。

1.1STR710及NAND512W3主要芯片功能介绍

STARM微控制器集成了常用的各种外设,弥补了其他许多ARM微控制器的不足,可以大大简化系统硬件设计。在设计中采用NANDFLASH是由于在PDA系统中一般需要存放大量代码及数据而NAND512W3系列芯片正好具有很高的存储密度、可擦写性能好、稳定性好等优点很适合作PDA的存储芯片,而且具有很高的性价比。

1.2STR710与各芯片的功能模块及接口电路设计

在系统中PDA主要有以下功能:通过CPU的控制实现LCD显示屏的显示控制,NANDFLASH的存储操作、并实现数据的FAT16格式存储,数据ADC采集,USB接口的识别及控制键操作等功能模块主要功能模块如图1所示。

1.3.1NANDFLASH接口电路

设计采用STR芯片的BANK3作为NANDFLASH的外部存储I/O口,主要引脚ALE,CLE引脚与处理器的P2.5,P2.6连接作为地址和命令锁寸引脚的I/O口;读、写使能RE,WE引脚与nRD和nWE连接;I/O口与处理器的D0~D7连接用于数据传输。图2为NANDFLASH与STR710的典型接口连接图。

在设计NANDFLASH与STR710的接口电路图时不能将电路设计为ALE,CLE,WP,R/B全部连接到STR710的地址线上。这样在写入命令或地址时会引起CLE和ALE(对应MCU的地址线)在写信号WE的上升沿锁存时保持时间至少应达到10ns,而MCU的芯片说明中写信号WE发出之后,地址线在WE的上升沿后的保持时间只有3ns,这样两者之间会造成时序的不匹配,无法正确操作NANDFLASH。在设计时需采用将上述引脚与CPU的GPIO引脚连。

1.3.2LCD接口电路

该设计采用160×160像素LCD液晶显示器,R18是一个滑动变阻器可用于液晶显示器进行灰度的调节,LCD片选信号与处理器的P2.0引脚连接,图3为LCD显示的典型接口电路。

图3LCD液晶显示器接口图

2PDA系统功能的实现

完成硬件电路设计并调试通过后主要针对以下

3方面的软件编程功能实现:

对硬件电路(CPU及主要外围电路)的初始化,NANDFLASH驱动程序和LCD驱动程序的编写及实现。

2.1系统的初始化

初始化硬件电路主要完成STR710各寄存器的配置及内存映射和中断向量配置、处理器与外芯片的初始化以及功能库函数加载等。其主要步骤是首先调用71xinit.s源文件完成CPU各寄存器的初始化配置后中断异常的处理实现及中断优先级设置、系统堆栈和变量的初始化最后完成初始化后使用BL语句跳转至MAIN功能函数:IMPORTmain;Bmain;main为C语言主函数入口。初始化流程图如图4所示。

2.2NANDFLASH驱动程序

NANDFLASH的驱动主要包括芯片的复位,ID的正确读取,块的擦除,和页的写入和读取几个操作。此外NANDFLASH允许要2%的坏块,在编写驱动时要做好NANDFLASH的坏块的统计与管理,坏块的识别主要是读取块中第一页的第6字节的1个WORD是否为FF来判断块的好坏。为了便于统计坏块和存储管理须在调用NANDFLASH内存管理函数时建立坏块统计表,系统不断使用会增加坏块的数量,在每次系统启动时都可以通过调用内存管理函数来更新坏块表实现对内存的最优管理以提高系统的性能。坏块管理流程如图5所示。

NANDFLASH驱动主要步骤:

(1)向指令寄存器写入0xFF使芯片复位;

(2)调用UnsignedintcheckFlashId(void)函数读取芯片ID:

For(i=0;i<10;i++);id=NandIO<<8;id+=NandIO;//读出2个字节即芯片ID

(3)调用NANDmanage()函数做坏块管理;

(4)调用UnsignedintEraseBlock(unsignedintblock)实现块的擦除;

(5)调用intWritepage()和intReadpage()写入和读出页数据。

2.3LCD驱动程序设计

在系统中LCD驱动程序主要是对屏幕显示的初始化包括字符显示高度和宽度、行字符显示数、显示频率的设置以及显示点位移设置、显示合成设置、休眠模式设置、光标形状设置、光标指针设置等操作。LCD驱动LCDInitialize(void)主要步骤:

(1)调用LCDWriteCommand(SYSTEMSET);用于系统初始化。

(2)调用LCDWriteCommand(SCROLL);用于显示域设置。

(3)调用LCDWriteCommand(HDOTSCR);用于光标点位移设置。

(4)调用LCDWriteCommand(OVLAY);用于显示合成设置。

(5)调用LCDWriteCommand(CSRFORM);

LCDWriteData(0x07);LCDWriteData(0x87);用于初始化光标形状。设计好驱动后利用ADS1.2编译器将程序烧至RAM进行调试,可根据屏幕显示字符尺寸大小及适宜程度再做修改驱动程序直至满意。

3系统调试

当设计好硬件系统后,要对电路板进行整体调试看各功能模块是否正常,值得注意的是在设计NANDFLASH接口电路时不能将ALE,CLE,WP,R/B全部连接到STR710的地址线上否则会引起两者间的时序不匹配。在设计NANDFLASH文件系统时采用F16系统可根据系统需要修改ST公司提供的F16文件系统代码。

4结语

该设计是基于ARM芯片的STR710嵌入式PDA系统,很好实现了硬件系统的设计以及LCD显示器、NANDFLASH的驱动程序、基于F16文件系统在NANDFLASH大容量数据的文件存储管理。随着信息化、智能化、网络化的快速发展,嵌入式PDA技术也将获得广阔的发展空间。

参考文献

[1]ST公司.STR71XFDATASHEET[Z].PDF,2002(4):1-50.

[2]周立功.ARM嵌入式系统软件开发实列[M].北京:北京航空航天大学出版社,2005.

[3]张崙.32位嵌入式系统硬件设计与调试[M].2版.北京:机械工业出版社,2003.

[4]周立功.PDIUSBD12固件编程与驱动开发[M].北京:北京航空航天大学出版社,2003.