基于A(yíng)RM控制器LPC2214的稅控收款機系統的設計
引言
稅控收款機是指具有特定稅控功能的電子收款機,它是集軟硬件為一體的嵌入式系統,硬件設計考慮高性?xún)r(jià)比和高可靠性,軟件設計考慮系統的穩定性和可靠性。根據這一原則,本文介紹了一種基于ARM控制器LPC2214的稅控收款機的設計方案。
稅控收款機硬件系統的設計與實(shí)現
稅控收款機的硬件組成框圖如圖1所示,其硬件系統由中央處理模塊、顯示模塊、打印模塊、電源模塊、時(shí)鐘模塊、IC卡接口、外部通訊接口(包括RS232串行接口、網(wǎng)絡(luò )接口、USB接口等)、蜂鳴器,以及輸入鍵盤(pán)、電子鎖、條碼掃描儀和手寫(xiě)板等幾部分組成。
圖1 稅控收款機硬件框圖
中央處理模塊
中央處理模塊采用飛利浦公司基于32位ARM7TDMI-S內核的低功耗ARM處理器LPC2214。該處理器是飛利浦公司為嵌入式應用提供的高性?xún)r(jià)比微控制器解決方案,通過(guò)在A(yíng)RM7TDMI-S內容基礎上擴展一系列的通用外圍器件,使系統費用降至最低,增強了系統對外部設備的支持能力。由于LPC2114集成了豐富的片上資源,所以系統本身的擴展大大減少,這不但減小了產(chǎn)品的體積,而且便于維護。
顯示模塊
作為人機交互的顯示模塊包括一個(gè)LCD主顯示屏和一個(gè)9位的VFD用戶(hù)顯示屏,其中LCD采用內置KS0107/KS0108控制器的圖形點(diǎn)陣式液晶,顯示分辨率為19264,可顯示165個(gè)1112點(diǎn)陣的漢字;VFD通過(guò)具有SPI接口的芯片HT16512進(jìn)行驅動(dòng)。
打印模塊
系統選用EPSON公司的MU110II打印機頭,供電電壓為DC24V。電機驅動(dòng)采用MTD2003F,針驅動(dòng)采用MTA001M,由LPC2214的通用I/O口進(jìn)行控制。
電源管理模塊
系統采用開(kāi)關(guān)電源為L(cháng)PC2214提供5V電源。由于稅控收款機對掉電保護有嚴格要求,所以在電源管理模塊中設計了掉電保護電路,可以在掉電時(shí)維持系統正常工作一定時(shí)間。掉電時(shí)該電路會(huì )發(fā)送給處理器一個(gè)中斷,使系統進(jìn)入掉電中斷處理程序,進(jìn)行相應的掉電保護工作。
時(shí)鐘模塊
時(shí)鐘模塊采用I2C總線(xiàn)時(shí)鐘芯片P8563AP,在后備電池的支持下,能保證系統掉電后片內時(shí)鐘繼續運行。
稅控存儲器
稅控收款機需要記錄大量的數據信息,本系統采用了ATMEL公司具有SPI接口的Flash存儲器AT45DB321,由于LPC2214微控制器具有SPI的接口,所以能夠方便地同它相連接。設計上采用可插拔式模塊,將數據存儲模塊與系統主板分離。此設計的特點(diǎn)是當系統出錯時(shí),能夠將重要數據及時(shí)轉移,降低了數據發(fā)生錯誤的幾率,提高了數據的完整性和可靠性。在稅控卡的配合下,可以將相關(guān)的數據信息轉移到另一正常工作的機器中繼續進(jìn)行工作,保證數據存儲的時(shí)效性。另外,也可以在維護和檢修時(shí)采用替換法,這體現出很強的實(shí)用性和可操作性。
IC卡接口
通常的設計中會(huì )使用專(zhuān)用IC卡讀寫(xiě)芯片為系統提供ISO7816的接口,如CTS56I01、WatchCore、TDA8020等。本系統沒(méi)有進(jìn)行硬件擴展,充分利用LPC2214的性能特性,實(shí)現了符合ISO7816標準的IC卡接口功能。
智能卡芯片的接口信號包括:電源電壓(VCC)、地(GND)、復位(RST)、時(shí)鐘(CLK)、編程電壓(VPP)、輸入輸出(I/O)。如圖2所示,I/O、RST由LPC2214微控制器的通用I/O口(GPIO)來(lái)控制,通過(guò)軟件模擬數據讀寫(xiě)操作時(shí)序,實(shí)現數據的交換,其中I/O上信號的傳輸是雙向的,所以要利用軟件根據時(shí)序不斷轉換輸入輸出的狀態(tài)。此方法具有成本低、方便靈活等特點(diǎn)。
其它模塊
鍵盤(pán)控制芯片采用具有SPI串行接口的ZLG7289B,該芯片可連接多達64鍵的鍵盤(pán)矩陣,可滿(mǎn)足本系統的設計要求。
由于LPC2214未集成USB控制器,因此系統中采用了CYPRESS公司內含USB主/從控制器、可支持全速數據傳輸的USB控制芯片SL811HS,以支持U盤(pán)和移動(dòng)硬盤(pán)讀寫(xiě)操作。此外,本系統采用RTL8019以太網(wǎng)控制器擴展31個(gè)以太網(wǎng)接口,稅控收款機相互之間可以通過(guò)網(wǎng)絡(luò )接口進(jìn)行數據通信,并且可以和PC機的數據庫系統進(jìn)行數據交換。
稅控收款機軟件系統的設計與實(shí)現
稅控收款機軟件結構
稅控收款機軟件采用分層次結構化、模塊化設計,依次分為業(yè)務(wù)處理層、接口層、設備驅動(dòng)層和硬件平臺等4個(gè)層次。其中業(yè)務(wù)處理層完成稅控收款機具體的業(yè)務(wù)處理;接口層作為業(yè)務(wù)處理層與設備驅動(dòng)層的橋梁,提供與具體硬件平臺無(wú)關(guān)的應用程序接口(API),其主要功能是對下層設備驅動(dòng)程序進(jìn)行封裝,并提供一些公共的函數庫;設備驅動(dòng)層即BSP(Board Support Package,板級支持包),包含具體硬件平臺的各種設備驅動(dòng)程序。
采用如上架構的系統軟件層次結構清晰,直接相鄰的上下層之間存在依賴(lài)關(guān)系,不相鄰的上下層之間沒(méi)有依賴(lài)關(guān)系。同層各模塊之間的調用通過(guò)預定義的模塊輸出接口函數實(shí)現,各模塊之間的耦合度低,具有良好的可移植性和可擴充性。如果要針對不同的行業(yè)設計不同的機型或根據需要擴充系統功能時(shí),只需修改業(yè)務(wù)處理層,接口層和設備驅動(dòng)層均無(wú)需修改;如果是變換了硬件平臺,則只需修改設備驅動(dòng)層和接口層,業(yè)務(wù)處理層無(wú)需修改。
圖2 稅控收款機IC卡接口
業(yè)務(wù)處理層設計
業(yè)務(wù)處理層是稅控收款機軟件架構中的最上層,與具體的硬件平臺無(wú)關(guān),作為一個(gè)應用軟件可方便地移植到不同的硬件平臺上。該層用于實(shí)現商務(wù)和稅控兩大主要功能,由4個(gè)模塊組成。
主程序(主控模塊)進(jìn)行系統自檢、軟硬件的初始化、調度運行業(yè)務(wù)處理層的其它模塊以及處理掉電數據恢復、數據整理,并控制整個(gè)軟件的流程;稅控功能模塊實(shí)現GB18240-2003國家標準中的稅控功能,負責機器初始化和注冊、發(fā)票的購買(mǎi)分發(fā)、開(kāi)發(fā)票(包括退票、廢票處理)、稅控數據申報、監控數據回送、稅務(wù)核查等;商務(wù)功能模塊由銷(xiāo)售子模塊、統計分析(報表)子模塊、設置管理子模塊以及其它一些功能子模塊組成;通訊模塊負責與運行在上位機(PC)上的稅控收款機管理系統進(jìn)行數據通信。
接口層設計
接口層作為一個(gè)抽象層僅提供應用程序接口,不對具體硬件操作,也不處理具體業(yè)務(wù),是針對復雜設備設計的管理程序,主要包括IC卡管理、存儲器管理、USB通訊管理等。以下詳細介紹存儲器管理中的發(fā)票存儲管理模塊。
稅控收款機要求能夠可靠存儲大量發(fā)票數據,因此發(fā)票存儲管理模塊是本系統的一個(gè)關(guān)鍵模塊。為了節約存儲空間,本系統中發(fā)票存儲系統采用了變長(cháng)滾動(dòng)存儲方法。
變長(cháng)即指發(fā)票長(cháng)度因各發(fā)票頭部和其所含明細的不同,占用的存儲空間大小也不同。本系統中發(fā)票頭部分別可能占用32、64、96字節,發(fā)票最大明細數為8,每筆明細占用32字節。這樣,每張發(fā)票所占存儲空間為1個(gè)~11個(gè)32字節。發(fā)票在存儲器中的存儲位置也是以32字節為單位對齊的,兩張發(fā)票之間位置首尾相連,沒(méi)有冗余空間。
滾動(dòng)存儲即指在存儲空間固定的情況下,循環(huán)利用這部分存儲空間,當所存儲的發(fā)票占用到了足夠大的空間時(shí),新的發(fā)票可能會(huì )覆蓋掉最早存儲的發(fā)票位置。
由于發(fā)票變長(cháng)存儲,所占空間大小不一,為了達到隨機訪(fǎng)問(wèn)的目的,需要建立一張位置索引表,表中的每項指明發(fā)票的實(shí)際存儲位置,比如,位置索引表中的第n項就是第n張發(fā)票在存儲器中的位置。同時(shí),為了加快通過(guò)發(fā)票號查找發(fā)票詳細信息的查找速度,要最大可能地減少對存儲器的訪(fǎng)問(wèn)次數,這是提高查找速度的關(guān)鍵。本系統采用Hash索引表來(lái)快速定位所要查找的發(fā)票,為了解決該算法的Hash值計算沖突,另外建立了一張Hash鏈接表,此表的長(cháng)度和位置索引表相同,表中每個(gè)值代表Hash值沖突的下一張發(fā)票的位置。
設備驅動(dòng)層設計
設備驅動(dòng)層包括直接操作外設的驅動(dòng),如IC卡、Flash、LCD、VFD、打印機、USB、鍵盤(pán)、時(shí)鐘等外設的驅動(dòng);另外還包括LPC2214內部配置驅動(dòng),如內部寄存器配置、UART配置、GPIO設置、RTC讀寫(xiě)、TIMER設置等。其中ISO7816標準IC卡驅動(dòng)是一個(gè)關(guān)鍵部分,它包含插卡檢測、卡上下電、卡復位和卡命令等功能。
IC卡與LPC2214微控制器的數據傳輸方式為異步半雙工字符傳輸模式,本系統使用軟件實(shí)現該功能。利用LPC2214的GPIO來(lái)軟件模擬IC卡的讀寫(xiě)操作時(shí)序,進(jìn)行數據交換:接收數據時(shí)將LPC2214的GPIO設置為輸入模式,使用中斷程序對I/O數據線(xiàn)進(jìn)行采樣;發(fā)送數據時(shí)將LPC2214的GPIO設置為輸出模式,在中斷程序中直接輸出需要發(fā)送的數據位。
異常情況處理
當異常情況(如斷電、拔卡等)發(fā)生時(shí),稅控收款機應保證數據不丟失、無(wú)差錯。本系統從兩方面保證了數據的可靠性。一方面,在初始化、分發(fā)發(fā)票、錄入發(fā)票、開(kāi)票、報稅及完稅等關(guān)鍵步驟前先檢測電源是否正常,如已經(jīng)發(fā)生掉電,系統停止工作;否則置標志,開(kāi)始正常的步驟操作,步驟完成后,清除標志。如果步驟未完成前發(fā)生斷電或IC卡意外拔出等事件,則在下一次上電或重新操作該步驟時(shí)系統會(huì )檢測到標志,軟件將自動(dòng)調用恢復機制,完成剩余操作,恢復丟失的數據。
另一方面,在發(fā)票打印的過(guò)程中如果出現掉電的情況,則需做掉電續打處理。在發(fā)票開(kāi)始打印前先保存發(fā)票明細數據,置“打印未完成”標志;在打印一行數據過(guò)程中若發(fā)生掉電,掉電保護電路發(fā)出一個(gè)中斷,調用中斷例程,利用掉電保護電路所維持的工作時(shí)間保存當前打印位置,系統停止工作;待重新上電后檢測到“打印未完成”標志,則讀出最后一張發(fā)票明細數據,從斷電時(shí)記錄的位置繼續打印出一張完整的發(fā)票,并清除標志。
數據安全性處理
稅控收款機集商務(wù)、稅控、管理等功能于一體,對數據的傳輸和存儲要求相當高,需要能夠正確地傳輸、存儲、生成及反饋數據,因此,對安全性的要求也相當高。本系統的安全性設計從以下幾個(gè)方面來(lái)體現。
系統中采取了用戶(hù)權限分級管理的方法,設置了三種具有不同操作權限的角色:系統管理員、收款員、稅務(wù)稽查員。用戶(hù)與角色關(guān)聯(lián),用戶(hù)密碼采用6位~8位數字,密碼以密文形式存儲在Flash內。進(jìn)入相應的用戶(hù)模式都要通過(guò)對應的密碼校驗,才能夠登錄稅控收款機,執行本用戶(hù)級的相應操作。
系統會(huì )對Flash的數據寫(xiě)入操作做讀校驗,在讀寫(xiě)存儲器中的關(guān)鍵數據時(shí)比較、保存校驗和;在開(kāi)機自檢和使用稅控數據時(shí)對稅控數據作數據完整性校驗。
另外,在執行關(guān)鍵操作、外部通訊、代碼維護等操作前系統要對用戶(hù)進(jìn)行身份鑒別,并對操作對應的事件產(chǎn)生審計記錄。
結語(yǔ)
本系統充分利用LPC2214本身的硬件資源,通過(guò)軟件實(shí)現了符合ISO7816標準的智能IC卡接口,系統設計符合稅控收款機國家標準GB18240-2003。整個(gè)系統設計結構簡(jiǎn)潔,便于提高性能和與各種外設的連接擴展,極具競爭優(yōu)勢,產(chǎn)品得到了市場(chǎng)的認可。
參考文獻:
1.Cpc2114/2124/2212/2214 Vser Manual.philips Semicondudor,2004
2.杜春雷編著(zhù),ARM體系結構與編程,北京清華大學(xué)出版社,2002
評論