ic卡接口原理管理论文 -pa视讯

时间:2022-06-26 05:21:00

导语:ic卡接口原理管理论文一文来源于网友上传,不代表本站观点,若需要原创文章可咨询客服老师,欢迎参考。

ic卡接口原理管理论文

摘要:详细介绍接触式ic卡读写原理;结合一个基于不同读写芯片、可以同时操作6片接触式ic卡的系统,对包括并行通信、半双工串行通信和i2c通信的几种不同接口形式的ic卡读写芯片进行了详细的对比分析。

关键词:iso/iec7816接口技术接触式ic卡并行通信半双工串行通信i2c总线通信

引言

ic卡(integratedcircuitcard,集成电路卡)是继磁卡之后出现的又一种新型信息工具。ic卡在有些国家和地区也称智能卡(smartcard)、智慧卡(intelligentcard)、微电路卡(microcircuitcard)或微芯片卡等。它是将一个微电子芯片嵌入符合iso7816标准的卡基中,做成卡片形式;已经十分广泛地应用于包括金融、交通、社保等很多领域。

ic卡读写器是ic卡与应用系统间的桥梁,在iso国际标准中称之为接口设备ifd(interfacedevice)。ifd内的cpu通过一个接口电路与ic卡相连并进行通信。ic卡接口电路是ic卡读写器中至关重要的部分,根据实际应用系统的不同,可选择并行通信、半双工串行通信和i2c通信等不同的ic卡读写芯片。

1接触式ic卡接口技术原理

ic卡读写器要能读写符合iso7816标准的ic卡。ic卡接口电路作为ic卡与ifd内的cpu进行通信的唯一通道,为保证通信和数据交换的安全与可靠,其产生的电信号必须满足下面的特定要求。

1.1完成ic卡插入与退出的识别操作

ic卡接口电路对ic卡插入与退出的识别,即卡的激活和释放,有很严格的时序要求。如果不能满足相应的要求,ic卡就不能正常进行操作;严重时将损坏ic卡或ic卡读写器。

(1)激活过程

为启动对卡的操作,接口电路应按图1所示顺序激活电路:

◇rst处于l状态;

◇根据所选择卡的类型,对vcc加电a类或b类,正常操作条件下vcc的电特性见表1;

表1正常操作条件vcc的电特性

符号最小值最大值条件

vvcc/v4.5

2.75.5

3.3a类

b类

icc/ma60500.5a类,在最大允许频率

b类,在最大允许频率时钟停止

◇vpp上升为空闲状态;

◇接口电路的i/o应置于接收状态;

◇向ic卡的clk提供时钟信号(a类卡1~5mhz,b类卡1~4mhz)。

图3

如图1所示,在t’a时间对ic卡的clk加时钟信号。i/o线路应在时钟信号加于clk的200个时钟周期(ta)内被置于高阻状态z(ta时间在t’a之后)。时钟加于clk后,保持rst为状态l至少400周期(tb)使卡复位(tb在t’a之后)。在时间t’b,rst被置于状态h。i/o上的应答应在rst上信号上升沿之后的400~40000个时钟周期(tc)内开始(tc在t’b之后)。

在rst处于状态h的情况下,如果应答信号在40000个时钟周期内仍未开始,rst上的信号将返回到状态l,且ic卡接口电路按照图2所示对ic卡产生释放。

(2)释放过程

当信息交换结束或失败时(例如,无卡响应或卡被移出),接口电路应按图2所示时序释放电路:

◇rst应置为状态l;

◇clk应置为状态l(除非时钟已在状态l上停止);

◇vpp应释放(如果它已被激活);

◇i/o应置为状态a(在td时间内没有具体定义);

◇vcc应释放。

图4

1.2通过触点向卡提供稳定的电源

ic卡接口电路应能在表1规定的电压范围内,向ic卡提供相应稳定的电流。

1.3通过触点向卡提供稳定的时钟

ic卡接口电路向卡提供时钟信号。时钟信号的实际频率范围在复位应答期间,应在以下范围内:a类卡,时钟应在1~5mhz;b类卡,时钟应在1~4mhz。

复位后,由收到的atr(复位应答)信号中的f(时钟频率变换因子)和d(比特率调整因子)来确定。

时钟信号的工作周期应为稳定操作期间周期的40%~60%。当频率从一个值转换到另一个值时,应注意保证没有比短周期的40%更短的脉冲。

