物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

FR 100 型IC 卡讀寫器的研制

作者:葉樹林, 華蕊, 劉軍, 羅中良
來源:中國一卡通網(wǎng)
日期:2009-10-21 08:42:01
摘要:在對各種IC 卡的讀寫機制進行深入分析的基礎(chǔ)上, 介紹了IC 卡的觸點定義及讀寫操作的基本步驟, 并著重從提高讀寫器的兼容性和開放性兩方面闡述了FR100 型IC 卡讀寫器硬件設(shè)計和軟件設(shè)計的基本思路和方法。

    IC 卡讀寫器是聯(lián)接IC 卡和應(yīng)用系統(tǒng)之間的信息橋梁, 是IC 卡應(yīng)用中至關(guān)重要的一個環(huán)節(jié)。作為IC 卡應(yīng)用系統(tǒng)中的一個關(guān)鍵性基礎(chǔ)設(shè)備, IC 卡讀寫器的性能對IC 卡應(yīng)用系統(tǒng)的開發(fā)進程及整體使用性能具有重要的影響。隨著IC 卡應(yīng)用范圍的不斷擴大及應(yīng)用水平的不斷提高, 對IC 卡讀寫器提出的要求也越來越高。因此開發(fā)出具有良好使用性能的IC卡讀寫器對IC 卡技術(shù)的推廣應(yīng)用具有重要的意義。

    早期的IC 卡讀寫器一般只是簡單地將上位機的指令數(shù)據(jù)轉(zhuǎn)化成IC 卡可以接受的符合ISO 7816- 3 標(biāo)準(zhǔn)的數(shù)據(jù)格式, 不僅功能單一, 而且往往只能對一種或少數(shù)幾種卡進行讀寫。隨著IC 卡技術(shù)水平和應(yīng)用水平的發(fā)展, 對IC 卡讀寫設(shè)備的性能提出了越來越高的要求, 雖然經(jīng)過多年的發(fā)展, IC 卡讀寫器的性能有了很大的提高, 但是由于技術(shù)保密及為了推銷IC 卡所采取的保護策略等原因, 目前市場上具有良好兼容性和開放性的IC 卡讀寫器還較少。

    目前, IC 卡可以分為接觸式和非接觸式兩大類, 其中以接觸式IC 卡的應(yīng)用最為普及。本文研制的F100 型IC 卡讀寫器以接觸式IC 卡為讀寫對象, 該讀寫器采用89C51 單片機控制, 可以通過軟件來自動識別當(dāng)前IC 卡的類型, 并根據(jù)卡的類型來產(chǎn)生不同讀寫控制信號。

    1 IC 卡的讀寫機制

    雖然IC 卡的種類繁多, 不同的IC 卡在功能、觸點定義、讀寫機制方面都存在一定的差異, 但它們都共同遵守ISO 7816- 1, 2, 3, 4 標(biāo)準(zhǔn)協(xié)議。與IC 卡讀寫機制有直接關(guān)系的是ISO 7816- 2, 3 協(xié)議。其中ISO 7816- 2 協(xié)議規(guī)定了IC 卡各觸點的尺寸、位置和功能, 表1 列出了該協(xié)議對IC 卡8 個觸點功能的定義。ISO 7816- 3 協(xié)議則規(guī)定了IC 卡的傳輸協(xié)議,該協(xié)議對IC 卡的讀寫機制作了詳盡的描述, 它規(guī)定接口設(shè)備( IC 卡讀寫器) 和IC 卡之間的數(shù)據(jù)交換按以下操作步驟進行: 

    ( 1) 判斷卡是否插入; (2) 接口設(shè)備“激活”觸點; (3) 卡的復(fù)位(Reset) ; (4) 卡對復(fù)位的應(yīng)答(A n sw er To Reset) ; (5) 在卡與接口設(shè)備之間連續(xù)進行信息交換; (6) 接口設(shè)備" 釋放"觸點;

    接口設(shè)備“激活”觸點由以下操作順序?qū)崿F(xiàn);

    (1) RST 處于L 狀態(tài); (2) V cc 供電; (3) 接口設(shè)備的“激活”觸點;(3)卡的復(fù)位(reset);(4) Vpp 上升為空閑狀態(tài); (5) RST 處于H 狀態(tài)(同步傳輸) ; (6) 提供穩(wěn)定的CL K;

    接口設(shè)備“釋放”觸點由以下操作順序?qū)崿F(xiàn):

    (1) RST 為狀態(tài)L (低電平) ; (2) CL K 為狀態(tài)L (低電平) ; (3) Vpp 不起作用; (4) I/O為狀態(tài)A (空號) ; (5) V cc 不起作用;

    從讀寫機制來看, IC 卡可以分為同步卡(如存儲卡、邏輯加密卡) 和異步卡(如CPU卡)。同步卡和異步卡在卡的復(fù)位、卡對復(fù)位的應(yīng)答以及卡與接口設(shè)備之間信息交換的方式等方面存在很大的差異。表2 簡述了兩種卡的讀寫機制。 

    過程同步卡異步卡

    卡的復(fù)位

    接口設(shè)備“激活”觸點后, RST信號上升, 要求RST 維持在狀態(tài)H至少50Ls。在RST 上升沿之后的5Ls 后, 加上時鐘脈沖CL K, CL K處于狀態(tài)H 的時間可在10~ 50Ls之間, 當(dāng)RST 處于狀態(tài)H 時, 不允許加上1 個以上的時鐘脈沖。CL K與RST 下降沿之間的時間間隔不小于5Ls。

    接口設(shè)備“激活”觸點后的200時鐘周期內(nèi), I/O 線將被置于狀態(tài)Z (傳號)。使用低電平復(fù)位的卡, 是依靠RST 維持在狀態(tài)L 來進行復(fù)位的。RST 處于狀態(tài)L 至少40000個時鐘周期, 當(dāng)RST 從狀態(tài)L 變化到狀態(tài)H 之后的400~ 40000 個時鐘周期之間, I/O 線上的復(fù)位應(yīng)答將開始 

    過程同步卡異步卡

    卡對復(fù)位的應(yīng)答

    復(fù)位過程之后, 時鐘脈沖控制輸出信息, 在RST 下降沿后的10~100Ls 產(chǎn)生第一個時鐘脈沖, 從卡中讀取數(shù)據(jù)位。卡的復(fù)位應(yīng)答信息包含一個從卡發(fā)送到接口設(shè)備的標(biāo)頭, 標(biāo)頭的長度固定為32 位, 并由兩個8 位字段字段H1 和H2 開始。標(biāo)頭信息給出了該卡所采用的協(xié)議類型及協(xié)議參數(shù)等。復(fù)位應(yīng)答信號以字符幀進行傳送。每個字符幀由10 位組成, 1 位起始位, 8 位數(shù)據(jù)位, 1 位偶校驗位。復(fù)位應(yīng)答信息長度與卡的種類有關(guān),但不超過32 個字符。應(yīng)答信息按以下順序傳送: 初始字符TS、格式字符T 0、接口字符、歷史字符以及校驗字符。應(yīng)答信息給出了該卡所采用的協(xié)議類型及有關(guān)參數(shù)等。

    信息交換

    按照標(biāo)頭信息給出的協(xié)議類型和參數(shù), 在同步脈沖CL K 的控制下,卡與接口設(shè)備之間按位進行信息交換。

    按照復(fù)位應(yīng)答信息所給出的協(xié)議類型和參數(shù), 卡與接口設(shè)備之間以一定的波特率進行異步數(shù)據(jù)通訊。

    2 讀寫器的硬件電路設(shè)計

    FR100 型IC 卡讀寫器的硬件結(jié)構(gòu)框圖如圖1 所示。它由89C51 單片機、RS232 電平轉(zhuǎn)換電路、IC 卡讀寫控制電路、EEPROM、設(shè)置開關(guān)等組成。89C51 單片機是整個讀寫器的控制中心, 它一方面通過RS232 串行接口接收上位機的指令, 并對指令進行解釋, 然后通過IC卡讀寫控制電路對IC 卡進行相應(yīng)的操作, 并將操作結(jié)果通過RS232 串行接口傳送給上位機。 

