新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM控制器LPC2214的稅控收款機(jī)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

基于ARM控制器LPC2214的稅控收款機(jī)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2017-06-04 來源:網(wǎng)絡(luò) 收藏

引言
稅控收款機(jī)是指具有特定稅控功能的電子收款機(jī),它是集軟硬件為一體的嵌入式系統(tǒng),硬件設(shè)計(jì)考慮高性價(jià)比和高可靠性,軟件設(shè)計(jì)考慮系統(tǒng)的穩(wěn)定性和可靠性。根據(jù)這一原則,本文介紹了一種基于ARM控制器LPC2214的稅控收款機(jī)的設(shè)計(jì)方案。

本文引用地址:http://www.butianyuan.cn/article/201706/348637.htm

稅控收款機(jī)硬件系統(tǒng)的

設(shè)計(jì)與實(shí)現(xiàn)

稅控收款機(jī)的硬件組成框圖如圖1所示,其硬件系統(tǒng)由中央處理模塊、顯示模塊、打印模塊、電源模塊、時(shí)鐘模塊、IC卡接口、外部通訊接口(包括RS232串行接口、網(wǎng)絡(luò)接口、USB接口等)、蜂鳴器,以及輸入鍵盤、電子鎖、條碼掃描儀和手寫板等幾部分組成。


圖1 稅控收款機(jī)硬件框圖


中央處理模塊

中 央處理模塊采用飛利浦公司基于32位ARM7TDMI-S內(nèi)核的低功耗ARM處理器LPC2214。該處理器是飛利浦公司為嵌入式應(yīng)用提供的高性價(jià)比微控 制器解決方案,通過在ARM7TDMI-S內(nèi)容基礎(chǔ)上擴(kuò)展一系列的通用外圍器件,使系統(tǒng)費(fèi)用降至最低,增強(qiáng)了系統(tǒng)對(duì)外部設(shè)備的支持能力。由于 LPC2114集成了豐富的片上資源,所以系統(tǒng)本身的擴(kuò)展大大減少,這不但減小了產(chǎn)品的體積,而且便于維護(hù)。

顯示模塊

作為人機(jī)交互的顯示 模塊包括一個(gè)LCD主顯示屏和一個(gè)9位的VFD用戶顯示屏,其中LCD采用內(nèi)置KS0107/KS0108控制器的圖形點(diǎn)陣式液晶,顯示分辨率為192× 64,可顯示16×5個(gè)11×12點(diǎn)陣的漢字;VFD通過具有SPI接口的芯片HT16512進(jìn)行驅(qū)動(dòng)。

打印模塊

系統(tǒng)選用EPSON公司的MU110II打印機(jī)頭,供電電壓為DC24V。電機(jī)驅(qū)動(dòng)采用MTD2003F,針驅(qū)動(dòng)采用MTA001M,由LPC2214的通用I/O口進(jìn)行控制。

電源管理模塊

系統(tǒng)采用開關(guān)電源為LPC2214提供5V電源。由于稅控收款機(jī)對(duì)掉電保護(hù)有嚴(yán)格要求,所以在電源管理模塊中設(shè)計(jì)了掉電保護(hù)電路,可以在掉電時(shí)維持系統(tǒng)正常工作一定時(shí)間。掉電時(shí)該電路會(huì)發(fā)送給處理器一個(gè)中斷,使系統(tǒng)進(jìn)入掉電中斷處理程序,進(jìn)行相應(yīng)的掉電保護(hù)工作。

時(shí)鐘模塊

時(shí)鐘模塊采用I2C總線時(shí)鐘芯片P8563AP,在后備電池的支持下,能保證系統(tǒng)掉電后片內(nèi)時(shí)鐘繼續(xù)運(yùn)行。

稅控存儲(chǔ)器

