摘要:详细介绍接触式IC卡读写原理;结合一个基于不同读写芯片、可以同时操作6片接触式IC卡的系统,对包括并行通信、半双工串行通信和I2C通信的几种不同接口形式的IC卡读写芯片进行了详细的对比分析。
引 言
??IC卡 (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时间内没有具体定义);
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和/STOP | 0 | 为1,产生一个冷复位的激活时序:为0,产生一个释放时序 |
| WARM | 1 | 为1,产生一个热复位时序 |
| 3/5V | 2 | 为1,设定卡的操作电压为3V;为0,设定卡的操作电压为5V |
| PDOWN | 3 | 为1,设定卡为下电模式;为0,设定卡为正常工作模式 |
| CLKPD | 4 | 为1,设定下电模式下CLK停在高电平;为0,设定下电模式下CLK停在低电平 |
| CLKSEL1 | 5 | 两位设定卡在正常工作模式时的工作时钟频率见表4 |
| CLKSEL2 | 6 | |
| I/OEN | 7 | I/O使能位。为1时,I/O与I/Ouc相连;为0时,I/Ouc是高阻状态 |
(2)读TDA8020内部状态的数据格式
从TDA8020读出状态的格式如图5所示。按图3所示,对卡1的地址和读的字节为41H。
其中状态字节中各位的含义如表5所列。
表4 工作时钟频率选择方式
| CLKSEL2 | CLKSEL1 | CLOCK OU |
| 0 | 0 | CLKIN/8 |
| 0 | 0 | CLKIN/4 |
| 1 | 0 | CLKIN/2 |
| 1 | 1 | CLKIN |
表5 状态字节各位的含义
| 名 称 | 位 | 说 明 |
| PRES | 0 | 卡的状态指示。为1时,检测到卡:为0时,没有检测到卡 |
| PRESL | 1 | 为1时,卡的状态还没有读;当为0时,卡的状态已读出 |
| I/O | 2 | I/O为高时,这位为1;当I/O为低时,这位为0 |
| SUPL | 3 | 为1时,表示电源监控器已输出,上电后就为1,直到读出后为0 |
| PROT | 4 | 为1时,表示过热或过载状态 |
| MUTE | 5 | 为1时表示卡在规定的时间内没有发出ATR信号 |
| EARLY | 6 | 为1时表示卡在规定的时间前就已经发出ATR信号 |
| ACTIVE | 7 | 为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卡读写芯片各有不同,在实现应用的过程中,只有根据不同的资源情况来选用不同的读写芯片。
- 接触式I(6414)
- 方式对比(6703)
相关推荐
基于STM32的公交车非接触式IC卡自动收费系统
1带你了解Ic卡与射频卡的区别
1886IC卡读写系统的单片机实现 STM32+MFRC522实现IC卡读写
9756
蓝天工控非接触式IC卡收费系统解决方案
基于射频识别读写器芯片实现非接触式IC识别器的设计
2411
非接触式IC卡的模拟和高频传输通路的接口电路设计
1304
采用射频识别技术芯片MF RC632实现非接触式IC识别器的设计
4574
AT89S8252单片机实现接触式IC卡读写控制的设计
1649
非接触式ic卡种类
15947非接触式ic卡与接触式区别
20497非接触式ic卡的优缺点
16514非接触式ic卡的工作原理
14535如何实现PicoRead RF的非接触IC卡读卡器的设计
1705
Mifare 1 S50非接触式RFID IC卡资料简介
17通过读取IC卡确认驾驶员身份的汽车行驶记录仪的设计
6637
非接触式读卡器设计方案汇总,包括RFID,磁卡等介绍
2295射频卡设计原理及实现简介
12852
IC卡这么重要你知道它的原理吗?
10基于单片机的非接触式IC卡的应用及其设计
22非接触式读卡器设计方案汇总
24基于FPGA的IC卡控制器的实现
2非接触IC卡控制系统的设计方案
4基于非接触式IC卡校园门禁管理系统的要求及其设计与实现
8非接触式IC卡(射频卡)的组成及其应用系统的研究与设计
5RT6型接触式IC卡读写机介绍
9采用NuMicro M05132读写接触式IC卡接口电路
1553
基于MFRC530的非接触式IC读卡系统设计
2711
基于ARM的非接触式IC卡读卡器设计
203非接触式IC卡在仓库管理中的应用
1237
支持B类CPU卡的5V接触式读写器设计
47一种基于Mifare卡的射频读写器的设计与实现
54非接触式IC卡技术
76门禁系统非接触式IC卡读卡器的设计
433非接触式IC卡,非接触式IC卡是什么意思
14644接触式IC卡,接触式IC卡是什么意思
1425载频为13.56MHz非接触式IC卡接收模块设计
2133
公交非接触IC卡读写器的应用设计
1780非接触式IC卡详细资料
243ISO15693非接触式IC卡射频前端电路的设计
74非接触IC卡模块封装技术
68非接触式IC卡节水控制器的设计与实现
1809
非接触式存储器IC
470便携式非接触式IC卡读写器的设计
2204
基于89C51的IC卡读写器设计与实现
206非接触式IC卡智能热能表的研制
19H4001非接触式IC卡读卡程序的研究
1338
IC 卡接口芯片TDA8007 读写器设计
85基于MF RC500的非接触式IC卡读写器设计
162非接触IC卡读写模块MFRC530的工作原理及其应用
42非接触IC卡读写程序
102非接触式IC卡预收费电度表的设计
1054
电子发烧友App






评论