接触式IC卡接口原理与不同实现方式对比
时间:12-25
来源:互联网
点击:
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为卡头选择, 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;
其它各段与命令包相同。
通信举例(以下数据都用十六进制表示)
对主卡进行复位
发送命令包弳cript type="text/javascript"> function ImgZoom(Id)//重新设置图片大小 防止撑破表格 { var w = $(Id).width; var m = 650; if(w < m){return;} else{ var h = $(Id).height; $(Id).height = parseInt(h*m/w); $(Id).width = m; } } window.onload = function() { var Imgs = $("content").getElementsByTagName("img"); var i=0; for(;i
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地址选择表

(1) 向TDA8020写入命令的格式
图4为向TDA8020写入命令的格式。按图3所示,对卡1的地址和写的字节为40H。
其中控制字节各位的含义如表3所列。

图4 向TDA8020写入命令的时序
表3 命令控制字节各位的含义

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

(2) 读TDA8020内部状态的数据格式
从TDA8020读出状态的格式如图5所示。按图3所示,对卡1的地址和读的字节为41H。

图5 从TDA8020读出状态的时序
其中状态字节中各位的含义如表5所列。
表5 状态字节各位的含义

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卡读写芯片各有不同,在实现应用的过程中,只有根据不同的资源情况来选用不同的读写芯片。
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为卡头选择, 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;
其它各段与命令包相同。
通信举例(以下数据都用十六进制表示)
对主卡进行复位
发送命令包弳cript type="text/javascript"> function ImgZoom(Id)//重新设置图片大小 防止撑破表格 { var w = $(Id).width; var m = 650; if(w < m){return;} else{ var h = $(Id).height; $(Id).height = parseInt(h*m/w); $(Id).width = m; } } window.onload = function() { var Imgs = $("content").getElementsByTagName("img"); var i=0; for(;i
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地址选择表

(1) 向TDA8020写入命令的格式
图4为向TDA8020写入命令的格式。按图3所示,对卡1的地址和写的字节为40H。
其中控制字节各位的含义如表3所列。

图4 向TDA8020写入命令的时序
表3 命令控制字节各位的含义

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

(2) 读TDA8020内部状态的数据格式
从TDA8020读出状态的格式如图5所示。按图3所示,对卡1的地址和读的字节为41H。

图5 从TDA8020读出状态的时序
其中状态字节中各位的含义如表5所列。
表5 状态字节各位的含义

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卡读写芯片各有不同,在实现应用的过程中,只有根据不同的资源情况来选用不同的读写芯片。
集成电路 电路 微芯 电子 电压 电流 嵌入式 单片机 PCB 仿真 CMOS 总线 相关文章:
- 基于MSP430单片机的多路数据采集系统的设计(06-20)
- LED照明全方位渗透,高能效驱动方案点亮前景(11-17)
- 使用L6506 实现步进电机的电流控制(12-10)
- 激光微加工系统及基于DSP+FPGA的控制单元的研究(03-05)
- Si472x射频收发芯片的交通状况提示装置(02-18)
- 红外方式数字图像采集报警系统的设计(03-15)