稅 控收款機(jī)需要記錄大量的數(shù)據(jù)信息,本系統(tǒng)采用了ATMEL公司具有SPI接口的Flash存儲(chǔ)器AT45DB321,由于LPC2214微控制器具有 SPI的接口,所以能夠方便地同它相連接。設(shè)計(jì)上采用可插拔式模塊,將數(shù)據(jù)存儲(chǔ)模塊與系統(tǒng)主板分離。此設(shè)計(jì)的特點(diǎn)是當(dāng)系統(tǒng)出錯(cuò)時(shí),能夠?qū)⒅匾獢?shù)據(jù)及時(shí)轉(zhuǎn) 移,降低了數(shù)據(jù)發(fā)生錯(cuò)誤的幾率,提高了數(shù)據(jù)的完整性和可靠性。在稅控卡的配合下,可以將相關(guān)的數(shù)據(jù)信息轉(zhuǎn)移到另一正常工作的機(jī)器中繼續(xù)進(jìn)行工作,保證數(shù)據(jù) 存儲(chǔ)的時(shí)效性。另外,也可以在維護(hù)和檢修時(shí)采用替換法,這體現(xiàn)出很強(qiáng)的實(shí)用性和可操作性。

IC卡接口

通常的設(shè)計(jì)中會(huì)使用專用IC卡讀寫芯片為系統(tǒng)提供ISO7816的接口,如CTS56I01、WatchCore、TDA8020等。本系統(tǒng)沒有進(jìn)行硬件擴(kuò)展,充分利用LPC2214的性能特性,實(shí)現(xiàn)了符合ISO7816標(biāo)準(zhǔn)的IC卡接口功能。

智 能卡芯片的接口信號(hào)包括:電源電壓(VCC)、地(GND)、復(fù)位(RST)、時(shí)鐘(CLK)、編程電壓(VPP)、輸入輸出(I/O)。如圖2所示, I/O、RST由LPC2214微控制器的通用I/O口(GPIO)來控制,通過軟件模擬數(shù)據(jù)讀寫操作時(shí)序,實(shí)現(xiàn)數(shù)據(jù)的交換,其中I/O上信號(hào)的傳輸是雙 向的,所以要利用軟件根據(jù)時(shí)序不斷轉(zhuǎn)換輸入輸出的狀態(tài)。此方法具有成本低、方便靈活等特點(diǎn)。

其它模塊

鍵盤控制芯片采用具有SPI串行接口的ZLG7289B,該芯片可連接多達(dá)64鍵的鍵盤矩陣,可滿足本系統(tǒng)的設(shè)計(jì)要求。

由 于LPC2214未集成USB控制器,因此系統(tǒng)中采用了CYPRESS公司內(nèi)含USB主/從控制器、可支持全速數(shù)據(jù)傳輸?shù)腢SB控制芯片SL811HS, 以支持U盤和移動(dòng)硬盤讀寫操作。此外,本系統(tǒng)采用RTL8019以太網(wǎng)控制器擴(kuò)展31個(gè)以太網(wǎng)接口,稅控收款機(jī)相互之間可以通過網(wǎng)絡(luò)接口進(jìn)行數(shù)據(jù)通信,并 且可以和PC機(jī)的數(shù)據(jù)庫系統(tǒng)進(jìn)行數(shù)據(jù)交換。

稅控收款機(jī)軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

稅控收款機(jī)軟件結(jié)構(gòu)

稅控收款機(jī)軟件采用分層次結(jié)構(gòu)化、模塊化設(shè)計(jì),依次分為業(yè)務(wù)處理層、接 口層、設(shè)備驅(qū)動(dòng)層和硬件平臺(tái)等4個(gè)層次。其中業(yè)務(wù)處理層完成稅控收款機(jī)具體的業(yè)務(wù)處理;接口層作為業(yè)務(wù)處理層與設(shè)備驅(qū)動(dòng)層的橋梁,提供與具體硬件平臺(tái)無關(guān) 的應(yīng)用程序接口(API),其主要功能是對(duì)下層設(shè)備驅(qū)動(dòng)程序進(jìn)行封裝,并提供一些公共的函數(shù)庫;設(shè)備驅(qū)動(dòng)層即BSP(Board Support Package,板級(jí)支持包),包含具體硬件平臺(tái)的各種設(shè)備驅(qū)動(dòng)程序。

