IC卡读写器,采用高品质的表面封装工艺。擦卡自检(判断卡的正反向和卡片类型),通讯时自动选择波特率(57600bps,和9600bps)。丰富的上层接口函数和界面,使它能方便的应用于各种基于IC卡的系统集成中。
通讯接口: 标准RS232
卡座寿命: 10万次
主控制器: 8位51系列单片机
电磁辐射: 抗干扰 CE89/336
插卡自检: 判断卡的正反向和卡片类型
通讯速率: 自动选择波特率(57600bp和9600bps)
读写卡型: SIEMENS:SLE4404/4406/4432/4442/4428
ATMELl:AT24C01/24C02/24C16/24C64/AT45D041 AT93C46/88S102/88SC1608
CPU卡: T=0、T=1
支持符合ISO7816-3,4标准和EMV标准的CPU卡(T=0、T=1)、SAM卡、逻辑加密卡和存储器卡;支持CPU卡和SAM卡的双向论证
开发环境:16位操作平台的支持DOS环境下的Turbo C 、FoxPro
开发环境:32位操作平台的win95/98/2000环境下的VB、VC++、powerbuilder、delphi、VFP
图为IC卡及其读写器硬件电路图。其中读写器由单片机、键盘、显示、监控电路等部分组成。IC卡采用XICOR公司的X76F100Y。
2.1 IC卡及卡座
X76F100为128×8位的保密串行FLASH E2PROM,其中读密码和写密码分别为64位。图2为其智能卡Smart Card封装的引脚图。把芯片封装在一个卡片上,将卡片插入IC卡读写器的卡座中,读写器就可以对它进行读写,实现加密、查询、存款、取款等功能。
IC卡座有8个引脚,当X76F100Y插入时,正好同这几个引脚相连。另外还有两个固定端,其中一个固定端同卡座上一个弹簧片相连,两个触点和簧片就相当于一个常闭开关。当卡未插入时,簧片闭合,P3.2脚保持低电平;当卡插入时,簧片被顶开,P3.2脚变为高电平。当单片机检测到P3.2脚变高,通过P1.3 使X76F100的RST引脚变高,使其复位。
2.2 单片机
单片机采用LG公司的GMS97C52。它有8K字节的ROM,256个字节的RAM以及32个I/O口,P1口与串行器件X25045和X76F100连接,P0、P2口用于键盘和显示,P3口中P3.2用于检测IC卡是否插入,其余7个口,可作其它功能扩充。
2.3 监控电路
监控电路采用X25045芯片,它包括看门狗定时器、电压监控电路和E2PROM存贮器。其功能是:上掉电时对GMS97C52产生RESET信号;看门狗对系统进行监控,防止死机。
2.4 键盘电路
为了方便,键盘接口电路用I/O口实现,它为4×4结构,16个键。其中数字键11个,功能键4个,回车键1个。
数字键:0、1、2、3、4、5、6、7、8、9、←(退格)。
功能键:查询?、存储+、取款-、改密码* 。
查询:用户通过读密码可以查询卡中所存的款额。
存款+ :用户通过写密码可以将款存入卡中。
取款-:用户通过写密码可以从卡中取款。
改密码*:分为修改读密码和写密码。为方便起见,令读密码和写密码一致,按此键将同时修改读密码和写密码。
回车键:8位密码或存取款数输入完确认,以及新密码输入完确认。
2.5 显示电路
显示部份采用LED显示器,也用I/O口实现。用于显示系统状态、输入的密码或所要存取的款额以及出错信息等。
由于GMS97C52的驱动电流有限,在P0、P2口加反向器SN74F04,增加驱动能力。它的吸入电流为64mA,输出电流为15mA,可以保证位选所需的吸入电流。
一、读写器连接
1.1 把通讯线“DB9”端插到PC 机的串口1/2 上
1.2 把通讯线2510端插到读写器的插座,使读写器和PC 机的串口良好连接
1.2 把电源线的“圆柱”端插到读写器的电源座子上
1.3 读写器上电以后可以听到一声风鸣器的响声,如果没有听到风鸣器声,表明读写器没有正常上电.
二、启动Demo 软件
2.1 双击启动测试软件
2.2 如果串口良好连接的话可以听到一声风鸣器的响声,如果启动测试软件以后并没有听到风鸣器声表明串口通讯没有连接好,请检查串口连接线是否连接正确
三、M1卡片读写测试
3.1 把一张Mifare One 卡片放在天线区域范围内
3.2 进入功能选项“低级操作”里面点击“寻卡”,如果出现“寻卡成功!”表明寻卡正常,如果出现“执行失败!”表明出现异常,请检查卡片是否在寻卡范围内,如果确认卡片没有问题,那读写器有异常
3.3 点击“防冲突”,如果出现“执行成功”表明防冲突正常,如果出现“执行失败”表明读写器出现异常或者卡片没有在天线区域范围内
3.4 点击“选择”,如果出现“执行成功”表明选择正常,如果出现“执行失败” 表明读写器出现异常或者卡片没有在天线区域范围内
3.5 进入功能选项“密码下载”里面下载卡片密码,比如需要测试卡片扇区1 数据的读写,那么就在扇区1 后面填上密码A/B(注:卡片的初始密码A/B 均为全‘F’),然后选择“A 组密码”或者“B 组密码”,点击“下载”,如果出现“密码下载成功”表明密码下载成功,如果出现异常请按照错误提示更改后再下载一次,直至“下载成功”为止
3.6 进入功能选项“数据读写”里面,“请选择扇区号”下面的可拉选项里面选择第5步下载密码的扇区号(比如扇区1),然后点击“读出”,如果提示“第*扇区数据读出成功”表明读数据正确。如果出现“第*扇区数据读出失败”表明密码校验出错或者出现其他异常,请返回第5 步重新下载密码
3.7 如果读数据正确,在块0、块1、块2 后面修改数据,比如改成
“块0:12345678901234567890123456789012”
“块1:23456789012345678901234567890123”
“块2:34567890123456789012345678901234”
然后点击“写入”,如果出现“第*扇区数据写入成功”表明写入数据正确。如果出现“第*扇区写入失败”表明密码校验出错或者出现其他异常,请返回第5 步重新下载密码
3.8 再次点击“读出”键,然后点击“读出”,如果提示“第*扇区数据读出成功”表明读数据正确,再对比块0、块1、块2 是否和第7 步写入的数据一样,如果数据一样,证明写入成功了。如果出现“第*扇区数据读出失败”表明密码校验出错或者出现其他异常,请返回第5 步重新下载密码。
四、Mifare One 卡片块值测试
4.1 进入功能选项“块值操作”里面,在“扇区号”下面的可拉选项里面选择第3.5 步下载密码的扇区号(比如扇区1),在“块号”下面的可拉选项里面选择你想测试的块号(比如第1 块)
4.2 在“操作值”后面填上你所希望的初始值(比如“11111111”),然后点击“初始化”,如果出现“数据初始化成功”表明操作成功。如果出现“数据初始化失败”表明操作失败,请检查密码是否正确,返回第3.1 步重新操作一次。
4.3 点击“读出”,如果在“当前值”后面出现是你原来写进去的初始值,证明操作正确,如果“数据读出失败”表明块值操作有异常,请重新初始化。
4.4 在“操作值:”后面填上你所希望的操作值(比如“22222222”),然后点击“加值”,如果出现“数值加操作成功”,表明操作成功。如果出现其他提示表明操作失败
4.4 点击“读出”,如果在“当前值:”后面出现是你初始值加上加值(11111111+22222222=33333333)表明操作正确,如果是其他的值表明失败
4.5 在“操作值:”后面填上你所希望的操作值(比如“11111111”),然后点击“减值”,如果出现“数值减操作成功”,表明操作成功。如果出现其他提示表明操作失败
4.6 点击“读出”,如果在“当前值:”后面出现是你当前值减去操作值(33333333-11111111=22222222),表明操作正确,如果是其他值表明失败
五、修改密码和控制位
5.1 进入功能选项“修改密码”里面,在“扇区号”下面的可拉选项里面选择第3.5步下载密码的扇区号(比如扇区1)
5.2 在“密码A”和“密码B”后面分别写入你想修改的密码A 和密码B
5.3 卡片控制位修改之前请详细阅读卡片资料,因为控制位修改不正确,就会导致卡片不能再使用,请务必小心使用
5.4 在控制位后面填上该扇区的控制位
5.3 点击“修改密码”,如果出现“修改密码成功”,表示操作正确,如果出现出错提示,请按照出错提示做相应的处理。(注:密码修改后请务必记住,密码遗忘卡片就不能再次是使用了)
六、参数设置
6.1 进入功能选项“参数设置”里面,可以设置串口通讯参数:串口号、波特率、校验位、数据位、停止位等等,设置玩了以后点击“修改串口”,如果出现“串口参数设置成功”,表明串口设置成功,如果出现异常,请按照提示做出改动。
6.2 设置完毕以后可以点击“测试读卡器”,如果出现“读卡器连接成功”,并且听到读卡器的风鸣器响声,证明串口设置正确,如果出现“读卡器连接失败”,表明串口设置有问题,请重新设置。
6.3 读写器默认参数:Com1、9600bps、N、8、1
七、调试信息
7.1 进入功能选项“调试信息”里面,在“串口信息发送与接受”处可以看到PC 机和读卡器之间通讯的详细过程,对调试非常有帮助。
1 前言
IC卡是集成电路卡(Integrated Circuit Card)的简称,有些国家和地区称之为微芯片卡(Microchip Card)或微电路卡(Microcircuit Card)。IC卡的大小和磁卡相同,它把集成电路镶在塑料卡片上,芯片一般是数据不易丢失的存储器(ROM, EPROM.EPROM), 保护逻辑电路,或者CPU。IC卡最初是为了解决金融交易中的安全性问题而设计的,它带来全新的交易概念与巨大的优势。很快,这一优势也为其他应用部门所看中,使之广泛应用于电话、医疗保健、路禁控制和门锁控制等等系统中。随着时间的推移,应用范围还在不断扩大,使用IC卡的数量呈几何级数增长。同时,为了不同应用场合的需求,IC卡制造商们仍在不断地向市场推出新的IC卡,IC卡的价格将随着使用量的增加而逐年下降,所有这些,无疑又会大大推进IC卡在各个领域的普及。无线SOC开发平台499元 S3C44B0 ARM7开发板378元 S3C2410 ARM9开发板780元 AT91SAM7S64 ARM7
按照IC卡与读写设备的数据交换方式,IC卡可分为接触型IC卡和非接触型IC卡。接触型IC卡就是在使用时,通过有形的电极触点将卡的集成电路与外部接口设备直接接触连接来进行数据交换的IC卡。非接触型IC卡是通过无线电波或电磁场感应的方式,将卡中集成电路内的数据与外部设备接口设备通信,卡片不用直接接触接口设备的电极就可以进行数据读写。按照IC卡的功能和结构又可以把IC卡分为存储型IC卡和智能型IC卡。存储型IC卡是属于被动型,它只能实现数据的各种输入/输出。这种类型IC卡内部电路可分为两大功能部分,数据存储部分和数据加密操作控制部分。而且不是所有IC卡都必须具有这两大功能。我们把只有数据存储功能的IC卡称为非加密型存储卡 (Memory Card)。把具有数据存储功能和数据加密操作控制的IC卡称为加密型存储卡(Memory Card with Security Logic), 它们有暂时或的数据存储能力,其内容可供处理或判断之用。智能型IC卡就是在IC卡的集成电路中带有微处理器电路的IC卡。它是一种主动型IC卡,不仅能够管理各种数据的I/O操作,校验来自接口设备的个人密码,而且能够根据应用系统的要求主动识别与之连接的接口设备。因此,在智能型IC卡中能够建立各种应用系统的授权,存放多个应用系统的相关数据,并实现对数据信息存储的高可靠性、高安全性控制,可以进行复杂的信息处理和计算。
2 IC卡国际标准和读写要求
由于IC卡使用具有流动性与全球性,建立相应的国际标准和国家标准就显得特别重要。在信息技术领域,ISO(国际标准化组织)和IEC(国际电子技术委员会)共同建立了一个技术委员会ISO/IEC JTC1以制定相应国际标准。在IC卡应用系统的设计中,读写设备对IC卡的读写控制的每一个环节都应当遵照相应的国际标准,才能保证数据的正确读取。这是IC卡读写器终端设计的基础。
而在这些标准当中,对芯片和电气特征的定义和操作时序的要求又显得尤为重要。此处以同步卡的电气特征和时序为例进行介绍。使用这种卡时,接口设备将所有线置于状态L,然后VCC加电,Vpp处于空闲状态,CLK、RST和FCB处于状态L,接口设备的I/O置于接收模式。时钟脉冲在VCC上升沿之后相隔t20后提供,时钟脉冲的持续时间为t25。在时钟脉冲上升沿之后至少相隔t22时间FCB仍维持状态L。在I/O线上得到的第1位数据可视为应答,此时CLK处于状态L,并在CLK下降沿t27之后有效。当FCB置于状态H时,每一个时钟脉冲用于读出I/O线上的下个数据位。在复位应答时,个时钟脉冲在FCB上升沿之后t24时间给出。时钟脉冲状态H的持续时间为t25,状态L的持续时间为1us(t26)。第二个及其随后的数据位在时钟为低和CLK下降沿之后t27时间给出。数据位依次用时钟脉冲的上升沿采样。
图 一
3 SLEE4442接口电路的设计
SLE4442是由德国西门子公司设计的逻辑加密存储卡。它具有2K位的存储容量和完全独立的可编程加密代码存储器。内部电压提升电路保证了芯片能够以单5V电压供电,较大的存储器容量能够满足应用领域的各种要求。是目前国内应用较多的一种IC卡芯片。这种芯片的特点是采用多存储器结构;2线连接协议,串行接口满足ISO7816同步传送协议;芯片采用NMOS工艺技术,每字节的擦除/写入编程时间为2.5ms;存储器采用至少104次的擦除/写入周期,数据保持时间至少为10年。
而读写器的主控芯片采用的是89C51单片机。89C51单片机是Intel公司开发的8位的系列化处理芯片。内部带有一个8位的CPU,256个字节的RAM,21个特殊功能寄存器(SFR),2个16位的定时/计数器,4个8位并行接口,一个全双工的串行接口,5个中断源及片内时钟振荡器等。由于这是一款非常成熟的单片机,因此本文不作更多的赘述。
该读写器的核心模块即如何实现对IC芯片的有效控制和读写操作。而接口电路的设计直接反映了对该芯片的具体操作思想。由于IC卡的逻辑接口电路一般采用集电极开路(OC)输出及非保护式输入结构,所有让上拉电阻R源端与IC卡的供电电源相连接。当IC卡处于供电状态时,整个接口电路接通,接口设备与IC卡间构成逻辑通路;而当IC卡处于下电状态时,上拉电阻R的源端失去了供电,整个与卡接口的电路均处于不带电状态。所有的IC卡接口部分都加入了保护二极管,这些二极管可以使各引脚上的电压严格地限定在-VD~VCC+ VD之间(VD是保护二极管的正向压降,通常为0.6左右)。这样,可以抑制由于线路干扰和逻辑电平变化的边沿产生抖动所带来的瞬间过压,为IC卡提供了进一步的保护措施。所设计的接口电路图如图二所示。
图 二 IC卡控制和读写电路
IC卡的插入与退出的识别是通过IC卡适配插座上的感应开关来识别的,对于简单的手动插拔的IC卡适配插座来说,这种识别过程相当简单,仅有一个开关,表示卡是否已插入。如果卡己插入到正确位置,IC卡适配插座就会给出一个开关接通(或断开)的信号,而一旦卡离开这个位置,该信号就会立即发生翻转。设计中采用的适配器,无卡插入时开关常闭,卡插到位时开关断开。对于手动式IC卡适配插座来说,这一信号已经足够了。为了确保IC卡已准确地插到位置,插入的识别过程必须加入消颤处理,这主要由软件来实现。
大多数符合ISO7816标准的同步型IC卡的地址计数器是与时钟紧密相关的,当卡复位时,地址计数器置0。以后每向卡发一个节拍的时钟,都将使IC卡的地址计数器加‘1’。这一时钟频率上限为50kHz或280kHz。复位之后的头32个时钟周期内,是卡的复位响应过程,该过程中,厂家的产品编码以位编码方式逐一在数据线上送出,以后的字段则根据厂家及用户所定义的含义不同而各不相同。若某字段定义为可读的,则可将时钟运行到该字段上,然后再逐时钟读出。数据的读出过程可分为三个基本过程:复位,数据字段的定位和数据读出。
4、89C51软件模块设计
由于89C51是主控芯片,因此89C51需要完成对IC芯片的复位、读写等操作。首先对于复位响应操作,由于复位响应是根据ISO7816标准来进行的。在操作期间的任何时候都可以复位,只有经过了复位才能对IC卡进行其他操作。开始时地址计数器随一个时钟脉冲而被设置成0。当RST线从H状态置到L状态时,个数据位的内容被送到I/O线上。若连续输入32个时钟脉冲,主存储器中的前4个字节地址单元中的内容被读出。在第33个时钟脉冲的下降沿,I/O线被置成H状态而关闭。 在复位响应期间,“启动”和“停止”状态被忽略。单片机上的程序设计如下:
CARD_RST:
CLR RST
CLR CLK
LCALL DELAY_20US
SETB RST
LCALL DELAY_20US
SET CLK
LCALL DELAY_20US
CLR CLK
LCALL DELAY_20US
CLR RST
LCALL DELAY_20US
MOV B,#32
RESET1:
SETB CLK
LCALL DELAY_20US
CLR CLK
LCALL DELAY_20US
DJNZ B,RESET1
RET
在命令模式下,复位响应之后,芯片等待着命令。每条命令都以一个“启动状态”开始。整个命令包括三个字节。随后紧跟着一个附加脉冲并用一个“停止状态”来结束操作。当CLK为H状态期间,I/O线的下降沿为启动状态;当CLK为H状态期间,I/O线的上升沿为停止状态;限于篇幅,此处不再列出整个读写操作的程序代码。需要注意的是:脉冲的下降沿之后,I/O线上的位数据变为有效。随后每增加一个时钟脉冲,芯片内部的一位数据被送到I/O线上。其输出的顺序是从侮个字节的位开始。当所需要的一个数据送出以后,需要再附加一个时钟脉冲来把I/O线置成H状态,以便准备接受新的命令。在输出数据期间,任何“启动状态”和“停止状态”均被屏蔽掉。
5、结束语
本文的创新点是提出了一种新型的IC卡读写器设计方案,在串口通讯的设计中,除了要对单片机的异步通讯口进行操作,还要对PC 机的串口进行底层实时控制,并通过调用系统的API 函数的方法成功的解决了这一问题。由于西门子公司的SLE4442型逻辑加密IC卡是一种比较通用的IC卡芯片,因此通过更新读写器软件也可以操作其他类型的接触式同步IC一卡,使得这种接触式IC卡读写器成为一种通用的读写器。
维库电子通,电子知识,一查百通!
已收录词条48227个