一种可以对B类CPU卡读写的接触式IC卡读写器设计

时间:2011-08-07

  智能卡(Smart Card)有接触与非接触卡片,内嵌有微芯片的塑料卡的通称。有包含RFID芯片的,也有加上热敏膜技术的,实现可视功能的,卡片具有储存信息的功能,能实现智能功能作用。

  什么是智能卡?

  智能卡(Smart Card) :内嵌有微芯片的塑料卡(通常是一张信用卡的大小)的通称。一些智能卡包含一个RFID芯片,所以它们不需要与读写器的任何物理接触就能够识别持卡人。   智能卡配备有CPU和RAM,可自行处理数量较多的数据而不会干扰到主机CPU的工作。智能卡还可过滤错误的数据,以减轻主机CPU的负担。适应于端口数目较多且通信速度需求较快的场合。   智能卡是IC卡(集成电路卡)的一种,按所嵌的芯片类型的不同,IC卡可分为三类: 1.存储器卡:卡内的集成电路是可用电擦除的可编程只读存储器EEPROM,它仅具数据存储功能,没有数据处理能力;存储卡本身无硬件加密功能,只在文件上加密,很容易被破解。   2.逻辑加密卡:卡内的集成电路包括加密逻辑电路和可编程只读存储器EEPROM,加密逻辑电路可在一定程度上保护卡和卡中数据的安全,但只是低层次防护,无法防止恶意攻击。   3.智能卡(CPU卡):卡内的集成电路包括中央处理器CPU、可编程只读存储器EEPROM、随机存储器RAM和固化在只读存储器ROM中的卡内操作系统COS(Chip Operating System)。卡中数据分为外部读取和内部处理部分,确保卡中数据安全可靠。

  自从1993年推出"金卡工程"以来,我国金融和流通领域逐渐进入了电子货币时代,各种接触式IC卡读写器得到了广泛应用。它将微电子技术和计算机技术结合在一起,提高了人们生活和工作的现代化程度。

  接触式集成电路(IC)卡国际标准(ISO/IEC 7816)由国际标准化组织(ISO)和国际电子技术委员会(IEC)共同制定,该标准对接触式IC卡领域的物理特性、电信号和传输协议等各个方面进行了统一规范。根据该标准,按照供给卡的电源电压不同而将卡分为A、B两类,即5 V电压的A类卡和3 V电压的B类卡[1].传统的接触式IC卡读写器大多采用A类接口设备或B类接口设备,只能对单一的A类卡或B类卡进行操作,而具有AB类接口设备的读写器却应用不多。随着接触式IC卡在日常生活中的广泛应用,具有AB类接口的读写器将有广阔的市场。本文设计的读写器采用5 V的电源电压供电,可以实现对B类卡的全功能读写,该技术可以解决在5 V的系统中对A类卡和B类卡进行同时读写的问题。

  1 系统硬件设计

  本文中的IC卡读写器采用ATMEL公司的高性能、低功耗的8位AVR微处理器ATMEGA32,电平转换芯片采用美国国家半导体公司(National Semiconductor)的LM1117-3.3,可以给卡座提供3.3 V的电源电压。微处理器与卡座之间的接口转换电路采用德州仪器公司(TI)的SN74TVC3010器件,该芯片可以对10路信号同时进行转换,完全可满足读写器设计的需要。读写器硬件电路结构如图1所示,该读写器主要由3部分组成。

  (1)电源。主要是为整个读写器提供稳定的5 V和3 V的电源电压。5 V电源通过USB口由上位机直接提供,可以作为读写器内微处理器、蜂鸣器电路、光电指示电路的电源。5 V电源电压通过LM1117-3.3芯片的转换后可以得到稳定的3.3 V的电平,为后续的SN74TVC3010接口电路、卡座提供电源电压。具体的电路如图2所示。

  (2)数据交换。PC机与读写器的数据交换也即是与ATMEGA32单片机之间的数据交换,PC机通过上位机软件向单片机发送命令以实现对卡片的读写操作。本读卡器采用RS232串口与PC机进行通信,由于接口电平的不同,在读卡器内部应用MAX232芯片实现了不同电平间的转换[2].

  (3)读写器与CPU卡的通信。在读卡器上有一个常闭型接触卡座,这是读写器与CPU卡进行通信的接口,通过符合ISO 7816标准要求的8个触点实现与CPU卡的连接[3].

  SN74TVC3010为一双向电平转换器件,在转换过程中不需要方向控制信号。SN74TVC3010芯片包含由11个N 沟道导通晶体管组成的晶体管阵列,阵列中的所有晶体管都具有相同的电气特性,它们的门在内部连接在一起,因此,其中的任一个晶体管都可以作为参考晶体管,其他的作为导通晶体管,每个导通晶体管的低压端上的正电压限制为由参考晶体管设置的电压。由于晶体管是对称制造的,且I/O 信号是双向经过每个晶体管,所以每位的任一端口连线可用作低压端[4].

  本文设计的读写器中参考晶体管的一端通过1个200  kΩ电阻接5 V电源,另一端接3.3 V电源,如图3所示。当数据从卡座向单片机传输时,电压达到3.3 V,导通晶体管关闭,单片机管脚上的电平通过上拉电阻拉至5 V.当数据从单片机向卡座传输时,卡座端的电压被钳位在3.3 V左右。这样可准确地实现单片机与卡片之间的正常通信。

  2 底层固件设计

  本读写器固件编程采用C语言编写,编程环境为IAR Embedded Workbench,仿真及底层固件在AVR Studio 4中完成。固件的整体结构如图4所示。

  单片机通过RS232串口接收上位机发送的命令,主程序按照预先设计的通信协议格式对其解析之后,如果是正确的命令,则转到相应的命令处进行执行,否则向上位机返回错误信息,并继续接收新的命令。该固件程序可以实现读写器与上位机之间通信速率在9 600 b/s、19 200 b/s、38 400 b/s、57 600 b/s、76 800 b/s、115 200 b/s内任意选择。

  本读写器可以对符合T=0、T=1协议的B类CPU卡进行读写操作,也可以对其他的存储卡、逻辑加密卡进行程序扩展。T=0的协议卡以单字节的字符为基本单位,T=1的协议卡以有一定长度的数据分组为传输的基本单位。程序设计过程中,通过判断复位应答来获得卡片的协议类型,再根据不同协议的要求执行相应的处理。如图5所示为主程序执行流程。

  系统上电后,首先执行系统初始化,包括串口的初始化、系统声光电路的指示设置等,如果发光二极管显示正常,表明读写器已经打开,可以正常工作。在卡片插入之后,常闭型接触卡座的查询卡片状态管脚被弹开,电压变为高电平,说明卡片已到位,此时按照从串口接收的有效命令对卡进行复位、密码校验、读写数据等操作。

  3 应用软件设计

  读写器的应用软件是读写器系统的一个重要组成部分,它主要实现对读写器参数的设置、数据的读写和显示、IC卡状态的判断等,是操作读写器的直观接口[3].

  该应用软件的设计环境为Microsoft Visual C++ 6.0.在软件设计过程中采用了Visual C++提供的ActiveX控件MSComm来实现对串口的访问,该控件的使用不需要了解较为复杂的API函数就可以非常方便地进行串口编程[6].

  该应用软件界面友好、使用非常方便,只需要把串口通信的串口号、通信速率设置好,就能成功对读写器进行操作,其界面如图6所示。设置好串口参数,输入相应的读写指令后,在OUTPUT框内就可以看到读写器返回的结果。

  该接触式读写器经检测在Windows环境能够对B类CPU卡进行全功能读写,可以广泛应用于金融、医疗、保险等行业。同时该读写器的读写速度没有因应用了电平转换电路而受到明显的影响,所以真正实现了在5 V的系统中对B类卡的读写,这对设计AB类接口设备具有指导意义。


  
上一篇:基于太网交换机在上海世博阳光谷灯光系统中的应用
下一篇:配视觉系统的直角坐标机器人的应用分析

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料