2几种实现方式的对比与分析

ifd内的ic卡读写芯片,按其与ifd内的cpu的通信方式进行分类,有并行通信、半双工串行通信和i2c通信的读写芯片。图3是一个基于三种不同通信方式读写芯片的通用ic卡读写器的原理示意。这个系统可以同时对6片ic卡进行操作,其中每一个ic卡读写芯片都可以驱动2片ic卡。应用系统可以根据实际情况合理选用其中的一种或多种读写芯片。

2.1ic卡读写芯片的硬件对比分析

(1)通信方式为并行通信的cts56i01

cts56i01支持两个符合iso/iec7816-3标准的t0和t1传输协议的ic卡。它采用并行的方式与ifd内的cpu通信;可以检查到卡的插入与拔出,并自动产生激活与释放时序。cts56i01内部每个通道都有发送缓冲空、atr超时、释放检测完成、ts没有收到等10个独立的中断源,当cts56i01内部的状态发生变化时,可以产生中断信号。系统通过p0口与cts56i01的数据线相连,地址选择用p2[2:0],两个中断信号经过或门后接到89c51的int0上。对ic卡的所有操作,只是对cts56i01内部寄存器的读写操作,方便可靠。cts56i01采用lqfp-32封装,仅占很小的空间。

(2)通信方式为半双工串行通信的watchcore

watchcore是握奇公司为了方便各种嵌入式设备与ic卡的通信开发而推出的一款ic卡读写芯片,硬件平台采用st7261单片机,内部掩膜有握奇公司对ic卡进行读写操作的全部程序;支持iso/iec7816t=0、t=1异步传输协议的各种智能卡,支持对memory卡操作,支持双卡头操作,与接口cpu采用半双工串行通信。系统用p1.1和p1.2模拟一个串口与watchcore进行通信。watchcore采用so-20装封,占pcb板很小的位置。

图5

(3)通信方式为i2c的tda8020

tda8020是philips生产的支持两个独立ic卡的读写芯片,ifd内的cpu采用i2c的方式向tda8020发送命令和读取状态,通过tda8020的i/ouc端口向ic卡发送和接收数据。它支持符合iso/iec7816-3t=0、t=1标准的ic卡,也支持符合emv3.1.1(europay,mastercard,visa)标准的卡。与它pin-to-pin兼容的芯片还有st公司生产的st8020等。tda8020有2个地址选择引脚。本系统的地址引脚接地,两个ic卡对应的地址分别为0x40和0x48。i2c的时钟信号和数据信号分别由89c51的p1.3和p1.4进行模拟,ic卡的数据通道i/ouc连89c51的p1.5和p1.6。tda8020也采用lqfp-32装封。

2.2ic卡读写芯片的软件设计

2.2.1通信方式为并行通信的cts56i01

cst56i01只有3根地址线,内部却有37个寄存器。其中有8个寄存器可以直接访问,另外的29个寄存器要通过索引地址寄存器(iar)来访问。其访问分为两步:第一步是将要间接访问的寄存器的地址写到iar寄存器中;第二步就是从数据寄存器(dr)中读出数据或写入数据到dr寄存器中,来完成对要间接访问的寄存器的访问。

下面的c51子程序是基于图3的写一个字节到要间接访问的寄存器中的子程序。

#definesn2_iarxbyte[0x0000]

#definesn2_drxbyte[0x0100]

voidwritebyteindexed(bytebindex,bytebdata){

p1.0=0;

sn2_iar=bindex;

sn2_dr=bdata;

}

2.2.2watchcore的软件设计

watchcore是不带硬件的uart,其串行通信是用软件实时仿真的。通信速度采用9600bps;通信字节格式为1位起始位,8位数据位,1位偶校验位,2位停止位。txd与rxd电气信号是标准的cmos电平,可直接与ttl的电路相连。以下是通信时的数据包格式。

(1)命令包

命令包是ic卡读写器内的cpu发往watchcore的数据,其包格式如下:

nad

pcb

len

data

bcc

nad为卡头选择,nad=0x00/0x12为主卡头,nad=0x13为从卡头;

pcb与通信无关,cpu卡t=1时使用,pcb通常设置为0x00;

len为数据的字节长度(仅data段的字节数);

data为发送wactchcore或ic卡内的命令(命令参考iso7816-4的标准);