FR100 型IC 卡讀寫器的硬件構(gòu)成框圖

    IC 卡讀寫控制電路由卡的插入?退出識別、電源供給、時鐘信號產(chǎn)生、信號隔離與驅(qū)動等電路組成, 它的功能是提供讀寫IC 卡所需的各種狀態(tài)和控制信號。由于不同類型的IC 卡在讀寫機制上存在著一定的差異, 為了使研制的FR100 型IC 卡讀寫器具有較好的兼容性,能夠正確讀寫各類存儲卡、邏輯加密卡和微處理器卡(CPU 卡) 等目前常用的接觸式IC 卡,讀寫控制電路各種控制信號的產(chǎn)生都受89C51 單片機的I/O 口控制, 因此可以通過軟件編程來產(chǎn)生讀寫不同種類的IC 卡所需的讀寫控制信號。例如, 采用圖2 所示的時鐘信號發(fā)生電路, 當(dāng)89C51 單片機的P1. 0、P1. 1 口輸出高電平時, 該電路輸出頻率為3. 5712MHz 的穩(wěn)定時鐘信號, 可以滿足異步卡對CL K 信號的要求; 而當(dāng)P1. 0 口輸出低電平時, 電路的輸出與P1. 1 口的狀態(tài)反相, 若通過軟件編程在P1. 1 口輸出一個同步脈沖, 則可以滿足同步卡 

