胡 劍 李 偉 章琳琳
摘 要:嵌入式PDA系統(tǒng)廣泛應(yīng)用于各個(gè)領(lǐng)域,為了設(shè)計(jì)一個(gè)高性能低成本的PDA系統(tǒng),該設(shè)計(jì)利用ADS1.2開(kāi)發(fā)環(huán)境開(kāi)發(fā)基于ARM芯片的PDA系統(tǒng),采用STR710芯片設(shè)計(jì)PDA硬件電路系統(tǒng),利用壞塊管理技術(shù)實(shí)現(xiàn)NAND_FLASH的存儲(chǔ)管理,提高系統(tǒng)的整體性能,以及其在整體電路系統(tǒng)設(shè)計(jì)中外圍芯片與CPU連接方式的可行性探討,通過(guò)該設(shè)計(jì)很好地實(shí)現(xiàn)了預(yù)期目的,證實(shí)了系統(tǒng)采用ST公司的STR710芯片設(shè)計(jì)一套嵌入式PDA的可行性。
關(guān)鍵詞:ARM;嵌入式PDA;驅(qū)動(dòng)程序;NAND_FLASH
中圖分類(lèi)號(hào):TP368.1文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004 373X(2009)02 048 03
Realization of Hardware Design in PDA Based on ARM
HU Jian,LI Wei,ZHANG Linlin
(Zhejiang Industry Polytechnic College,Shaoxing,312000,China)
Abstract:Embedded PDA system is applied in many fields widely.In order to design a high performance low cost PDA system.The design uses ADS1.2 integrated development environment to design a PDA system based on ARM core.An embedded PDA hardware system is designed by adopting STR710 chip.NAND_FLASH memory manage is realized by bad block management to improve system′s performance,connection feasibility of CPU to periphery chip is discussed.Anticipated goal is completed through the design.It confirms that using STR710 CPU to realize LCD&NAND;_FLASH function is possible and discusses the future work at last.
Keywords:ARM;embedded PDA;driver program;NAND_FLASH
0 引 言
隨著CPU技術(shù)的進(jìn)一步發(fā)展,基于ARM平臺(tái)的32位嵌入式PDA技術(shù)也得到了很大的發(fā)展。PDA已經(jīng)從原來(lái)簡(jiǎn)單意義上的個(gè)人數(shù)字助理,變成了人們離不開(kāi)的隨身工具。該設(shè)計(jì)基于ARM平臺(tái)的STR710 CPU,主要完成了其硬件電路的設(shè)計(jì)及實(shí)現(xiàn)并通過(guò)編程實(shí)現(xiàn)液晶顯示器、NANAD_FLASH的驅(qū)動(dòng)的設(shè)計(jì)并在此基礎(chǔ)實(shí)現(xiàn)PDA的圖形操作。
1 系統(tǒng)設(shè)計(jì)及功能模塊
設(shè)計(jì)中主要采用ARM平臺(tái)的32位處理器STR710,NAND512W3,MAX4468語(yǔ)音數(shù)據(jù)采集芯片以及LCD液晶顯示器,在完成硬件電路的基礎(chǔ)上編寫(xiě)程序?qū)崿F(xiàn)LED顯示器及NAND_FLASH驅(qū)動(dòng)。系統(tǒng)采用STR710單片機(jī)設(shè)計(jì)實(shí)現(xiàn)PDA系統(tǒng)具有很高的性?xún)r(jià)比和可靠性特別是在A/D采集上具有12位的精度非常適合工業(yè)和手持設(shè)備使用。
1.1 STR710及NAND512W3主要芯片功能介紹
ST ARM微控制器集成了常用的各種外設(shè),彌補(bǔ)了其他許多ARM微控制器的不足,可以大大簡(jiǎn)化系統(tǒng)硬件設(shè)計(jì)。在設(shè)計(jì)中采用NAND_FLASH是由于在PDA系統(tǒng)中一般需要存放大量代碼及數(shù)據(jù)而NAND512W3系列芯片[1]正好具有很高的存儲(chǔ)密度、可擦寫(xiě)性能好、穩(wěn)定性好等優(yōu)點(diǎn)很適合作PDA的存儲(chǔ)芯片,而且具有很高的性?xún)r(jià)比。
1.2 STR710與各芯片的功能模塊及接口電路設(shè)計(jì)
在系統(tǒng)中PDA主要有以下功能[2,3]:通過(guò)CPU的控制實(shí)現(xiàn)LCD顯示屏的顯示控制,NAND_FLASH的存儲(chǔ)操作、并實(shí)現(xiàn)數(shù)據(jù)的FAT16格式存儲(chǔ),數(shù)據(jù)ADC采集, USB接口的識(shí)別及控制鍵操作等功能模塊主要功能模塊如圖1所示。
1.3 STR710與主要外圍芯片接口電路
1.3.1 NAND_FLASH接口電路
設(shè)計(jì)采用STR芯片[3-5]的BANK3作為NAND_FLASH的外部存儲(chǔ)I/O口[1,6,7],主要引腳ALE,CLE引腳與處理器的P2.5,P2.6連接作為地址和命令鎖寸引腳的I/O口;讀、寫(xiě)使能RE,WE引腳與nRD和nWE連接;I/O口與處理器的D0~D7連接用于數(shù)據(jù)傳輸。圖2為NAND_FLASH與STR710的典型接口連接圖。
在設(shè)計(jì)NAND_FLASH與STR710的接口電路圖時(shí)不能將電路設(shè)計(jì)為ALE,CLE,WP,R/B全部連接到STR710的地址線上。這樣在寫(xiě)入命令或地址時(shí)會(huì)引起CLE和ALE(對(duì)應(yīng)MCU的地址線)在寫(xiě)信號(hào)WE的上升沿鎖存時(shí)保持時(shí)間至少應(yīng)達(dá)到10 ns,而MCU的芯片說(shuō)明中寫(xiě)信號(hào)WE發(fā)出之后,地址線在WE的上升沿后的保持時(shí)間只有3 ns,這樣兩者之間會(huì)造成時(shí)序的不匹配,無(wú)法正確操作NAND_FLASH 。在設(shè)計(jì)時(shí)需采用將上述引腳與CPU的GPIO引腳連。
1.3.2 LCD接口電路
該設(shè)計(jì)采用160×160像素LCD液晶顯示器,R18是一個(gè)滑動(dòng)變阻器可用于液晶顯示器進(jìn)行灰度的調(diào)節(jié),LCD片選信號(hào)與處理器的P2.0引腳連接,圖3為L(zhǎng)CD顯示的典型接口電路。
2 PDA系統(tǒng)功能的實(shí)現(xiàn)
完成硬件電路設(shè)計(jì)并調(diào)試通過(guò)后主要針對(duì)以下3方面的軟件編程功能實(shí)現(xiàn):
對(duì)硬件電路(CPU及主要外圍電路)的初始化,NAND_FLASH驅(qū)動(dòng)程序和LCD驅(qū)動(dòng)程序的編寫(xiě)及實(shí)現(xiàn)。
2.1 系統(tǒng)的初始化
初始化硬件電路[8]主要完成STR710各寄存器的配置及內(nèi)存映射和中斷向量配置、處理器與外芯片的初始化以及功能庫(kù)函數(shù)加載等。其主要步驟是首先調(diào)用71x_init.s源文件完成CPU各寄存器的初始化配置后中斷異常的處理實(shí)現(xiàn)及中斷優(yōu)先級(jí)設(shè)置、系統(tǒng)堆棧和變量的初始化最后完成初始化后使用BL 語(yǔ)句跳轉(zhuǎn)至MAIN功能函數(shù):IMPORT main;B main;main為C語(yǔ)言主函數(shù)入口。初始化流程圖如圖4所示。
2.2 NAND_FLASH驅(qū)動(dòng)程序
NAND_FLASH的驅(qū)動(dòng)[9,10]主要包括芯片的復(fù)位,ID的正確讀取,塊的擦除,和頁(yè)的寫(xiě)入和讀取幾個(gè)操作。此外NAND_FLASH允許要2%的壞塊,在編寫(xiě)驅(qū)動(dòng)時(shí)要做好NANDFLASH的壞塊的統(tǒng)計(jì)與管理,壞塊的識(shí)別主要是讀取塊中第一頁(yè)的第6字節(jié)的1個(gè)WORD是否為FF來(lái)判斷塊的好壞。為了便于統(tǒng)計(jì)壞塊和存儲(chǔ)管理須在調(diào)用NAND_FLASH內(nèi)存管理函數(shù)時(shí)建立壞塊統(tǒng)計(jì)表,系統(tǒng)不斷使用會(huì)增加壞塊的數(shù)量,在每次系統(tǒng)啟動(dòng)時(shí)都可以通過(guò)調(diào)用內(nèi)存管理函數(shù)來(lái)更新壞塊表實(shí)現(xiàn)對(duì)內(nèi)存的最優(yōu)管理以提高系統(tǒng)的性能。壞塊管理流程如圖5所示。
NAND_FLASH驅(qū)動(dòng)主要步驟:
(1) 向指令寄存器寫(xiě)入0xFF使芯片復(fù)位;
(2) 調(diào)用 Unsigned int check_Flash_Id(void) 函數(shù)讀取芯片ID:
For(i=0;i<10;i++); id=Nand_IO<<8; id+=Nand_IO;//讀出2個(gè)字節(jié) 即芯片ID
(3) 調(diào)用NAND_manage()函數(shù)做壞塊管理;
(4) 調(diào)用Unsigned int Erase_Block(unsigned int block)實(shí)現(xiàn)塊的擦除;
(5) 調(diào)用int Write_page()和int Read_page()寫(xiě)入和讀出頁(yè)數(shù)據(jù)。
2.3 LCD驅(qū)動(dòng)程序設(shè)計(jì)
在系統(tǒng)中LCD驅(qū)動(dòng)程序主要是對(duì)屏幕顯示的初始化包括字符顯示高度和寬度、行字符顯示數(shù)、顯示頻率的設(shè)置以及顯示點(diǎn)位移設(shè)置、顯示合成設(shè)置、休眠模式設(shè)置、光標(biāo)形狀設(shè)置、光標(biāo)指針設(shè)置等操作。
LCD驅(qū)動(dòng)LCD_Initialize(void)主要步驟:
(1) 調(diào)用LCD_WriteCommand(SYSTEM_SET);用于系統(tǒng)初始化。
(2) 調(diào)用LCD_WriteCommand(SCROLL);用于顯示域設(shè)置。
(3) 調(diào)用LCD_WriteCommand(HDOT_SCR);用于光標(biāo)點(diǎn)位移設(shè)置。
(4) 調(diào)用LCD_WriteCommand(OVLAY);用于顯示合成設(shè)置。
(5) 調(diào)用LCD_WriteCommand(CSRFORM);
LCD_WriteData(0x07); LCD_WriteData(0x87);用于初始化光標(biāo)形狀。
設(shè)計(jì)好驅(qū)動(dòng)后利用ADS1.2編譯器將程序燒至RAM進(jìn)行調(diào)試,可根據(jù)屏幕顯示字符尺寸大小及適宜程度再做修改驅(qū)動(dòng)程序直至滿意。
3 系統(tǒng)調(diào)試
當(dāng)設(shè)計(jì)好硬件系統(tǒng)后,要對(duì)電路板進(jìn)行整體調(diào)試看各功能模塊是否正常,值得注意的是在設(shè)計(jì)NAND_FLASH接口電路時(shí)不能將ALE,CLE,WP,R/B 全部連接到STR710的地址線上否則會(huì)引起兩者間的時(shí)序不匹配。在設(shè)計(jì)NAND_FLASH文件系統(tǒng)時(shí)采用F16系統(tǒng)可根據(jù)系統(tǒng)需要修改ST公司提供的F16文件系統(tǒng)代碼。
4 結(jié) 語(yǔ)
該設(shè)計(jì)是基于ARM芯片的STR710嵌入式PDA系統(tǒng),很好實(shí)現(xiàn)了硬件系統(tǒng)的設(shè)計(jì)以及LCD顯示器、NAND_FLASH的驅(qū)動(dòng)程序、基于F16文件系統(tǒng)在NAND_FLASH大容量數(shù)據(jù)的文件存儲(chǔ)管理。隨著信息化、智能化、網(wǎng)絡(luò)化的快速發(fā)展,嵌入式PDA技術(shù)也將獲得廣闊的發(fā)展空間。
參考文獻(xiàn)
[1] ST公司.STR71XF_DATASHEET.PDF,2002(4):1-50.
[2]周立功.ARM嵌入式系統(tǒng)軟件開(kāi)發(fā)實(shí)列[M].北京:北京航空航天大學(xué)出版社,2005.
[3]張崙.32位嵌入式系統(tǒng)硬件設(shè)計(jì)與調(diào)試[M].2版.北京:機(jī)械工業(yè)出版社,2003.
[4]周立功.PDIUSBD12固件編程與驅(qū)動(dòng)開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2003.
[5]佚名.STR710與NAND512W3A的接口時(shí)序問(wèn)題 [EB/OL].http://www.dzsc.com/dzbbs/,2007.
[6]沈建華.STR710X系列ARM 微控制器原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2006.
[7]Fuber S.ARM SoC體系結(jié)構(gòu)[M].2版.田澤,于郭山,盛世敏,譯.北京:北京航空航天大學(xué)出版社,2002.
[8]田澤.ARM嵌入式系統(tǒng)軟件開(kāi)發(fā)與應(yīng)用實(shí)驗(yàn)教程.北京:北京航空航天大學(xué)出版社,2004.
[9]ST公司.NAND512w3a_DATASHEET.PDF,2001(6):1-46.
[10]胥靜.嵌入式系統(tǒng)系統(tǒng)設(shè)計(jì)開(kāi)發(fā)實(shí)例詳解[M].北京:北京航空航天大學(xué)出版社,2005.
作者簡(jiǎn)介 胡 劍 男,1984年出生,浙江紹興人,浙江工業(yè)職業(yè)技術(shù)學(xué)院,教師。研究方向?yàn)榍度胧较到y(tǒng)及通信網(wǎng)。