接触式IC卡接口原理与不同实现方式对比
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的并行通信虽然连接线较多,但其相应的软件就方便多了。
评论