詳細介紹SLE4418/SLE4428 IC卡的操作邏輯,著重說明密碼校驗過程;給出操作流程和的應用示例以及全部的操作源代碼。 隨著國家“金卡工程”的不斷發展,各種IC卡應用方案與系統不斷涌現,涉及到各個領域各個行業與部門,如各地的IC卡預付費表、 零售服務業的汀貨與送化等;而這些系統在各行業的推廣與實施,又進一步推動了IC卡的應用。目前,我國在用的IC卡卡就有1億多,隨著科學技術與經濟的不斷發展,IC卡必將得到更廣泛的應用。 SLE4418/SLE4428卡是西門子公司的產品,價格便宜,使用方便,比較適合于數量較小的應用,是我國使用較為廣泛的一種IC卡。 1 SLE4418/SLE4428 IC卡特點和操作時序分析 1.1 SLE4418/SLE4428 IC卡的基本特征 SLE4418 IC卡共有10248位EEPROM,可逐字節地進行寫操作與刪除操作,每個字節都有具有程序寫保護位。SLE4428 IC除了以上功能外,還帶有程序密碼校驗邏輯(PSC)。由于SLE4418/SLE4428 IC卡內置了高壓產生器,因而只需即可進行操作,簡化了接口電路的設計,可直接由單片機驅動,幾乎不要其它和外接元件。此瞳的基本特點如下: ①具有10248位的EEPROM存儲器; ②以字節為編址單位; ③具有10241位保護存儲器,保護存儲器設置后不可撤消; ④三線串行總線; ⑤可進行10萬次擦寫操作; ⑥數據保存10年; ⑦卡內具有2個字節的PSC程序加密位,數據僅在密碼檢驗正確后,方可進行寫操作。 1.2 操作時序分析 SLE4418/SLE4428 IC卡通過三線串行總線性與芯片接口進行信息交換。數據在程序控制器的統一協議下,進行數據序列轉換與安全邏輯校驗。SLE4418/SLE4428 IC卡的引腳配置及功能說明如圖1和表1。 表1 IC卡引腳功能 引腳名稱 功 能 VCC 工作電壓 RST 復位端 CLK 時鐘 N.C 空 GND 地 I/O 數據線 (1)復位與復位應答 IC卡在上電時,芯片進入到上電復位狀態(POR),POR由一個復位操作(Reset)終止。當RST引腳由“0”狀態變換變換為“1”狀態時結束。復位時,將終止所有當前的操作命令。 上電復位(POR)后,地在寫數據或刪除數據前,必須先進行一次讀操作。芯片復位時,地址計數器偏移置被設置為“0”,第一個數據位出現在數據線(I/O)上中,如圖2所示。 (2)命令輸入邏輯 SLE4418/SLE4428共有5條控制命令,SLE4428另有3條密碼操作命令,如表2所列。 表2 SLE4418/SLE4428IC卡操作命令 字節1 字節2 字節3 操作內容 S0 S1 S2 S3 S4 S5 A8 A9 A0~A7 D0~D7 1 0 0 0 1 1 地址高位 地址低位 輸入數據 帶保護位寫與刪除 1 1 0 0 1 1 輸入數據 不帶保護寫或刪除 0 0 0 0 1 1 比較數據 帶信號位寫(校驗) 0 0 1 1 1 1 忽略 帶保護位數(讀9位) 0 1 1 1 0 0 忽略 (不帶保護位讀(讀8位) 0 1 0 0 1 1 1 1 253 位掩碼 寫錯誤計數器 1 0 1 1 0 0 1 1 254 PSC字節1 校驗第一個PSC字節 1 0 1 1 0 0 1 1 255 PSC字節2 校驗第二個PSC字節 由表2可看出,每條命令由6位控制位,10位地址位和1個字節的數據組成。進行寫數據時,數據字節即是所要寫入的數據,可見SLE4418/SLE4428不能進行一次性多字節的數據,可見SLE4418/SLE4428不能進行一次性多字節的寫操作;讀數據時,數據忽略不計,一次性可讀出多字節。當RST由“0”狀態變為“1”狀態,CLK由“0”狀態變為“1”狀態時命令輸入邏輯啟動。命令輸入完成后,設置RST為“0”狀態,時序如圖3所示。 (3)寫操作/刪除操作邏輯 對IC卡進行寫操作,意味著數據位由“1”狀態變為“0”狀態;刪除操作意消味著數據位由“0”狀態變為“1”狀態。SLE4418/SLE4428 IC卡在進行寫操作與刪除操作時,時鐘(CLK)必須進行延續。一般來說,單獨的寫操作或者單獨的刪除操作,數據輸入后,時鐘須延續103個脈沖,數據刪除后立即進行寫操作則需要延續203個時鐘脈沖。SLE4418/SLE4428 IC卡具有三種擦寫操作,即刪除操作后立即寫操作、單獨的寫操作與單獨的刪除操作三種方式。如圖4所示。寫保護位時,只須將數據重寫一次,當第二次寫入的數據與前一次寫入的數據相同時,設置保護位。保護位一旦設置便不能更改。 (4)讀操作邏輯 按表2配置好讀命令后,輸入命令即啟動讀操作。當CLK為“0”狀態變為“1”狀態時,第一位數據出現在I/O數據線上,此后每個CLK脈沖即接收1位數據。接收8位或9位數據(帶保護位時,第9位為保護位)時即為1個字節。每讀完1個字節,IC卡地址計數器偏移量自動加1。當RST為“0”狀態轉變為“1”狀態時,讀操作結束。讀時序邏輯如圖5所示。 (5)密碼校驗邏輯 SLE4428 IC卡具有2個字節的密碼保護字節(地址偏移量分別為1022、1023)以及1個錯誤計數器(地址偏移量為1021)。如果沒有進行密碼校驗,則SLE4428 IC卡只能讀出,不能寫入,也不能讀取密碼字節。在沒有通過密碼校驗即讀取密碼字節,將返回“00”.進行密碼校驗時,必須按以下步驟進行。 *改變一個沒有寫入的位(沒有寫入的位,其當前狀態為“1”,改變一個沒有寫入的位即使期由“1”狀態變為“0”狀態); *寫入第一位密碼; *寫入第二位密碼; *刪除錯誤計數器。 密碼校驗的時序邏輯如圖6所示。(寫錯誤計數器請參看寫時序邏輯)。 對于密碼校驗,雖然操作流程說得很清楚,但實際使用時如何實現,還是有一些技巧,因而同時列出圖7所示的操作流程,以供參考。 2 SLE4418/SLE4428在予付費系統中的應用 預付費系統最先是為了解決電能表收費難而提出的一種收費管理方式,在得到用戶的認可后,逐步在水、氣行業得到推廣,并有在其它行業得到應用的趨勢。不管其行業如何,預付費管理系統,歸根到底是收費問題,因而管理與操作方式上具有一般性。下面以飛利浦的87LPC764處理器芯片為例進行介紹。 圖8 預付費系統基本電路原理如圖8所示。 圖8中,J1為IC卡卡座;U1為87LPC764單片機;U2為串行存儲器,用于保存現場數據;SIGN為信號輸入;BIT、STAGE、DATA為顯示輸出線,以串行的形式驅動LED顯示器 Power為顯示輸出線,以串行的形式驅動LED顯示器;Power為電源監控,以保護電源電壓切斷時導至的數據安全問題;Ctrl為控制輸出線,用于控制受器件。主程序流程如圖9所示。 |