FR 100 型IC 卡讀寫器的研制
文章出處:http://www.fang1.net 作者:葉樹林, 華蕊, 劉軍, 羅中良 人氣: 發(fā)表時間:2011年10月15日
IC 卡讀寫器是聯(lián)接IC 卡和應用系統(tǒng)之間的信息橋梁, 是IC 卡應用中至關重要的一個環(huán)節(jié)。作為IC 卡應用系統(tǒng)中的一個關鍵性基礎設備, IC 卡讀寫器的性能對IC 卡應用系統(tǒng)的開發(fā)進程及整體使用性能具有重要的影響。隨著IC 卡應用范圍的不斷擴大及應用水平的不斷提高, 對IC 卡讀寫器提出的要求也越來越高。因此開發(fā)出具有良好使用性能的IC卡讀寫器對IC 卡技術的推廣應用具有重要的意義。
早期的IC 卡讀寫器一般只是簡單地將上位機的指令數(shù)據(jù)轉(zhuǎn)化成IC 卡可以接受的符合ISO 7816- 3 標準的數(shù)據(jù)格式, 不僅功能單一, 而且往往只能對一種或少數(shù)幾種卡進行讀寫。隨著IC 卡技術水平和應用水平的發(fā)展, 對IC 卡讀寫設備的性能提出了越來越高的要求, 雖然經(jīng)過多年的發(fā)展, IC 卡讀寫器的性能有了很大的提高, 但是由于技術保密及為了推銷IC 卡所采取的保護策略等原因, 目前市場上具有良好兼容性和開放性的IC 卡讀寫器還較少。
目前, IC 卡可以分為接觸式和非接觸式兩大類, 其中以接觸式IC 卡的應用最為普及。本文研制的F100 型IC 卡讀寫器以接觸式IC 卡為讀寫對象, 該讀寫器采用89C51 單片機控制, 可以通過軟件來自動識別當前IC 卡的類型, 并根據(jù)卡的類型來產(chǎn)生不同讀寫控制信號。
1 IC 卡的讀寫機制
雖然IC 卡的種類繁多, 不同的IC 卡在功能、觸點定義、讀寫機制方面都存在一定的差異, 但它們都共同遵守ISO 7816- 1, 2, 3, 4 標準協(xié)議。與IC 卡讀寫機制有直接關系的是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ī)定接口設備( IC 卡讀寫器) 和IC 卡之間的數(shù)據(jù)交換按以下操作步驟進行:
( 1) 判斷卡是否插入; (2) 接口設備“激活”觸點; (3) 卡的復位(Reset) ; (4) 卡對復位的應答(A n sw er To Reset) ; (5) 在卡與接口設備之間連續(xù)進行信息交換; (6) 接口設備" 釋放"觸點;
接口設備“激活”觸點由以下操作順序?qū)崿F(xiàn);
(1) RST 處于L 狀態(tài); (2) V cc 供電; (3) 接口設備的“激活”觸點;(3)卡的復位(reset);(4) Vpp 上升為空閑狀態(tài); (5) RST 處于H 狀態(tài)(同步傳輸) ; (6) 提供穩(wěn)定的CL K;
接口設備“釋放”觸點由以下操作順序?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卡)。同步卡和異步卡在卡的復位、卡對復位的應答以及卡與接口設備之間信息交換的方式等方面存在很大的差異。表2 簡述了兩種卡的讀寫機制。
過程同步卡異步卡
卡的復位
接口設備“激活”觸點后, RST信號上升, 要求RST 維持在狀態(tài)H至少50Ls。在RST 上升沿之后的5Ls 后, 加上時鐘脈沖CL K, CL K處于狀態(tài)H 的時間可在10~ 50Ls之間, 當RST 處于狀態(tài)H 時, 不允許加上1 個以上的時鐘脈沖。CL K與RST 下降沿之間的時間間隔不小于5Ls。
接口設備“激活”觸點后的200時鐘周期內(nèi), I/O 線將被置于狀態(tài)Z (傳號)。使用低電平復位的卡, 是依靠RST 維持在狀態(tài)L 來進行復位的。RST 處于狀態(tài)L 至少40000個時鐘周期, 當RST 從狀態(tài)L 變化到狀態(tài)H 之后的400~ 40000 個時鐘周期之間, I/O 線上的復位應答將開始
過程同步卡異步卡
卡對復位的應答
復位過程之后, 時鐘脈沖控制輸出信息, 在RST 下降沿后的10~100Ls 產(chǎn)生第一個時鐘脈沖, 從卡中讀取數(shù)據(jù)位??ǖ膹臀粦鹦畔粋€從卡發(fā)送到接口設備的標頭, 標頭的長度固定為32 位, 并由兩個8 位字段字段H1 和H2 開始。標頭信息給出了該卡所采用的協(xié)議類型及協(xié)議參數(shù)等。復位應答信號以字符幀進行傳送。每個字符幀由10 位組成, 1 位起始位, 8 位數(shù)據(jù)位, 1 位偶校驗位。復位應答信息長度與卡的種類有關,但不超過32 個字符。應答信息按以下順序傳送: 初始字符TS、格式字符T 0、接口字符、歷史字符以及校驗字符。應答信息給出了該卡所采用的協(xié)議類型及有關參數(shù)等。
信息交換
按照標頭信息給出的協(xié)議類型和參數(shù), 在同步脈沖CL K 的控制下,卡與接口設備之間按位進行信息交換。
按照復位應答信息所給出的協(xié)議類型和參數(shù), 卡與接口設備之間以一定的波特率進行異步數(shù)據(jù)通訊。
2 讀寫器的硬件電路設計
FR100 型IC 卡讀寫器的硬件結(jié)構(gòu)框圖如圖1 所示。它由89C51 單片機、RS232 電平轉(zhuǎn)換電路、IC 卡讀寫控制電路、EEPROM、設置開關等組成。89C51 單片機是整個讀寫器的控制中心, 它一方面通過RS232 串行接口接收上位機的指令, 并對指令進行解釋, 然后通過IC卡讀寫控制電路對IC 卡進行相應的操作, 并將操作結(jié)果通過RS232 串行接口傳送給上位機。
IC 卡讀寫控制電路由卡的插入?退出識別、電源供給、時鐘信號產(chǎn)生、信號隔離與驅(qū)動等電路組成, 它的功能是提供讀寫IC 卡所需的各種狀態(tài)和控制信號。由于不同類型的IC 卡在讀寫機制上存在著一定的差異, 為了使研制的FR100 型IC 卡讀寫器具有較好的兼容性,能夠正確讀寫各類存儲卡、邏輯加密卡和微處理器卡(CPU 卡) 等目前常用的接觸式IC 卡,讀寫控制電路各種控制信號的產(chǎn)生都受89C51 單片機的I/O 口控制, 因此可以通過軟件編程來產(chǎn)生讀寫不同種類的IC 卡所需的讀寫控制信號。例如, 采用圖2 所示的時鐘信號發(fā)生電路, 當89C51 單片機的P1. 0、P1. 1 口輸出高電平時, 該電路輸出頻率為3. 5712MHz 的穩(wěn)定時鐘信號, 可以滿足異步卡對CL K 信號的要求; 而當P1. 0 口輸出低電平時, 電路的輸出與P1. 1 口的狀態(tài)反相, 若通過軟件編程在P1. 1 口輸出一個同步脈沖, 則可以滿足同步卡
對CL K 信號的要求。
EEPROM 是用來存儲讀寫器的系統(tǒng)參數(shù)及下載用戶程序的。由于用89C51 的RD 信號和PSEN 信號相與后作為EEPROM 存儲器的RD 信號, 因此EEPROM 不僅可以存儲系統(tǒng)的一些數(shù)據(jù), 還可以用來存儲用戶程序代碼。設置開關是用來設置讀寫器工作方式的, 當開關處于ON 狀態(tài)時, EEPROM 的WR 線與89C51 的WR 線連通, 讀寫器工作在聯(lián)機工作方式, 此時用戶可以通過RS232 串行口來控制讀寫器的操作, 也可以下載用戶程序; 當開關處于O FF 狀態(tài)時, 讀寫器處于脫機工作方式, 此時讀寫器執(zhí)行用戶下載到EEPROM 中的程序, 讀寫器的操作完全由用戶程序決定。而且此時EEPROM 的WR 線與89C51 的WR線斷開, 可以防止EEPROM 中的用戶程序被非法修改。該讀寫器的用戶程序下載功能, 使其二次開發(fā)能力大大增強, 提高了讀寫器的開放性。
3 讀寫器的軟件設計
FR100 型IC 卡讀寫器的軟件在設計上采用了模塊化的結(jié)構(gòu), 主要包括IC 卡類型判別模塊、讀寫控制模塊、與上位機的通訊接口模塊等。
IC 卡類型判別模塊是以IC 卡對復位的應答信息(A TR ) 為依據(jù)來判斷當前插入的IC卡的類型。從前面的分析可知, IC 卡在復位之后都要輸出A TR, 而且不同的IC 卡的A TR也是不同的,A TR 可以正確區(qū)分各類IC 卡。IC 卡類型判別程序的流程圖如圖3 所示。由于IC 卡有同步卡和異步卡之分, 因此在程序中首先以異步卡的操作方式對卡進行復位操作并讀取A TR, 如果不能正確讀取A TR, 再以同步卡的操作方式對卡進行復位操作并讀取A TR , 如果兩種方式都不能正確讀取A TR , 則表明該卡已經(jīng)損壞。圖3 中的RTNCODE 是返回代碼, 它等于0 表示讀寫器中沒有卡或卡沒有插到位, 等于1 表示卡已損壞, 等于11 表示該卡是異步卡, 等于12 表示該卡是同步卡; 當返回代碼為11 和12 時, 存儲在Buffer 中的A TR 可對卡的類型進行進一步的區(qū)分。
讀寫控制模塊根據(jù)調(diào)用IC 卡類型判別模塊所返回的RTNCODE 和Buffer 內(nèi)容檢索出該卡所遵循的讀寫方式和數(shù)據(jù)協(xié)議, 并依據(jù)此協(xié)議對讀寫控制電路的各個信號進行控制和檢測, 完成IC 卡與讀寫器之間的數(shù)據(jù)交換。對于同步卡, 讀寫操作一般按下面的三個基本操作步驟進行, 即: 復位、數(shù)據(jù)字段的定位、讀(或?qū)? 操作。每一操作步驟中的RST、CL K、I/O 、
圖3 IC 卡類型判別程序的流程圖
PGM 等信號的控制在該卡所遵循的操作協(xié)議中都有明確的規(guī)定。對于異步卡的讀寫操作實際上是以異步串行通訊的方式在接口設備與卡之間進行命令的傳遞與應答的過程。接口設備與卡之間的命令結(jié)構(gòu)和應答結(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) 集及相應的參數(shù), 通過檢索即可得到。
與上位機的通訊接口模塊的功能是通過RS232 串行口接受上位機的命令, 將該命令轉(zhuǎn)換成對IC 卡的操作, 并將執(zhí)行結(jié)果傳回給上位機。該模塊實際上是一命令解釋執(zhí)行程序, 與IC 卡的具體操作無關, 受篇幅所限, 在此不再贅述。
4 結(jié)束語
本文FR 100 型IC 卡讀寫器具有良好的兼容性、開放性, 通過對法國Sch lumberger 公司的payf lex 卡(CPU 卡) 和美國A TM EL 公司的A T 88SC102 卡(邏輯加密卡) 的讀寫試驗表明, 該讀寫器對不同類型的IC 卡能夠自動識別和正確讀寫, 具有一定的推廣價值。
(文/佛山科學技術學院機電分院, 葉樹林, 華 蕊, 劉 軍, 羅中良)