采用如上架構(gòu)的系統(tǒng)軟件層次結(jié)構(gòu)清晰,直接相鄰的上下層之間存在依賴關(guān)系, 不相鄰的上下層之間沒有依賴關(guān)系。同層各模塊之間的調(diào)用通過預(yù)定義的模塊輸出接口函數(shù)實(shí)現(xiàn),各模塊之間的耦合度低,具有良好的可移植性和可擴(kuò)充性。如果要 針對(duì)不同的行業(yè)設(shè)計(jì)不同的機(jī)型或根據(jù)需要擴(kuò)充系統(tǒng)功能時(shí),只需修改業(yè)務(wù)處理層,接口層和設(shè)備驅(qū)動(dòng)層均無需修改;如果是變換了硬件平臺(tái),則只需修改設(shè)備驅(qū)動(dòng) 層和接口層,業(yè)務(wù)處理層無需修改。


圖2 稅控收款機(jī)IC卡接口


業(yè)務(wù)處理層設(shè)計(jì)

業(yè)務(wù)處理層是稅控收款機(jī)軟件架構(gòu)中的最上層,與具體的硬件平臺(tái)無關(guān),作為一個(gè)應(yīng)用軟件可方便地移植到不同的硬件平臺(tái)上。該層用于實(shí)現(xiàn)商務(wù)和稅控兩大主要功能,由4個(gè)模塊組成。

主 程序(主控模塊)進(jìn)行系統(tǒng)自檢、軟硬件的初始化、調(diào)度運(yùn)行業(yè)務(wù)處理層的其它模塊以及處理掉電數(shù)據(jù)恢復(fù)、數(shù)據(jù)整理,并控制整個(gè)軟件的流程;稅控功能模塊實(shí)現(xiàn) GB18240-2003國家標(biāo)準(zhǔn)中的稅控功能,負(fù)責(zé)機(jī)器初始化和注冊(cè)、發(fā)票的購買分發(fā)、開發(fā)票(包括退票、廢票處理)、稅控?cái)?shù)據(jù)申報(bào)、監(jiān)控?cái)?shù)據(jù)回送、稅 務(wù)核查等;商務(wù)功能模塊由銷售子模塊、統(tǒng)計(jì)分析(報(bào)表)子模塊、設(shè)置管理子模塊以及其它一些功能子模塊組成;通訊模塊負(fù)責(zé)與運(yùn)行在上位機(jī)(PC)上的稅控 收款機(jī)管理系統(tǒng)進(jìn)行數(shù)據(jù)通信。

接口層設(shè)計(jì)

接口層作為一個(gè)抽象層僅提供應(yīng)用程序接口,不對(duì)具體硬件操作,也不處理具體業(yè)務(wù),是針對(duì)復(fù)雜設(shè)備設(shè)計(jì)的管理程序,主要包括IC卡管理、存儲(chǔ)器管理、USB通訊管理等。以下詳細(xì)介紹存儲(chǔ)器管理中的發(fā)票存儲(chǔ)管理模塊。

稅控收款機(jī)要求能夠可靠存儲(chǔ)大量發(fā)票數(shù)據(jù),因此發(fā)票存儲(chǔ)管理模塊是本系統(tǒng)的一個(gè)關(guān)鍵模塊。為了節(jié)約存儲(chǔ)空間,本系統(tǒng)中發(fā)票存儲(chǔ)系統(tǒng)采用了變長滾動(dòng)存儲(chǔ)方法。