bcc为异或校验字节(bcc段前的4段所有字节的异或和)。

(2)数据包

数据包是watchcore收到命令包后返回的数据,其包格式如下:

nad*是watchcore把命令包中nad字节的高低4位互换后的返回。例如,命令包发送nad=0x12,watchcore则返回nad*=0x21;

其它各段与命令包相同。

通信举例(以下数据都用十六进制表示)

对主卡进行复位

发送命令包如下:

120005001200000005

若主卡头中无卡,则watchcore返回:

210002620041

若主卡头有一张t=0的cpu卡,则可能返回:

2100113b7a180000210811121314151617189000d8

2.2.3tda8020的软件设计

tda8020与ifd内cpu的通信是用i2c总线方式进行的。通过i2c接口,ifd内的cpu可以向tda8020发送命令或读取tda8020的状态。tda8020有两个地址选择引脚(sad0和sad1)。在图3中,这两个地址选择引脚接地,对应两个ic卡的i2c总线地址分别是40h和48h。如果系统中有别的i2c总线器件,可以按表2的方式进行寻址。

表2tda8020的i2c地址选择表

sad1sad0card1card2

0040h48h

0142h4ah

1046h4ch

1148h4eh

(1)向tda8020写入命令的格式

图4为向tda8020写入命令的格式。按图3所示,对卡1的地址和写的字节为40h。

其中控制字节各位的含义如表3所列。

表3命令控制字节各位的含义

名称位说明

start和/stop0为1,产生一个冷复位的激活时序:为0,产生一个释放时序

warm1为1,产生一个热复位时序

3/5v2为1,设定卡的操作电压为3v;为0,设定卡的操作电压为5v

pdown3为1,设定卡为下电模式;为0,设定卡为正常工作模式

clkpd4为1,设定下电模式下clk停在高电平;为0,设定下电模式下clk停在低电平

clksel15两位设定卡在正常工作模式时的工作时钟频率见表4

clksel26

i/oen7i/o使能位。为1时,i/o与i/ouc相连;为0时,i/ouc是高阻状态

(2)读tda8020内部状态的数据格式

从tda8020读出状态的格式如图5所示。按图3所示,对卡1的地址和读的字节为41h。

其中状态字节中各位的含义如表5所列。

表4工作时钟频率选择方式

clksel2clksel1clockou

00clkin/8

00clkin/4

10clkin/2

11clkin

表5状态字节各位的含义

名称位说明

pres0卡的状态指示。为1时,检测到卡:为0时,没有检测到卡

presl1为1时,卡的状态还没有读;当为0时,卡的状态已读出

i/o2i/o为高时,这位为1;当i/o为低时,这位为0

supl3为1时,表示电源监控器已输出,上电后就为1,直到读出后为0

prot4为1时,表示过热或过载状态

mute5为1时表示卡在规定的时间内没有发出atr信号

early6为1时表示卡在规定的时间前就已经发出atr信号

active7为1时,卡处于激活状态;为0时,卡处于释放状态

3总结

以上比较详细地介绍了三种不同接口的ic卡读写芯片。这三种方式最大的区别在于其与ifd内的cpu的通信方式不一样,并且也都符合iso/iec7816的标准。但是,这三个读写芯片有一些地方也存在一些差异。

tda8020支持a类和b类卡,但是watchcore和sniperiicst56i01只支持a类卡。(虽然sniperiicst56i01内部寄存器中有一位是卡类选择,但却只支持a类卡。)

tda8020和sniperiicst56i01其esd保护达6kv,但是watchcore却没有esd保护功能。

tda8020对卡的电源可以直接支持,并有过流保护功能;但是watchcore和sniperiicst56i01却只有通过一个功放管来实现,并且没有过流保护功能,只有外接保护电路(如加可复位保险丝)。

就其接口方式来说,i2c总线的tda8020和串口的watchcore虽然与ic卡读写器内的cpu的连接方便,但是一般cpu没有多余的串口和i2c总线接口给这两个芯片,一般要用通用i/o口来模拟串口和i2c总线接口才能进行通信。而sniperiicst56i01与ifd内的cpu的并行通信虽然连接线较多,但其相应的软件就方便多了。

综上所述,这三个ic卡读写芯片各有不同,在实现应用的过程中,只有根据不同的资源情况来选用不同的读写芯片。