時鐘信號發(fā)生電路原理圖

    對CL K 信號的要求。

    EEPROM 是用來存儲讀寫器的系統(tǒng)參數(shù)及下載用戶程序的。由于用89C51 的RD 信號和PSEN 信號相與后作為EEPROM 存儲器的RD 信號, 因此EEPROM 不僅可以存儲系統(tǒng)的一些數(shù)據(jù), 還可以用來存儲用戶程序代碼。設(shè)置開關(guān)是用來設(shè)置讀寫器工作方式的, 當(dāng)開關(guān)處于ON 狀態(tài)時, EEPROM 的WR 線與89C51 的WR 線連通, 讀寫器工作在聯(lián)機工作方式, 此時用戶可以通過RS232 串行口來控制讀寫器的操作, 也可以下載用戶程序; 當(dāng)開關(guān)處于O FF 狀態(tài)時, 讀寫器處于脫機工作方式, 此時讀寫器執(zhí)行用戶下載到EEPROM 中的程序, 讀寫器的操作完全由用戶程序決定。而且此時EEPROM 的WR 線與89C51 的WR線斷開, 可以防止EEPROM 中的用戶程序被非法修改。該讀寫器的用戶程序下載功能, 使其二次開發(fā)能力大大增強, 提高了讀寫器的開放性。

    3 讀寫器的軟件設(shè)計

    FR100 型IC 卡讀寫器的軟件在設(shè)計上采用了模塊化的結(jié)構(gòu), 主要包括IC 卡類型判別模塊、讀寫控制模塊、與上位機的通訊接口模塊等。

    IC 卡類型判別模塊是以IC 卡對復(fù)位的應(yīng)答信息(A TR ) 為依據(jù)來判斷當(dāng)前插入的IC卡的類型。從前面的分析可知, IC 卡在復(fù)位之后都要輸出A TR, 而且不同的IC 卡的A TR也是不同的,A TR 可以正確區(qū)分各類IC 卡。IC 卡類型判別程序的流程圖如圖3 所示。由于IC 卡有同步卡和異步卡之分, 因此在程序中首先以異步卡的操作方式對卡進行復(fù)位操作并讀取A TR, 如果不能正確讀取A TR, 再以同步卡的操作方式對卡進行復(fù)位操作并讀取A TR , 如果兩種方式都不能正確讀取A TR , 則表明該卡已經(jīng)損壞。圖3 中的RTNCODE 是返回代碼, 它等于0 表示讀寫器中沒有卡或卡沒有插到位, 等于1 表示卡已損壞, 等于11 表示該卡是異步卡, 等于12 表示該卡是同步卡; 當(dāng)返回代碼為11 和12 時, 存儲在Buffer 中的A TR 可對卡的類型進行進一步的區(qū)分。
    讀寫控制模塊根據(jù)調(diào)用IC 卡類型判別模塊所返回的RTNCODE 和Buffer 內(nèi)容檢索出該卡所遵循的讀寫方式和數(shù)據(jù)協(xié)議, 并依據(jù)此協(xié)議對讀寫控制電路的各個信號進行控制和檢測, 完成IC 卡與讀寫器之間的數(shù)據(jù)交換。對于同步卡, 讀寫操作一般按下面的三個基本操作步驟進行, 即: 復(fù)位、數(shù)據(jù)字段的定位、讀(或?qū)? 操作。每一操作步驟中的RST、CL K、I/O 、 



圖3 IC 卡類型判別程序的流程圖

    PGM 等信號的控制在該卡所遵循的操作協(xié)議中都有明確的規(guī)定。對于異步卡的讀寫操作實際上是以異步串行通訊的方式在接口設(shè)備與卡之間進行命令的傳遞與應(yīng)答的過程。接口設(shè)備與卡之間的命令結(jié)構(gòu)和應(yīng)答結(jié)構(gòu)的一般形式為: 

    其中, CLA 是指令類別, IN S 是指令代碼, P1, P2 是命令參數(shù), P3 是編碼數(shù)據(jù)字節(jié)(D1?Dn) 的數(shù)量n, 而SW 1, SW 2 是卡返回的狀態(tài)字節(jié)。在實際程序中, 不同的異步卡有不同的指令( IN S) 集及相應(yīng)的參數(shù), 通過檢索即可得到。

    與上位機的通訊接口模塊的功能是通過RS232 串行口接受上位機的命令, 將該命令轉(zhuǎn)換成對IC 卡的操作, 并將執(zhí)行結(jié)果傳回給上位機。該模塊實際上是一命令解釋執(zhí)行程序, 與IC 卡的具體操作無關(guān), 受篇幅所限, 在此不再贅述。

    4 結(jié)束語

    本文FR 100 型IC 卡讀寫器具有良好的兼容性、開放性, 通過對法國Sch lumberger 公司的payf lex 卡(CPU 卡) 和美國A TM EL 公司的A T 88SC102 卡(邏輯加密卡) 的讀寫試驗表明, 該讀寫器對不同類型的IC 卡能夠自動識別和正確讀寫, 具有一定的推廣價值。

    (文/佛山科學(xué)技術(shù)學(xué)院機電分院, 葉樹林, 華 蕊, 劉 軍, 羅中良)