FR 100 型IC 卡读写器的研制
文章出处:http://www.nexussmartsolutions.com 作者:叶树林, 华蕊, 刘军, 罗中良 人气: 发表时间:2011年10月15日
IC 卡读写器是联接IC 卡和应用系统之间的信息桥梁, 是IC 卡应用中至关重要的一个环节。作为IC 卡应用系统中的一个关键性基础设备, IC 卡读写器的性能对IC 卡应用系统的开发进程及整体使用性能具有重要的影响。随着IC 卡应用范围的不断扩大及应用水平的不断提高, 对IC 卡读写器提出的要求也越来越高。因此开发出具有良好使用性能的IC卡读写器对IC 卡技术的推广应用具有重要的意义。
早期的IC 卡读写器一般只是简单地将上位机的指令数据转化成IC 卡可以接受的符合ISO 7816- 3 标准的数据格式, 不仅功能单一, 而且往往只能对一种或少数几种卡进行读写。随着IC 卡技术水平和应用水平的发展, 对IC 卡读写设备的性能提出了越来越高的要求, 虽然经过多年的发展, IC 卡读写器的性能有了很大的提高, 但是由于技术保密及为了推销IC 卡所采取的保护策略等原因, 目前市场上具有良好兼容性和开放性的IC 卡读写器还较少。
目前, IC 卡可以分为接触式和非接触式两大类, 其中以接触式IC 卡的应用最为普及。本文研制的F100 型IC 卡读写器以接触式IC 卡为读写对象, 该读写器采用89C51 单片机控制, 可以通过软件来自动识别当前IC 卡的类型, 并根据卡的类型来产生不同读写控制信号。
1 IC 卡的读写机制
虽然IC 卡的种类繁多, 不同的IC 卡在功能、触点定义、读写机制方面都存在一定的差异, 但它们都共同遵守ISO 7816- 1, 2, 3, 4 标准协议。与IC 卡读写机制有直接关系的是ISO 7816- 2, 3 协议。其中ISO 7816- 2 协议规定了IC 卡各触点的尺寸、位置和功能, 表1 列出了该协议对IC 卡8 个触点功能的定义。ISO 7816- 3 协议则规定了IC 卡的传输协议,该协议对IC 卡的读写机制作了详尽的描述, 它规定接口设备( IC 卡读写器) 和IC 卡之间的数据交换按以下操作步骤进行:
( 1) 判断卡是否插入; (2) 接口设备“激活”触点; (3) 卡的复位(Reset) ; (4) 卡对复位的应答(A n sw er To Reset) ; (5) 在卡与接口设备之间连续进行信息交换; (6) 接口设备" 释放"触点;
接口设备“激活”触点由以下操作顺序实现;
(1) RST 处于L 状态; (2) V cc 供电; (3) 接口设备的“激活”触点;(3)卡的复位(reset);(4) Vpp 上升为空闲状态; (5) RST 处于H 状态(同步传输) ; (6) 提供稳定的CL K;
接口设备“释放”触点由以下操作顺序实现:
(1) RST 为状态L (低电平) ; (2) CL K 为状态L (低电平) ; (3) Vpp 不起作用; (4) I/O为状态A (空号) ; (5) V cc 不起作用;
从读写机制来看, IC 卡可以分为同步卡(如存储卡、逻辑加密卡) 和异步卡(如CPU卡)。同步卡和异步卡在卡的复位、卡对复位的应答以及卡与接口设备之间信息交换的方式等方面存在很大的差异。表2 简述了两种卡的读写机制。
过程同步卡异步卡
卡的复位
接口设备“激活”触点后, RST信号上升, 要求RST 维持在状态H至少50Ls。在RST 上升沿之后的5Ls 后, 加上时钟脉冲CL K, CL K处于状态H 的时间可在10~ 50Ls之间, 当RST 处于状态H 时, 不允许加上1 个以上的时钟脉冲。CL K与RST 下降沿之间的时间间隔不小于5Ls。
接口设备“激活”触点后的200时钟周期内, I/O 线将被置于状态Z (传号)。使用低电平复位的卡, 是依靠RST 维持在状态L 来进行复位的。RST 处于状态L 至少40000个时钟周期, 当RST 从状态L 变化到状态H 之后的400~ 40000 个时钟周期之间, I/O 线上的复位应答将开始
过程同步卡异步卡
卡对复位的应答
复位过程之后, 时钟脉冲控制输出信息, 在RST 下降沿后的10~100Ls 产生第一个时钟脉冲, 从卡中读取数据位。卡的复位应答信息包含一个从卡发送到接口设备的标头, 标头的长度固定为32 位, 并由两个8 位字段字段H1 和H2 开始。标头信息给出了该卡所采用的协议类型及协议参数等。复位应答信号以字符帧进行传送。每个字符帧由10 位组成, 1 位起始位, 8 位数据位, 1 位偶校验位。复位应答信息长度与卡的种类有关,但不超过32 个字符。应答信息按以下顺序传送: 初始字符TS、格式字符T 0、接口字符、历史字符以及校验字符。应答信息给出了该卡所采用的协议类型及有关参数等。
信息交换
按照标头信息给出的协议类型和参数, 在同步脉冲CL K 的控制下,卡与接口设备之间按位进行信息交换。
按照复位应答信息所给出的协议类型和参数, 卡与接口设备之间以一定的波特率进行异步数据通讯。
2 读写器的硬件电路设计
FR100 型IC 卡读写器的硬件结构框图如图1 所示。它由89C51 单片机、RS232 电平转换电路、IC 卡读写控制电路、EEPROM、设置开关等组成。89C51 单片机是整个读写器的控制中心, 它一方面通过RS232 串行接口接收上位机的指令, 并对指令进行解释, 然后通过IC卡读写控制电路对IC 卡进行相应的操作, 并将操作结果通过RS232 串行接口传送给上位机。
IC 卡读写控制电路由卡的插入?退出识别、电源供给、时钟信号产生、信号隔离与驱动等电路组成, 它的功能是提供读写IC 卡所需的各种状态和控制信号。由于不同类型的IC 卡在读写机制上存在着一定的差异, 为了使研制的FR100 型IC 卡读写器具有较好的兼容性,能够正确读写各类存储卡、逻辑加密卡和微处理器卡(CPU 卡) 等目前常用的接触式IC 卡,读写控制电路各种控制信号的产生都受89C51 单片机的I/O 口控制, 因此可以通过软件编程来产生读写不同种类的IC 卡所需的读写控制信号。例如, 采用图2 所示的时钟信号发生电路, 当89C51 单片机的P1. 0、P1. 1 口输出高电平时, 该电路输出频率为3. 5712MHz 的稳定时钟信号, 可以满足异步卡对CL K 信号的要求; 而当P1. 0 口输出低电平时, 电路的输出与P1. 1 口的状态反相, 若通过软件编程在P1. 1 口输出一个同步脉冲, 则可以满足同步卡
对CL K 信号的要求。
EEPROM 是用来存储读写器的系统参数及下载用户程序的。由于用89C51 的RD 信号和PSEN 信号相与后作为EEPROM 存储器的RD 信号, 因此EEPROM 不仅可以存储系统的一些数据, 还可以用来存储用户程序代码。设置开关是用来设置读写器工作方式的, 当开关处于ON 状态时, EEPROM 的WR 线与89C51 的WR 线连通, 读写器工作在联机工作方式, 此时用户可以通过RS232 串行口来控制读写器的操作, 也可以下载用户程序; 当开关处于O FF 状态时, 读写器处于脱机工作方式, 此时读写器执行用户下载到EEPROM 中的程序, 读写器的操作完全由用户程序决定。而且此时EEPROM 的WR 线与89C51 的WR线断开, 可以防止EEPROM 中的用户程序被非法修改。该读写器的用户程序下载功能, 使其二次开发能力大大增强, 提高了读写器的开放性。
3 读写器的软件设计
FR100 型IC 卡读写器的软件在设计上采用了模块化的结构, 主要包括IC 卡类型判别模块、读写控制模块、与上位机的通讯接口模块等。
IC 卡类型判别模块是以IC 卡对复位的应答信息(A TR ) 为依据来判断当前插入的IC卡的类型。从前面的分析可知, IC 卡在复位之后都要输出A TR, 而且不同的IC 卡的A TR也是不同的,A TR 可以正确区分各类IC 卡。IC 卡类型判别程序的流程图如图3 所示。由于IC 卡有同步卡和异步卡之分, 因此在程序中首先以异步卡的操作方式对卡进行复位操作并读取A TR, 如果不能正确读取A TR, 再以同步卡的操作方式对卡进行复位操作并读取A TR , 如果两种方式都不能正确读取A TR , 则表明该卡已经损坏。图3 中的RTNCODE 是返回代码, 它等于0 表示读写器中没有卡或卡没有插到位, 等于1 表示卡已损坏, 等于11 表示该卡是异步卡, 等于12 表示该卡是同步卡; 当返回代码为11 和12 时, 存储在Buffer 中的A TR 可对卡的类型进行进一步的区分。
读写控制模块根据调用IC 卡类型判别模块所返回的RTNCODE 和Buffer 内容检索出该卡所遵循的读写方式和数据协议, 并依据此协议对读写控制电路的各个信号进行控制和检测, 完成IC 卡与读写器之间的数据交换。对于同步卡, 读写操作一般按下面的三个基本操作步骤进行, 即: 复位、数据字段的定位、读(或写) 操作。每一操作步骤中的RST、CL K、I/O 、
图3 IC 卡类型判别程序的流程图
PGM 等信号的控制在该卡所遵循的操作协议中都有明确的规定。对于异步卡的读写操作实际上是以异步串行通讯的方式在接口设备与卡之间进行命令的传递与应答的过程。接口设备与卡之间的命令结构和应答结构的一般形式为:
其中, CLA 是指令类别, IN S 是指令代码, P1, P2 是命令参数, P3 是编码数据字节(D1?Dn) 的数量n, 而SW 1, SW 2 是卡返回的状态字节。在实际程序中, 不同的异步卡有不同的指令( IN S) 集及相应的参数, 通过检索即可得到。
与上位机的通讯接口模块的功能是通过RS232 串行口接受上位机的命令, 将该命令转换成对IC 卡的操作, 并将执行结果传回给上位机。该模块实际上是一命令解释执行程序, 与IC 卡的具体操作无关, 受篇幅所限, 在此不再赘述。
4 结束语
本文FR 100 型IC 卡读写器具有良好的兼容性、开放性, 通过对法国Sch lumberger 公司的payf lex 卡(CPU 卡) 和美国A TM EL 公司的A T 88SC102 卡(逻辑加密卡) 的读写试验表明, 该读写器对不同类型的IC 卡能够自动识别和正确读写, 具有一定的推广价值。
(文/佛山科学技术学院机电分院, 叶树林, 华 蕊, 刘 军, 罗中良)