学海荡舟手机网

主页 > 实用文摘 > 教育文摘_18 > > 详细内容

接触式IC卡接口原理与不同实现方式对比_接口电路论文

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

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

引 言

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

  ic卡读写器是ic卡与应用系统间的桥梁,在iso国际标准中称之为接口设备ifd(interface device)。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/v 4.5
2.7
5.5
3.3
a类
b类
icc/ma  60500.5 a类,在最大允许频率
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~40 000个时钟周期(tc)内开始(tc在t’b之后)。

 在rst处于状态h的情况下,如果应答信号在40 000个时钟周期内仍未开始,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.1 ic卡读写芯片的硬件对比分析

(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/iec 7816 t=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-3 t=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.2 ic卡读写芯片的软件设计

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

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

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

#define sn2_iar xbyte[0x0000]

#define sn2_dr xbyte[0x0100]

void writebyteindexed(byte bindex, byte bdata) {

p1.0=0;

sn2_iar = bindex;

sn2_dr = bdata;

}

2.2.2 watchcore的软件设计

 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;

其它各段与命令包相同。

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

对主卡进行复位

发送命令包如下:

12 00 05 00 12 00 00 00 05

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

21 00 02 62 00 41

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

21 00 11 3b 7a 18 00 00 21 08 11 12 13 14 15 16 17 18 90 00 d8

2.2.3 tda8020的软件设计

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

表2 tda8020的i2c地址选择表

sad1 sad0 card1 card2
0 0 40h 48h
0 1 42h 4ah
1 0 46h 4ch
1 1 48h 4eh

(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 工作时钟频率选择方式

clksel2clksel1clock ou
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和sniper ii cst56i01只支持a类卡。(虽然sniper ii cst56i01内部寄存器中有一位是卡类选择,但却只支持a类卡。)

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

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

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

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