變 長即指發(fā)票長度因各發(fā)票頭部和其所含明細(xì)的不同,占用的存儲(chǔ)空間大小也不同。本系統(tǒng)中發(fā)票頭部分別可能占用32、64、96字節(jié),發(fā)票最大明細(xì)數(shù)為8,每 筆明細(xì)占用32字節(jié)。這樣,每張發(fā)票所占存儲(chǔ)空間為1個(gè)~11個(gè)32字節(jié)。發(fā)票在存儲(chǔ)器中的存儲(chǔ)位置也是以32字節(jié)為單位對(duì)齊的,兩張發(fā)票之間位置首尾相 連,沒有冗余空間。

滾動(dòng)存儲(chǔ)即指在存儲(chǔ)空間固定的情況下,循環(huán)利用這部分存儲(chǔ)空間,當(dāng)所存儲(chǔ)的發(fā)票占用到了足夠大的空間時(shí),新的發(fā)票可能會(huì)覆蓋掉最早存儲(chǔ)的發(fā)票位置。

由 于發(fā)票變長存儲(chǔ),所占空間大小不一,為了達(dá)到隨機(jī)訪問的目的,需要建立一張位置索引表,表中的每項(xiàng)指明發(fā)票的實(shí)際存儲(chǔ)位置,比如,位置索引表中的第n項(xiàng)就 是第n張發(fā)票在存儲(chǔ)器中的位置。同時(shí),為了加快通過發(fā)票號(hào)查找發(fā)票詳細(xì)信息的查找速度,要最大可能地減少對(duì)存儲(chǔ)器的訪問次數(shù),這是提高查找速度的關(guān)鍵。本 系統(tǒng)采用Hash索引表來快速定位所要查找的發(fā)票,為了解決該算法的Hash值計(jì)算沖突,另外建立了一張Hash鏈接表,此表的長度和位置索引表相同,表 中每個(gè)值代表Hash值沖突的下一張發(fā)票的位置。

設(shè)備驅(qū)動(dòng)層設(shè)計(jì)

設(shè)備驅(qū)動(dòng)層包括直接操作外設(shè)的驅(qū)動(dòng),如IC卡、Flash、LCD、 VFD、打印機(jī)、USB、鍵盤、時(shí)鐘等外設(shè)的驅(qū)動(dòng);另外還包括LPC2214內(nèi)部配置驅(qū)動(dòng),如內(nèi)部寄存器配置、UART配置、GPIO設(shè)置、RTC讀寫、 TIMER設(shè)置等。其中ISO7816標(biāo)準(zhǔn)IC卡驅(qū)動(dòng)是一個(gè)關(guān)鍵部分,它包含插卡檢測(cè)、卡上下電、卡復(fù)位和卡命令等功能。

IC卡與LPC2214 微控制器的數(shù)據(jù)傳輸方式為異步半雙工字符傳輸模式,本系統(tǒng)使用軟件實(shí)現(xiàn)該功能。利用LPC2214的GPIO來軟件模擬IC卡的讀寫操作時(shí)序,進(jìn)行數(shù)據(jù)交 換:接收數(shù)據(jù)時(shí)將LPC2214的GPIO設(shè)置為輸入模式,使用中斷程序?qū)/O數(shù)據(jù)線進(jìn)行采樣;發(fā)送數(shù)據(jù)時(shí)將LPC2214的GPIO設(shè)置為輸出模式, 在中斷程序中直接輸出需要發(fā)送的數(shù)據(jù)位。

異常情況處理

當(dāng)異常情況(如斷電、拔卡等)發(fā)生時(shí),稅控收款機(jī)應(yīng)保證數(shù)據(jù)不丟失、無差錯(cuò)。本系統(tǒng) 從兩方面保證了數(shù)據(jù)的可靠性。一方面,在初始化、分發(fā)發(fā)票、錄入發(fā)票、開票、報(bào)稅及完稅等關(guān)鍵步驟前先檢測(cè)電源是否正常,如已經(jīng)發(fā)生掉電,系統(tǒng)停止工作; 否則置標(biāo)志,開始正常的步驟操作,步驟完成后,清除標(biāo)志。如果步驟未完成前發(fā)生斷電或IC卡意外拔出等事件,則在下一次上電或重新操作該步驟時(shí)系統(tǒng)會(huì)檢測(cè) 到標(biāo)志,軟件將自動(dòng)調(diào)用恢復(fù)機(jī)制,完成剩余操作,恢復(fù)丟失的數(shù)據(jù)。

