接触式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 语言编写读写程序。
评论
查看更多