一種智能卡讀寫(xiě)器的設(shè)計(jì)與實(shí)現(xiàn)
文章出處:http://www.fang1.net 作者:楊志峰 王志新 人氣: 發(fā)表時(shí)間:2011年10月20日
[文章內(nèi)容簡(jiǎn)介]:本文闡述了設(shè)計(jì)實(shí)現(xiàn)一種基于智能卡應(yīng)用的IC卡 讀寫(xiě)器。此讀寫(xiě)器在智能卡應(yīng)用的基礎(chǔ)上突出通用性,能夠?qū)σ灾悄芸橹鞯母黝怚C卡 進(jìn)行操作。
1引言 智能卡也稱CPU卡,是一類將處理器、存儲(chǔ)設(shè)備和一定規(guī)模的操作系統(tǒng)集成一體,具備較強(qiáng) 功能和較高安全性的IC卡。智能卡讀寫(xiě)器是智能卡應(yīng)用過(guò)程中卡與用戶間的交互平臺(tái),是能將數(shù)據(jù)信息“寫(xiě)入”卡和將卡內(nèi)部的數(shù)據(jù)信息“讀出”的接口體系,是開(kāi)發(fā)智能卡相關(guān)產(chǎn) 品及系統(tǒng)集成所必備的前端處理設(shè)備。本文闡述了設(shè)計(jì)實(shí)現(xiàn)一種基于智能卡應(yīng)用的IC卡 讀寫(xiě)器。此讀寫(xiě)器在智能卡應(yīng)用的基礎(chǔ)上突出通用性,能夠?qū)σ灾悄芸橹鞯母黝怚C卡 進(jìn)行操作。根據(jù)目前智能卡應(yīng)用中的實(shí)際需求,讀寫(xiě)器主要具備以下基本功能: (1) 向IC卡提供穩(wěn)定的電源和時(shí)鐘信號(hào)?! ?2) 實(shí)現(xiàn)讀寫(xiě)器與IC卡之間的數(shù)據(jù)交換,并提供控制信號(hào)?! ?3) 具有和外部用戶交換信息的接口,并提供相應(yīng)的控制信號(hào)。 (4) 有基本的加/解密安全體系。 (5) 適用于對(duì)多種IC卡的操作?! ≡O(shè)備同時(shí)具有開(kāi)放性的軟、硬件接口,能夠與PC機(jī)等用戶平臺(tái)進(jìn)行連接,從而為后期用戶提 供良好的二次開(kāi)發(fā)方面的支持。 2硬件結(jié)構(gòu) 讀寫(xiě)器的硬件組成如圖1所示。包括電源、單片機(jī)系統(tǒng)、RS 232接口、IC卡讀寫(xiě)接口、多路 時(shí)鐘系統(tǒng)和復(fù)位電路等幾個(gè)主要部分。 單片機(jī)系統(tǒng)由89C52CPU、三態(tài)地址鎖存器和靜態(tài)存貯器組成。89C52的P0口與三態(tài)地址鎖存 器形成地址總線的低8位,即A0~A7,以及數(shù)據(jù)總線D0~D7;89C52的P2.0~P2.6形成地址 總線的高8位,即A8~A12。靜態(tài)存貯器用于保存讀寫(xiě)器運(yùn)行過(guò)程中預(yù)設(shè)的一系列軟件指令。串行接口用于實(shí)現(xiàn)讀寫(xiě)器與用戶端設(shè)備,如PC機(jī)等之間的數(shù)據(jù)通信。在當(dāng)前系統(tǒng)中采用了一片MAX232,其中的RXD、TXD做為數(shù)據(jù)的I/O通道接CPU串行口,完成讀寫(xiě)器CPU與外部間的數(shù)據(jù)交換。同時(shí),外部用戶端還可通過(guò)串口的RTS信號(hào)對(duì)IC卡讀寫(xiě)器進(jìn)行軟件上的復(fù)位?! ⊥ㄓ玫闹悄芸ǘ酁楫惒叫虲PU卡,在其時(shí)鐘方面多需要不同的控制和發(fā)生體系。因此在讀寫(xiě) 器中設(shè)置有專門(mén)的時(shí)鐘電路和時(shí)鐘控制電路,主要由74LS253雙四選一電路及D觸發(fā)器等組成 。晶振提供的脈沖經(jīng)分頻產(chǎn)生時(shí)鐘信號(hào)分別送到四選一電路輸入端。另外2個(gè)輸入端分別接地和T0(89C52CPU的T0引腳),T0信號(hào)通過(guò)軟件編程分頻后向IC卡提供時(shí)鐘信號(hào),時(shí)鐘頻率、脈沖寬度可由具體編程決定。四選一電路的選擇控制端分別接P1.0和P1.1、P1.0和P1.1,分別對(duì)應(yīng)于不同的頻率關(guān)系?! ≡谧x寫(xiě)器的硬件構(gòu)成上,還提供有上/下電控制電路。這部分電路用于控制對(duì)卡的上電和下 電操作,也就是提供對(duì)卡的電源開(kāi)關(guān)控制。主要由89C52的P1.7、R3,R4和三極管Q2等組成開(kāi)關(guān)電路來(lái)控制對(duì)卡的上/下電。當(dāng)需要給IC卡加電時(shí),通過(guò)預(yù)先設(shè)定的程序使P17置“0”,使Q2導(dǎo)通,VCC通過(guò)Q2將CVCC送至IC卡;當(dāng)I C卡下電時(shí),置P1.7為“1”使Q2截止,從而禁止向IC卡供電。詳細(xì)電路如圖2所示。 作為用戶與IC卡之間的交互平臺(tái),讀寫(xiě)器需要分別建立與外部用戶和內(nèi)部IC卡之間的數(shù)據(jù)通 信體系。讀寫(xiě)器中的IC卡接口即提供讀寫(xiě)器與IC卡間進(jìn)行數(shù)據(jù)交換的通道。根據(jù)目前通用的IC卡接口標(biāo)準(zhǔn),與IC卡的接口基本上由8個(gè)信號(hào)組成:CLK時(shí)鐘、I/O數(shù)據(jù)、RST復(fù)位等,另外有3個(gè)NC信號(hào)供用戶自己定義。將他們分別與讀寫(xiě)器中CPU接口線相連,再由CPU通過(guò)預(yù)設(shè)的軟件指令控制和實(shí)現(xiàn)與IC卡間的數(shù)據(jù)交換,如圖3所示。 3讀寫(xiě)器的軟件體系 用戶以何種方式和過(guò)程使用讀寫(xiě)器是讀寫(xiě)器開(kāi)發(fā)中的關(guān)鍵部分之一,其核心目標(biāo)是在設(shè)備硬件體系的基礎(chǔ)上,開(kāi)發(fā)并提供一個(gè)使用戶能夠?qū)τ布M(jìn)行直接操作的軟件層,這個(gè)軟件層部分包括的主要是一系列的應(yīng)用協(xié)議和與其相配合的控制程序。在使用讀寫(xiě)器的過(guò)程中,PC機(jī)或其他外部用戶系統(tǒng)必須遵循或借助于這些協(xié)議,才能夠與讀寫(xiě)器內(nèi)部的控制程序正確互動(dòng)和協(xié)調(diào)一致,以實(shí)現(xiàn)對(duì)設(shè)備有效的使用。依據(jù)實(shí)際的應(yīng)用要求,該讀寫(xiě)器的軟件體系主要包含以下幾個(gè)組成部分。3.1對(duì)讀寫(xiě)器的啟動(dòng) 用戶在開(kāi)始使用讀寫(xiě)器,也就是要求與讀寫(xiě)器進(jìn)行數(shù)據(jù)通信前,首先需對(duì)設(shè)備進(jìn)行復(fù)位,使其加電啟動(dòng)系統(tǒng)并進(jìn)入待機(jī)狀態(tài)。 具體實(shí)施過(guò)程為PC機(jī)端首先通過(guò)已選擇好的串口,根據(jù)標(biāo)準(zhǔn)串口通信協(xié)議發(fā)送一個(gè)正脈沖至 讀寫(xiě)器端的RTS引腳。同時(shí)在讀寫(xiě)器中,為了使用戶(如PC機(jī))能夠驗(yàn)證設(shè)備的當(dāng)前復(fù)位狀態(tài),在讀寫(xiě)器被正確復(fù)位后,其上的控制系統(tǒng)會(huì)發(fā)送一個(gè)第一響應(yīng)碼至用戶端,在用戶正確接收到后,需返回一個(gè)第二響應(yīng)碼至讀寫(xiě)器,使讀寫(xiě)器端與用戶端能夠相互確認(rèn)并建立起正確有效的通信體系。否則在用戶端需要繼續(xù)等待,讀寫(xiě)器在一定限時(shí)內(nèi)會(huì)重發(fā)第一響應(yīng)碼。但如果用戶端長(zhǎng)時(shí)間未能收到正確數(shù)據(jù),此時(shí)重新進(jìn)行復(fù)位操作。3.2通信“握手” 為保證數(shù)據(jù)通信過(guò)程的正確有效,使讀寫(xiě)器保持較好的通信質(zhì)量,在協(xié)議中規(guī)定對(duì)用戶設(shè)備 與讀寫(xiě)器間建立的通信信道的可靠性進(jìn)行實(shí)時(shí)的校驗(yàn)。即在對(duì)讀寫(xiě)器進(jìn)行復(fù)位啟動(dòng)后,還需要在用戶端與讀寫(xiě)器間進(jìn)行一個(gè)稱為通信“握手”的校驗(yàn)程序,目的在于檢驗(yàn)當(dāng)前通信信道的工作狀態(tài)是否正常。其具體內(nèi)容主要是對(duì)一組預(yù)定義的數(shù)據(jù),在用戶端與讀寫(xiě)器之間進(jìn)行通信傳輸,通過(guò)驗(yàn)證通信結(jié)果是否符合預(yù)設(shè)的數(shù)據(jù)內(nèi)容,校驗(yàn)當(dāng)前通信信道是否正確可靠。通常為用戶發(fā)送第一響應(yīng)碼至讀寫(xiě)器,讀寫(xiě)器正確接收到則返回第二響應(yīng)碼至用戶端,而用戶端若正確接收到第二響應(yīng)碼則繼續(xù)下一步工作,否則等待讀寫(xiě)器端重發(fā)數(shù)據(jù)。但如果在限時(shí)內(nèi)未收到正確的第二響應(yīng)碼數(shù)據(jù)則確認(rèn)為當(dāng)前通信出現(xiàn)異常,并提示系統(tǒng)報(bào)告當(dāng)前錯(cuò)誤情況。3.3指令格式 讀寫(xiě)器的用戶在與讀寫(xiě)器進(jìn)行數(shù)據(jù)通信時(shí),根據(jù)智能卡應(yīng)用規(guī)范,用戶端都應(yīng)當(dāng)遵循一定的 格式組織和創(chuàng)建指令及提供所需的相關(guān)數(shù)據(jù),目前在讀寫(xiě)器的控制與使用協(xié)議中定義并使用了以下的一種指令格式?! ≈噶钣?個(gè)基本字節(jié)組成:字節(jié)1:CLA,指令標(biāo)識(shí)符一;字節(jié)2:INS,指令標(biāo)識(shí)符二;字節(jié)3,4:P1和P2,指令參數(shù);字節(jié)5:LC,數(shù)據(jù)長(zhǎng)度?! ∮脩舳艘罁?jù)這樣格式建立和發(fā)送指令序列至讀寫(xiě)器,其中字節(jié)1和字節(jié)2形成一個(gè)二級(jí)的指令標(biāo)識(shí),說(shuō)明當(dāng)前指令操作碼的含義;字節(jié)3和字節(jié)4提供一個(gè)參數(shù)空間,輔助說(shuō)明指令操作碼;字節(jié)5說(shuō)明當(dāng)前指令操作數(shù)的數(shù)據(jù)長(zhǎng)度,主要是針對(duì)于非定長(zhǎng)數(shù)據(jù)的通信傳輸過(guò)程。3.4操作流程 在用戶實(shí)際使用讀寫(xiě)器操作智能卡的過(guò)程中,絕大部分操作都是在完成一個(gè)由用戶端發(fā)送指令和數(shù)據(jù)至讀寫(xiě)器,由讀寫(xiě)器解釋執(zhí)行并轉(zhuǎn)發(fā)至智能卡,最后由智能卡端返回結(jié)果至讀寫(xiě)器,讀寫(xiě)器最終返回至用戶端的一個(gè)操作過(guò)程。因此也以他作為主要依據(jù)來(lái)規(guī)范相關(guān)的軟件協(xié)議,具體如下所示: 復(fù)位啟動(dòng)讀寫(xiě)器協(xié)議要求中的第一步工作?! ⊥ㄐ拧拔帐帧睘榇_保通信過(guò)程的正確有效,用戶與讀寫(xiě)器進(jìn)行數(shù)據(jù)通信 前都將要先進(jìn)行這一步工作?! “l(fā)送指令用戶向讀寫(xiě)器發(fā)送操作指令時(shí),指令組建必須要符合協(xié)議中的 規(guī)定格式?! “l(fā)送數(shù)據(jù)對(duì)于含有操作數(shù)的指令,在送出指令碼后,還必須將相關(guān)的 數(shù)據(jù)送至讀寫(xiě)器?! 〗邮諣顟B(tài)碼讀寫(xiě)器在接收到并執(zhí)行用戶指令后,會(huì)根據(jù)執(zhí)行結(jié)果的內(nèi)容返回執(zhí)行狀態(tài)碼和結(jié)果數(shù)據(jù)至PC機(jī),由此用戶可得到指令的執(zhí)行結(jié)果?! 〗邮諗?shù)據(jù)如果當(dāng)前用戶指令要求讀寫(xiě)器提供結(jié)果數(shù)據(jù),讀寫(xiě)器在返回執(zhí)行狀態(tài)碼后,需繼續(xù)送結(jié)果數(shù)據(jù)至PC機(jī)。根據(jù)協(xié)議,結(jié)果數(shù)據(jù)的長(zhǎng)度由指令碼中的LC字節(jié)說(shuō)明?! ?4對(duì)智能卡的操作COS命令接口 讀寫(xiě)器作為用戶端與IC卡間的操作平臺(tái),在接受用戶端控制與使用的同時(shí),還有一個(gè)重要的 功能就是實(shí)現(xiàn)對(duì)智能卡的操作。COS命令接口就是對(duì)智能卡操作的前端實(shí)現(xiàn)部分。通常在智能卡應(yīng)用當(dāng)中,智能卡本身都具備一個(gè)COS系統(tǒng),由他協(xié)調(diào)并控制卡上的所有指令和數(shù)據(jù)處理過(guò)程,讀寫(xiě)器必須借助于COS系統(tǒng)才能夠?qū)崿F(xiàn)相應(yīng)的功能。COS命令接口做為讀寫(xiě)器端的CO S數(shù)據(jù)通道直接影響到讀寫(xiě)器對(duì)卡的操作。在這一部分協(xié)議中規(guī)定讀寫(xiě)器向IC卡發(fā)送一組定制的指令數(shù)據(jù),IC卡接收到這組協(xié)議數(shù)據(jù)后,通過(guò)解釋這組指令數(shù)據(jù)的具體含義、形成操作指示,再進(jìn)一步轉(zhuǎn)換為讀、寫(xiě)、比較、認(rèn)證及其他控制操作,然后將操作結(jié)果返回給接口設(shè)備,從而完成一次對(duì)卡的操作過(guò)程。讀寫(xiě)器向卡發(fā)送的具有特定操作含義的數(shù)據(jù)塊就是對(duì)智能卡的操作命令;而從卡返回讀寫(xiě)器的狀態(tài)及數(shù)據(jù)信息即為執(zhí)行結(jié)果。其詳細(xì)過(guò)程如圖4所示。 5結(jié)語(yǔ) 智能卡作為IC卡家族中最重要的成員之一,得到了越來(lái)越廣泛的應(yīng)用,由于其自身的眾多優(yōu)勢(shì),隨著設(shè)計(jì)和生產(chǎn)水平的不斷提高,必將成為未來(lái)IC應(yīng)用方面的主流。而讀寫(xiě)器作為卡與使用者之間的交互平臺(tái),其設(shè)計(jì)與開(kāi)發(fā)直接關(guān)系到智能卡應(yīng)用的整個(gè)過(guò)程。實(shí)踐證明本文中闡述的智能卡讀寫(xiě)器具有良好的性能,特別是在通用性、穩(wěn)定性方面和批數(shù)據(jù)操作中表現(xiàn)突出,具有很好的應(yīng)用前景和應(yīng)用價(jià)值。
本文關(guān)鍵詞:智能卡,讀寫(xiě)器,單片機(jī)
上一篇:基于新型非接觸IC卡T5557讀寫(xiě)器設(shè)計(jì)[ 10-20 ]
下一篇:用PIC 單片機(jī)實(shí)現(xiàn)的IC 卡讀寫(xiě)器[ 10-20 ]