最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

IC卡接口芯片TDA8007的读写器设计

来源:动视网 责编:小OO 时间:2025-10-04 11:08:49
文档

IC卡接口芯片TDA8007的读写器设计

自己收集整理的错误在所难免仅供参考交流如有错误请指正!谢谢IC卡接口芯片TDA8007的读写器设计作者:罗勇进路林吉2004-5-20摘要:阐述T=0传输协议给出IC卡读写器中使用的IC卡APDU指令流程和原理框图;重点介绍其中的IC卡接口芯片Philips的TDA8007给出通过TDA8007对CPUIC卡上下电过程、具体程序及TDA8007使用中应注意的问题IC卡(IntegratedCircuitcard)即集成电路卡是将一个集成电路芯片镶嵌于朔料基片中封装成卡的形式外形与常用的覆盖磁条
推荐度:
导读自己收集整理的错误在所难免仅供参考交流如有错误请指正!谢谢IC卡接口芯片TDA8007的读写器设计作者:罗勇进路林吉2004-5-20摘要:阐述T=0传输协议给出IC卡读写器中使用的IC卡APDU指令流程和原理框图;重点介绍其中的IC卡接口芯片Philips的TDA8007给出通过TDA8007对CPUIC卡上下电过程、具体程序及TDA8007使用中应注意的问题IC卡(IntegratedCircuitcard)即集成电路卡是将一个集成电路芯片镶嵌于朔料基片中封装成卡的形式外形与常用的覆盖磁条
自己收集整理的

错误在所难免

仅供参考交流

如有错误

请指正!谢谢

IC卡接口芯片TDA8007的读写器设计

作者: 罗勇进 路林吉

2004-5-20

摘要:

  阐述T=0传输协议

给出IC卡读写器中使用的IC卡APDU指令流程和原理框图;重点介绍其中的IC卡接口芯片Philips的TDA8007

给出通过TDA8007对CPU IC卡上下电过程、具体程序及TDA8007使用中应注意的问题

  IC卡(Integrated Circuit card)即集成电路卡

是将一个集成电路芯片镶嵌于朔料基片中

封装成卡的形式

外形与常用的覆盖磁条的磁卡相似

IC卡芯片具有写入和存储数据的能力

IC卡存储器中的内容根据需要可以有条件地供外部读取

或供内部信息处理和判定

根据卡中所镶嵌的集成电路的不同

可以分成存储器卡、逻辑加密卡、CPU卡三类

其中CPU卡即为由处理器CPU、EEPROM、随机存储器RAM以及固化在只读存储器ROM中的片内操作系统COS(Chip Operation System)组成的IC卡

IC卡按与外界数据传送的形式来分

有接触式和非接触式两种

图1 T=0的CPU卡APDU指令实现流程

1 CPU IC卡T=0的协议介绍  

目前大多数CPU IC卡采用T=0模式

所谓T=0

即CPU IC卡与接口设备(即读写器)中数据传输方式为异步半双工字符传输模式

  

  从T=0协议的功能出发

该协议的实现可以分为物理层、数据链路层、终端传输层和应用层

其中物理层和数据链路层可以具体参看ISO7816标准

在T=0协议应用

终端传输层和应用层实际上是不易分割来说明的

下面简单说明

  

  终端传输层根据卡片返回的过程字符和状态字节执行相应的操作

使读写器对数据的处理过程明朗清晰

卡片返回的过程字节和状态字节跟应用层发送给卡的APDU(Application Protocol Data Unit

应用协议数据单元)和VPP使用等有关

表1为VPP未用时的终端传输层中返回的过程字节

Table1

应用层即为由CLA、INS、P1、P2、P3作为命令头组成的命令消息体的APDU响应和应答处理层

其中CLA为指令类别

INS为指令码

P1、P2为参数

P3为根据APDU的不同格式为发送给卡的数据长度或期望响应的数据长度

APDU的几种情况如表2所列

表2

CPU卡对接口设备(即读写器)的应答APDU情况如表3所列

表3  

其中体中的数据字节数由命令APDU中的LE指出;SW1、SW2是必备的

可以指明命令APDU执行正确或执行出错的错误类型

  

  2 基于T=0传输协议的CPU IC的APDU指令流程  

  根据目前CPU卡的常用T=0协议、自带编程升压电路的应用情况

以及本读写器接收IC卡数据报文直接发送PC机处理的特点

本读写器可行的APDU命令和响应的处理流程如图1所示

  

  3 读写器的硬件组

成  

  读写器的硬件部分主要由IC接口管理芯片TDA8007、MCUATC52、外部数据存储器W24257S、串口电平转换芯片MAX3226、安全IC卡座(即SAM卡座)、应用IC卡座、键盘口供电的串口通信线及其它相关元器件组成

  

  图2所示为通过PC机控制管理的外置于PC机的接触式CPU IC卡读写器

通过定制的数据线

