接觸式IC卡讀寫實驗
一. 實驗目的
了解接觸式IC 卡的知識,學會如何根據時序邏輯圖編寫實用程序。
二. 實驗設備及器件
IBM PC 機 一臺
DP-51PROC 單片機綜合仿真實驗儀 一臺
三. 實驗內容
根據IC 卡的讀寫時序圖編寫程序,實現IC 卡(SLE4442)的讀寫。
四. 實驗要求
根據IC 卡的時序圖編寫51 單片機程序讀寫邏輯加密IC 卡(SLE4442)讀寫程序。
五、實驗線路與實驗原理
接觸式IC 卡的觸點定義遵循ISO7816規定, IC 卡8 個觸點分布位置如圖3.23
所示,對應著DP-51PROC 單片機綜合仿真實驗儀“D8IC 卡” 區IC 卡座上方的引線。
本實驗使用的是SLE4442卡, SLE4442 的觸點安排見圖3.24。
圖3.24 IC 卡觸點分布圖 圖3.25 SLE4442 的觸點安排
本實驗SLE4442 卡與單片機的引腳連線關系見表3.4。
表3.4 SLE4442 與單片機引腳連線
單片機 實驗儀板上對應引線 SLE4442 引腳
P1.0 TP1 I/O
P1.1 TP4 CLK
P1.2 TP3 RST
下面介紹SLE4442 的有關知識
5.1 概述
SLE4442 是德國西門子(SIMENS)公司設計的邏輯加密存儲卡。它具有2K 位的存儲
容量和完全獨立的可編程代碼存儲器(PSC)。內部電壓提升電路保證了芯片能夠以單+5V
電壓供電,較大的存儲容量能夠滿足通常應用領域的各種需要。因此是目前國內應用較多的一種IC 卡芯片。芯片采用多存儲器結構,2 線連接協議(串行接口滿足ISO7816 同步傳送
協議),NMOS 工藝技術,每字節的擦除/寫入編程時間為2.5ms。存儲器具有至少10000
次的擦寫周期,數據保持時間至少10 年。
SLE4442 IC 卡主要包括三個存儲器 :
(1)256x8 位EEPROM 型主存儲器。地址0~31 為保護數據區,該區數據讀出不受
限制,寫入受保護存儲內部數據狀態的限制。當保護存儲器中第N 位(N=0~31)為1 時,
對應主存儲器中第N 個字節允許進行擦除和寫入操作。地址32~255 后223 字節為應用
數據區,數據讀出不受限制,擦除和寫入受加密存儲器數據校驗結果的影響。這種加密校驗
的控制是對整個主存儲器實施的(即包括保護數據區和應用數據區)。
(2)32 x1 位PROM 型保護存儲器。一次性編程以保護主存儲器保護數據區,防止
一些固定的標識參數被改動。保護存儲器同樣受加密存儲器數據校驗結果的影響。
(3)4x8 位EEPROM 型加密存儲器。第0 字節為密碼輸入錯誤計數器(EC)。EC 的
有效位 是低三位,芯片初始化時設置成“111”。這一字節是可讀的。EC 的1,2,3 字節
為參照字存儲區。這3 個字節的內容作為一個整體被稱為可編程加密代碼(PSC)。其讀出,
寫入和擦除均受自身“比較”操作結果的控制。
圖3.26 SLE4442卡的內部結構圖
5.2 傳送協議
(1) 復位和復位響應
圖3.27 復位時序圖
復位和復位響應是根據ISO7816-3 標準來進行的。在操作期間的任意時候都可以復
位。開始,地址計數器隨一個時鐘脈沖而被設置為零。當RST 線從高狀態(H)置到低狀態
(L)時,第一個數據位(LSB)的內容被送到I/O 上。若連續輸入32 個時鐘脈沖,主存儲器中
的前四個字節單元中的內容被讀出。在第33 個脈沖的下降沿,I/O 線被置成高狀態而關閉。
(2)命令模式
復位響應以后,芯片等待著命令。每條命令都以一個“啟動狀態”開始。整個命令包括
3 個字節。隨后緊跟著一個附加脈沖并用一個“停止狀態”來結束操作。
啟動狀態:在CLK 為高狀態(H 狀態)期間,I/O 為下降沿時為啟動狀態。
停止狀態:在CLK 為高狀態(H 狀態)期間,I/O 為上升沿時為停止狀態。
在接受一個命令之后,有兩種可能的模式:輸出數據模式(即讀數據)和處理數據模式。
圖3.28 命令模式的時序圖
(3) 輸出數據模式
這種模式是將IC 卡芯片中的數據傳送個外部設備接口(IFD)的一種操作。
圖3.29 輸出數據模式的時序圖
在第一個CLK 脈沖的下降沿之后,I/O 線上的第一位數據變為有效。隨后每增加一個
時鐘脈沖,芯片內部的一位數據被送到I/O 線上。 數據的發送從每個字節的最低位(LSB)
開始。當所需要的最后一個數據送出以后,需要在附加一個時鐘脈沖來把I/O 置成高狀態,
以便接受新的命令。在輸出數據期間,任何“啟動狀態”和“停止狀態”均被屏蔽掉。
(4)處理數據模式
這種模式是對IC 芯片作內部處理。
圖3.30 處理模式的時序圖
芯片在第一個脈沖的下降沿將I/O 線從高狀態拉到低狀態并開始處理。此后芯片在內
部連續計時計數,直到低n 個時鐘脈沖之后的附加一個時鐘脈沖的下降沿I/O 線再次置高,
完成芯片的處理過程。在整個處理過程中I/O 線被鎖定成低狀態。
5.3 SLE4442 卡的應用
1. 芯片的復位方式
(1) 外部復位:SLE4442 時基于同步復位響應的傳送協議。芯片的復位時序如前述。
(2) 加電復位:在把操作電壓連接到Vcc 段之后,芯片內部進行復位操作。I/O 線被
置為高狀態。必須在對任意地址進行讀操作或做一個復位響應操作之后才可以進行數據交
換。
(3) 中止:在CLK 為低狀態期間,如果RST 置為高狀態,則任何操作均無效。I/O 線
被鎖定到高狀態。需要一個最小維持時間tres=5Us 之后,芯片才能接受新的復位,中止
狀態的時序關系如圖3.31。中止狀態之后,芯片又準備下一個操作。
圖3.31 中止時序圖
芯片的操作命令
命令格式:
(1) 每條命令包含三個字節,其排列順序如下:
表3.5 命令格式
(2) SLE4442 芯片具有七種命令,其格式和功能見表3.6。
注意: 每個字節來說總是從最低LSB 開始讀出。寫入時首先傳送的也是字節的最低為
(LSB)。對保護存儲器進行修改時,輸入數據必須與原有數據相等,才能正確保護。
比較校驗數據流程如下。
圖3.32 比較校驗數據的程序流程圖
六 實驗步驟
1. 在DP-51PROC 單片機綜合仿真實驗儀上按表3.4(SLE4442 與單片機引腳連線)
在A2 區和D6 區之間連接好IC 卡與單片機之間的連線。
2. 將SLE4442 卡觸點朝下插入IC 卡座中。
3. 運行 ” SLE4442 實驗程序”(實驗程序一)。
4. 運行C51 開發環境觀察程序運行結果。
實驗程序一、從主存儲區的0 地址讀8 個字節
ORG 8000H
AJMP MAIN
ORG 8100H
MAIN:
MOV SP,#60H ;設置棧底
Read_Insert_Card:
MOV ByteNum, #08H
MOV StartAdr, #00H ;從主存儲區的0 地址讀8 個字節
LCALL ReadCard
JMP Read_Insert_Card
$INCLUDE(SLE4442.INC) ;包含SLE4442 驅動程序
;
END
在JMP Read_Insert_Card 處設置斷點,觀察RecBuf 的內容, RecBuf 的定義見
SLE4442.INC 文件。LE4442.INC 的源碼及注釋請見SLE4442. INC 文件.
實驗程序二、 從0x20 地址開始寫入2 個數據0x55 和0x66, 再讀出來, 由于
SLE4442 寫主存儲器時需要驗證密碼, 所以執行下面的程序時請確保你SLE4442 卡的
密碼的正確性, 如果密鑰錯誤,你的SLE4442 校驗三次便會鎖死報廢。
ORG 8000H
AJMP MAIN
ORG 8100H
MAIN:
MOV SP,#60H ;設置棧底
Write_Read_Card:
MOV R0,#PSWD ;密碼緩沖區首址
MOV @R0,#0x11
INC R0
MOV @R0,#0x22
INC R0
MOV @R0,#0x33 ;輸入密碼:填充密碼緩沖區
LCALL CheckPassword ;校驗密碼
JNZ WRExit ;如果校驗不成功,退出
;密碼校驗成功,進入寫卡程序
MOV R0,#WriteBuf ;WriteBuf 為寫卡緩沖區首址
MOV @R0,#0x55
INC R0;
MOV @R0,#0x66 ;填充寫緩沖區
MOV ByteNum,#0x02
MOV StartAdr,#0x20
LCALL WriteCard ;調用寫卡子程序
JNZ WRExit ;如果寫不成功,退出
MOV ByteNum,#0x02 ;下面讀出剛剛寫入的數據
MOV StartAdr,#0x20
LCALL ReadCard
;如果讀成功,才可以執行這個循環,在此設置斷點,
JZ Write_Read_Card
;觀察讀緩沖區內容
WRExit:
MOV A,#00H ;在此設置斷點
$INCLUDE(SLE4442.INC) ;包含SLE4442 驅動程序
;
END
請在JZ Write_Read_Card 語句處設置斷點,在讀成功時可以觀察讀緩沖區的數
據。在MOV A, #00H 語句處設置斷點,這樣當發生錯誤時程序不亂跑。
七、實驗思考題
(1) 如果單片機的晶振頻率選用24MHz,程序應該做那些修改,才能正確讀寫
SLE4442 卡。
(2) 編程序,根據SLE4442 的時序圖用C 語言編寫讀寫程序。
評論
查看更多