另一方面,在發(fā)票打印的過程中如果出現(xiàn)掉電的情況,則需做掉電續(xù)打處理。在發(fā)票 開始打印前先保存發(fā)票明細(xì)數(shù)據(jù),置“打印未完成”標(biāo)志;在打印一行數(shù)據(jù)過程中若發(fā)生掉電,掉電保護(hù)電路發(fā)出一個(gè)中斷,調(diào)用中斷例程,利用掉電保護(hù)電路所維 持的工作時(shí)間保存當(dāng)前打印位置,系統(tǒng)停止工作;待重新上電后檢測(cè)到“打印未完成”標(biāo)志,則讀出最后一張發(fā)票明細(xì)數(shù)據(jù),從斷電時(shí)記錄的位置繼續(xù)打印出一張完 整的發(fā)票,并清除標(biāo)志。

數(shù)據(jù)安全性處理

稅控收款機(jī)集商務(wù)、稅控、管理等功能于一體,對(duì)數(shù)據(jù)的傳輸和存儲(chǔ)要求相當(dāng)高,需要能夠正確地傳輸、存儲(chǔ)、生成及反饋數(shù)據(jù),因此,對(duì)安全性的要求也相當(dāng)高。本系統(tǒng)的安全性設(shè)計(jì)從以下幾個(gè)方面來體現(xiàn)。

系 統(tǒng)中采取了用戶權(quán)限分級(jí)管理的方法,設(shè)置了三種具有不同操作權(quán)限的角色:系統(tǒng)管理員、收款員、稅務(wù)稽查員。用戶與角色關(guān)聯(lián),用戶密碼采用6位~8位數(shù)字, 密碼以密文形式存儲(chǔ)在Flash內(nèi)。進(jìn)入相應(yīng)的用戶模式都要通過對(duì)應(yīng)的密碼校驗(yàn),才能夠登錄稅控收款機(jī),執(zhí)行本用戶級(jí)的相應(yīng)操作。

系統(tǒng)會(huì)對(duì)Flash的數(shù)據(jù)寫入操作做讀校驗(yàn),在讀寫存儲(chǔ)器中的關(guān)鍵數(shù)據(jù)時(shí)比較、保存校驗(yàn)和;在開機(jī)自檢和使用稅控?cái)?shù)據(jù)時(shí)對(duì)稅控?cái)?shù)據(jù)作數(shù)據(jù)完整性校驗(yàn)。

另外,在執(zhí)行關(guān)鍵操作、外部通訊、代碼維護(hù)等操作前系統(tǒng)要對(duì)用戶進(jìn)行身份鑒別,并對(duì)操作對(duì)應(yīng)的事件產(chǎn)生審計(jì)記錄。

結(jié)語

本系統(tǒng)充分利用LPC2214本身的硬件資源,通過軟件實(shí)現(xiàn)了符合ISO7816標(biāo)準(zhǔn)的智能IC卡接口,系統(tǒng)設(shè)計(jì)符合稅控收款機(jī)國家標(biāo)準(zhǔn)GB18240-2003。整個(gè)系統(tǒng)設(shè)計(jì)結(jié)構(gòu)簡潔,便于提高性能和與各種外設(shè)的連接擴(kuò)展,極具競(jìng)爭優(yōu)勢(shì),產(chǎn)品得到了市場(chǎng)的認(rèn)可。

參考文獻(xiàn):
1.Cpc2114/2124/2212/2214 Vser Manual.philips Semicondudor,2004
2.杜春雷編著,ARM體系結(jié)構(gòu)與編程,北京清華大學(xué)出版社,2002



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