该读写器的5V直流电源可直接由键盘口提供

同时数据线还负责PC机与读写器的串行数据交换

在大部分IC卡读写应用中

都涉及到IC卡的认证和数据读写的国解密问题

所以本读写器除了提供一个供用户使用的IC卡接口卡座外

还内置了一个SAM卡

即安全IC卡卡座

以方便安装SAM卡

保证应用IC卡读写时的数据安全

保护用户的利益

硬件的其它组成部分

如处理器

目前采用Atmel的C52

其4KB的Flash程序存储器可以满足读写器的程序空间需要

由于PC机与C52、C52与TDA8007的数据交换要求的暂存数据空间比较大

C52提供的256字节不够

需外加一片数据存储器

本读写器中使用的是华邦的W24257S

其有32KB存储容量

IC接口部分的主要芯片为Philips的TDA8007

  

  4 IC卡接口芯片应用  

  下面介绍一下TDA8007及其应用

TDA8007的原理结构如图3所示

  

  TDA8007芯片能够提供两个能同时满足ISO7816标准及EMV和GSM11-11标准的IC卡读写接口

在本读写器中

一个用于与应用IC通信

另一个用于与安全IC卡通信

与上文CPU卡的触点图相对应

CLKi、RSTi、VCCi、I/Oi、GNDCi、PRESi、C4i、C8i(其中i=1,2;C4i、C8i未用;PRESi可用于检测IC卡是否插入

具体应用可参看TDA8007的技术文档)都直接由TDA8007提供给IC卡接口相连

MCU只需通过其接口控制并行通信来管理TDA8007

便可实现对IC卡的上电、下电及读写数据处理

其中

微处理器既可以通过总线复用把TDA8007内部的所有寄存器作为外部存储器

用MOVX寻址

也可以通过非总线复用方式访问

此时TDA8007用AD0~AD3来区分内部各寄存器

另外

TDA8007的片选信号和外部中断信号线可以方便读写器处理多个IC卡头

TDA8007的特别硬件ESD处理、接口短路处理、电源出错处理等也给IC卡和IC卡读写器提供了比较高的安全保护;同时

TDA8007内部集成的电源管理功能允许TDA8007的供电范围可达2.7~6.0V

并且TDA8007通过电源管理可以给IC卡提供5.0V、3.0V及1.8V的电源

以适合不同工作电压的IC卡应用

图3 IC卡接口芯片TDA8007的原理框图

本读写器是通过总线复用对TDA8007的寄存器进行控制的

其中MCU的P1.5为TDA8007的片选

P0口为与之通信的8位数据线

TDA8007的各寄存器预先被宏定义的成微处理器的一个外部数据单元(下面电程序处的定义)

从而方便MCU访问

下面结合TDA8007寄存

器的定义和位分配

给出应用TDA8007接口芯片对IC卡进行上电激活和下电的程序

TDA8007的寄存器主要三类

第一类

通用寄存器:①卡槽选择CSR;②硬件状态HSR;③定时器TOR1、TOR2、TOR3

第二类

ISO7816串行处理寄存器:①串行状态USR;②混合状态MSR;③串行发送UTR;④串行接收URR;⑤队列控制FCR

第三类

卡专属寄存器:①可编程分频PDR;②保护时间GTR;③串行控制UCR1、UCR2;④时钟配置CCR;⑤上电控制PCR

注意:对于卡专属的寄存器

即卡接口1、卡接口2分别对应的寄存器

逻辑上具有相同的名及访问地址

因而

对不同的瞳操作

需要通过CSR选择对应的卡槽来切换卡专卡属寄存器的映射的物理空间

所以

接口设备每次从一个卡的上下电或读写转向另一卡

都需要访CSR设定对应的卡槽

对于每个寄存器的位定义不再多述

主动性者可参看TDA8007的技术文档

  

  5 上下电过程及具体程序  

  图4为IC卡的上电时序图

要实现之

需对PCR进行写操作

其中START=PCR.0

RSTIN=PCR.2

VUP上升表示激活了TDA8007中的电压转换电路

当START置高时

只要能检测到选定卡槽中的IC卡存在

且没有TDA8007能检测到并在HSR中指示的硬件错误出现

则对应IC卡接口的VCC1或VCC2将能被提供响应的电平(5V、3V或1.8V)

随后对应卡的I/O数据线被置成高状态(Z状态)

给IC卡提供设定的时钟信号

常用为3.5712MHz

大约在START置高108ETU后

RSTIN置高

因为RST为RSTIN的拷贝

则对应卡的RST被置高

然后

用TDA8007提供的定时器TOR3、TOR2设定对ATR(Answer To Request)即复位应答首字节的最大等待时间120ETU(Element Time Unit)

TOC设定定时器工作方式

便开始等待ATR首字节到来后做相应处理

至此

IC卡上电激活工作完成

随后可以根据ATR字节的要求的工作方式对IC卡进行相应的读写处理

具体见上电程序

图4 TDA8007产生满足ISO 7816标准诉IC卡上电激活时序

TDA8007寄存器访问的预定义  

  #include  

  #define XXX XBYTE[0x8000]//XXX表示CSR等各寄存器上电程序如下:  

  P1.5=0; //片选TDA8007  

  CSR&=0xf8;  

  CSR|=ncard; //选择卡

ncard=1,2  

  CSR&=0xf7;  

  CSR|=0xf7;  

  CSR|=0x08; //复位UART的寄存器  

  UCR2&=0xf7; //异步模式

SAN=0  

  CCR&=0xdf; //时钟停止于低电平  

  UCR2|=0x60; //关闭附加中断及收发中断  

  GTR=0xff; //保持时间12ETU  

  If(v==1) //v为函数变量  

  PCR|=0x08; //1.8V卡用  

  else if(v==3)  

  PCR|=0x02; //3V卡用  

  Else  

  PCR&=0xfd; //5V卡用  

  UCR2&=0xfc; //CKU=PSC=0,--31  

  FCR=0x00; //1奇偶校验1FIFO  

  PDR=0x0c; //Divider=12

  

  CCR=0x00; //不分频  

  PCR&=0xfb; //RSTIN=0  

  UCR2|=0x04; //不自动转换  

  UCR1=0x01; //正向约定  

  UCR1&=0xf7; //接收模式  

  flag3=0; //复位定时标志  

  flagatr=0; //接收ATR首字节定时标志  

  PCR|=0x01; //激活  

  TOR2=0x6c;  

  TOR3=0x00;  

  TOC=0x61; //RST拉高前等待108ETU  

  while(flag3==0); //定时时间到

在中断中设置flag3=1  

  TOC=0x00; //关闭定时器  

  PCR|=0x04; //给复位拉高  

  TOR2=0x78;  

  TOR3=0x00;  

  TOC=0x61; //RST拉高前等待  

  flagatr=1;  

  ATR(); //复位应答处理函数  

图5为IC卡的下电时序图

相对于上电时序

下电过程对时间的要求不是很严格

只要设计者控制TDA8007按照一定的顺序置低START、RSTIN和停止CLK即可

然后TDA8007会自动逐步释放RST、I/O、Vcc及VUP

具体处理见下电程序

  

  下电程序:  

  P15=0;  

  PCR&=0xfe; //START=0;下电  

  PCR&=0xfb; //卡的复位脚保持0  

  CCR&=0xdf; //停止时钟于低  

  CCR|=0x10; //停止时钟  

P15=1;

6 使用TDA8007应当注意的问题  

  TDA8007对于Vcc、RST出错

芯片过热(如图IC卡为电源短路卡或金属片)

或IC卡插入拔出时都会产生中断输出

每次中断处理结束

应注意把HSR中的值读入一个临时地址

以便清楚HSR中的标志

  

  每次发送数据到IC前

即接收IC卡的最后一个数据之前

应设置寄存器UCR1中的LCT位

以便接收完IC卡的数据后

自动切换成发送状态

  

  对TDA8007部分布线时应注意

时钟信号线与其它线的隔离:最好被地线包围

  

  对于电路板上TDA8007部分的电容应尽量靠近TDA8007

其中电容Cap、Cbp、Cup尤其如此

并最好不要在这些电容连向TDA8007引脚过程中使用过孔;同时

Cap、Cup、Cbp电容的ESR要尽量小

  

  对TDA8007处理的两个IC卡座中的任何一个执行上电、下电、读写卡操作之前

必须执行选择卡座的操作函数

以便选中具体的IC卡进行处理

  

  对IC卡操作中上电时序中的定时

读写卡字节间等待定时等都可使用TDA8007中的定时器及定时控制器操作

注意其定时器为向下计数方式

  

  结语  

  本文主要从CPU IC卡的T=0的协议出发

介绍此类IC读写器设计的一些技术问题

值得指出的是

T=0协议仅仅是IC卡与外界数据交换的一种传输协议

只要在软件上适当修改并利用接口芯片TDA8007突出的处理能力

本读写器完全可以实现对其它ISO7816卡、EMV、GSM`11-11卡的读写

文档

IC卡接口芯片TDA8007的读写器设计

自己收集整理的错误在所难免仅供参考交流如有错误请指正!谢谢IC卡接口芯片TDA8007的读写器设计作者:罗勇进路林吉2004-5-20摘要:阐述T=0传输协议给出IC卡读写器中使用的IC卡APDU指令流程和原理框图;重点介绍其中的IC卡接口芯片Philips的TDA8007给出通过TDA8007对CPUIC卡上下电过程、具体程序及TDA8007使用中应注意的问题IC卡(IntegratedCircuitcard)即集成电路卡是将一个集成电路芯片镶嵌于朔料基片中封装成卡的形式外形与常用的覆盖磁条
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top