IC卡读写模块(精选4篇)
IC卡读写模块 篇1
0 引 言
经过多年的发展和推广, IC卡已经广泛地应用于金融、电信、国防和公共事业等领域。
IC卡按卡与外界数据传送的形式来分, 有接触式IC卡和非接触式IC卡两种。当前使用广泛的是接触型IC卡, 在这种卡片上, IC芯片有8个触点可与外界接触。非接触式IC卡又称射频卡 (Radio Frequency card) , 它与读卡设备之间无需接触, 采用无线耦合和电磁感应方式与读卡设备之间进行通信[1]。与接触式IC卡和磁卡相比, 非接触式IC卡具有操作方便、读写卡的速度快、防水、防污染、寿命长、能够适应各种恶劣环境等优点。按照工作频率, 非接触式IC卡可以分为低频卡和高频卡两类, 低频卡的工作频率为125 kHz, 高频卡的工作频率为13.56 MHz。兼容ISO14443A的非接触式IC卡的工作频率为13.56 MHz, 卡内无需电池, 其工作电源由空间电磁感应所产生的感应电池提供[2]。Philips公司的Mifare系列非接触式IC卡兼容ISO14443A规范, 具有高强度加密机制, 性能优良, 应用广泛[3]。
读写器是所有IC卡应用系统的必须基础设备, 目前市场上的绝大多数读写器都要与PC机连接才能正常使用, 而且与PC机的接口一般为传统的RS 232接口。在此将讨论采用USB技术的便携式非接触式IC卡读写器的实现方法。
1 便携式USB读写器的硬件原理
这里所设计的便携式带USB接口的IC卡读写器由微控制器 (MCU) 、射频发射和接收处理单元、USB接口电路、电源电路、液晶显示 (LCD) 模块、实时时钟以及外部Flash存储器组成。它的结构如图1所示。
读写器以8位单片机AT89S52作为主控制单元。
读写器的射频 (Radio Frequency) 发射和接收处理单元是单片机与非接触式IC卡之间的“桥梁”, 它一方面可以将单片机发送给IC卡的指令和数据调制在13.56 MHz的振荡信号上, 通过高频天线发射出去;另一方面接收来自IC卡的应答信息, 并将其解调成数字信号传送给单片机, 实现单片机与IC卡之间的双向通信, 它与单片机之间采用并行接口方式连接。
FT245BM是USB接口单元的主要元件, 它是单片机与PC机之间的通信“桥梁”, 其内部包含一个串行接口引擎 (SIE) , 实现数据的并行转串行和串行转并行过程[4]。
DS12C887为系统提供实时时钟, 液晶显示模块HY12864E平时显示时间, 读卡时显示所读到的内容。
上述元器件以周密的逻辑设计配合, 通过程序控制完成对非接触式IC卡的读写。
由于内置了锂离子电池及其充电电路, 因此读写器可以脱机使用, 大大增加了灵活性。脱机使用时, 读卡的同时将读卡记录存储在读写器的闪存中。并可以通过USB接口与PC机进行通信, 以进行PC机对读写器的控制操作, 如发送数据到IC卡、调阅读卡记录等。
2 读写器的硬件电路
2.1 微控制器
微控制器采用AT89S52芯片, 该器件使用Atmel公司的高密度非易失性存储器制造技术, 可以通过一根并口线方便地进行在系统编程 (In System Programming) [5]。
2.2 RC500芯片介绍
RC500是Philips公司为Mifare卡设计的专用读卡芯片, 它是应用于13.56 MHz非接触式通信中高集成度IC系列中的一员。该系列利用先进的调制和解调概念, 完全集成了在13.56 MHz下所有类型的被动非接触式通信方式和协议。
并行微控制器接口自动检测连接的8位并行接口的类型, 它包含一个易用的双向FIFO缓冲区和一个可配置的中断输出。这样就为连接各种MCU提供了很大的灵活性。数据处理部分执行数据的并行-串行转换。它支持的帧包括CRC和奇偶校验, 以完全透明的方式进行操作, 因而支持ISO14443A的所有层。状态和控制部分允许对器件进行配置以适应环境的影响, 并使性能调节到最佳状态。当与MIFARE Standard产品和MIFARE产品通信时, 使用高速CRYPTO1流密码单元和一个可靠的非易失性密钥存储器。模拟电路包含一个具有极低阻抗桥驱动器输出的发送部分。接收器可以检测到并解码非常弱的应答信号。
RC500的工作频率为13.56 MHz, 它可以在有效的发射空间内形成一个13.56 MHz的交流电磁场, 为处于发射区域的非接触式IC卡提供能量, 同时卡或RC500需要传送的数据信息也被调制在这个频率上[6]。RC500与非接触式IC卡之间能量的传递和数据双向传输的过程是初级和次级两个线圈之间的耦合过程, 从读写器发射给卡的数据信息在调制前采用米勒 (Miller) 编码, 而从卡到读写器的数据信息采用曼彻斯特 (Manchester) 编码。
2.3 FT245BM芯片介绍
FT245BM是一种单片的USB到并行的双向接口芯片。它与单片机之间利用8个双向数据线和4个握手协议实现并行接口。其片内的串行接口引擎和USB协议引擎可以完成USB 2.0规范的所有协议和功能。FT245BM工作时需要一个6 MHz外部晶振, 通过片内的时钟倍频电路可以为SIE提供一个48 MHz的工作时钟, 同时还为片内的微控制器接口单元、串行存储器接口单元提供一个12 MHz的工作时钟。
2.4 硬件电路
带USB接口的非接触式IC卡读写器的硬件电路原理图的主体部分如图3所示。
FT245BM的并行数据总线和AT89S52的P0口相连;它的读写控制信号undefined分别与AT89S52的P3.0和P3.1相连;undefined为发送缓冲区空信号, 与P3.4相连;undefined为接收缓冲区满信号, 与P3.5相连。要从读写器发送数据到PC机, 只需当undefined为低时将WR由高变低即可将数据写入缓冲区, 模块可以自动处理。当PC机通过USB向读写器发送数据时, undefined会变低通知单片机有数据要接收, 通过将undefined由低变高即可读到数据。单片机可以通过中断方式接收来自FT245BM的数据, 由于两个外部中断都被占用, 所以用定时/计数器扩展了一个INT接口[7]。FT245BM的外部连接一个串行的E2PROM (93C46) , 用于存放USB器件标识码、读写器标识符和说明、设备序列号等信息。
RC500内部包含256个可寻址寄存器, 其数据总线与AT89S52的数据总线相连;其复位控制输入信号与AT89S52的P1.6相连, 单片机可以控制RC500复位[8];RC500的输出中断请求与单片机的外部中断INT1相连, 以随时接收RC500传过来的数据。
3 软件的实现
3.1 读写器中单片机的软件
读写器内软件的功能包括等待刷卡、接收并处理接收到的PC传来的数据包、存储刷卡记录、LCD显示相关信息等。软件包括主程序、IC卡读写/密码验证等操作、时间显示以及与PC通信中断服务程序[9]。
主程序和通信中断服务程序的流程图如图4所示。
3.2 PC端的软件
读写器通过USB接口与PC相连, PC端必须安装并运行FT245BM的驱动程序和读写器应用程序。
通过使用FTDI公司提供的虚拟串口驱动程序, 对应用程序, 外设看起来如同一个标准的COM口[10]。设置波特率的命令可以忽略, 因为无论波特率如何设定, 设备总是以它所能达到的最大速度进行传输。同时无需关心USB接口的枚举、端点、管道、事务和传输方式等复杂的问题。
4 结 语
该系统结构简单实用, 在实际运行中具有很高的可靠性, 同时具备一定的可扩展性, 并可以通过USB接口与计算机相连接, 以进行数据通信。由于体积小, 重量轻, 具有很好的便携性, 扩大了其使用范围。在此实现了可脱机使用的便携式的非接触式IC卡读写器。
参考文献
[1]王爱英.智能卡技术IC卡[M].北京:清华大学出版社, 2005.
[2]曹乃森, 孙亚伟.无线射频卡的原理与应用[J].电子技术, 2009 (1) :31-33.
[3]王香和.非接触式IC卡分类及特点分析[J].电子与电脑, 2007 (06) :97-98.
[4][美]Ludwig R.射频电路设计理论与应用[M].北京:电子工业出版社, 2002.
[5]萧世文.USB 2.0硬件设计[M].北京:清华大学出版社, 2006.
[6]何立民.单片机高级教程应用与设计[M].2版.北京:北京航空航天大学出版社, 2007.
[7]Philips Semiconductors.MF RC500-Highly IntegratedISO14443A Read IC[Z].2001.
[8]彭小峰, 张里.基于非接触式IC卡的考勤管理信息系统设计[J].重庆工学院学报:自然科学版, 2008 (10) :161-165.
[9]曾统一, 靳斌.一种基于Mifare卡的射频读写器的设计与实现[J].微计算机信息, 2008 (24) :293-294.
[10]位永辉, 刘笃仁.基于MFRC500的非接触式IC卡读写器设计[J].新特器件应用, 2007 (5) :1-4.
IC卡读写模块 篇2
摘要:详细介绍PIC单片机使用SPI方式与IC卡进行数据传输的原理和电路设计,以及使用USART方式与PC机进行串行异步通信的工作原理;介绍PIC单片机听SPI方式和USART方式的设置方法。关键词:PIC单片机 IC卡读写器 SPI方式 USART方式
引言
本设计的主要目的是介绍IC卡的数据存储技术和IC卡的数据通信,因而使用存储器卡。由于本设计中既可与IC卡进行串行同步通信,又要与上位机进行中行异步通信,因而需要选择一种同时具有这两种通信方式的单片机。因为PIC16F877不仅具有本设计所需要的两种通信方式,而且还具有运行速度快、低功耗、价格低等优点,所以选择PIC16F877单片机作为本设计的单片机。
图1是本设计的电路图,图中电源变换电路和发光二极管等指示电路没有画出。图中的二极管电路是单片机与IC卡通信数据线的保护电路。当数据线上的电压为负电压时,与地相连的二极管导通;当数据线上的电压大于+5V时,与+5V相连的二极管导通,从而保证数据线上的电压在0V~+5V之间,保护单片机和IC卡不受损坏。图中单片机的15脚和23脚分别与IC卡的输出引脚3和4相连。由于IC卡的输出电压为CMOS电平,而单片机能够正确的识别IC卡的输出信号,需要加上拉电阻。
1 SPI工作方式
串行外围设备接口SPI(Serial Peripheral Interface)总线技术是Motrola公司推出的一种同步串行接口。SPI总线是一种三线同步总线,因其硬件能力很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其它事务,因此得到广泛应用。
SPI模式允许8位数据同步发送和接收,支持SPI的.所有四种方式。SPI模式传输数据需要四根信号线:串行数据输出(SDO)线、串行数据输入(SDI)线、串行时钟(SCK)和从选择(SS)。其中,从选择线只用于从属模式。
1.1 SPI主模式
由于控制时钟SCK的输出,主模式可以在任何时候开始传输数据。主模式通过软件协议控制从模式的数据输出。
在主模式中,一旦SSPUF寄存器写入,数据就会发送或接收。在接收数据时,SSPSR寄存器按照时钟速率移位,一旦接收到一个字节,数据就传输到SSPBUF,同时中断标志位和状态标志位置位。
时钟的极性可以通过编程改变。在主模式中,时钟SCK的频率可以设置为:fosc/4(即Tcy)、fosc/16(即4Tcy)、fosc/64(即16Tcy)和定时器2(Timer2)输出的二分频等四种。在芯片时钟为20MHz时,SCK的最大频率为5.0MHz。
在本设计中,使用的就是SPI主模式,由单片机控制时钟SCK的输出。当向IC卡中写数据时,随时可以发送数据;当读IC卡内的数据时,先要发送任意一个数据(此时IC卡不处于写入状态,不会接收该数据), 给IC卡提供输出数据的时钟,然后再接收IC卡发出的数据。其时序如图2所示。(发送和接惦的数据均为6FH)
如果要连续发送数据,那么每次将数
IC卡读写模块 篇3
关键词:89C51单片机,IC卡读写器,UART接口
0 引言
IC卡是集成电路卡 (Integrted Circuit Card) 的简称, 目前在各行各业得到了广泛的应用。
本文采用单片机作为控制核心, 对接触式IC卡芯片进行读写操作, 并可以通过RS232接口和上位计算机进行通信, 把卡内数据传到计算机内或是把计算机的数据存储到IC卡中。
1 接触式IC卡的基本原理
接触式IC卡是通过触点与外界的接触实现电气连接进行数据的读写, 适用于用卡次数不多且环境较好的场合。接口电路简单, 成本低廉而且其读写器的制造成本较低。
IC卡接口电路作为IC卡与IFD内的CPU进行通信的唯一通道, 为保证通信和数据交换的安全与可靠, 本文基于存储IC卡AT24C01为例进行介绍。
1) AT24C01的写操作
写操作分为字节写和页面写两种操作, 对于页面写根据芯片的一次装载的字节不同有所不同。
2) AT24C01的读操作
读操作有3种基本操作:当前地址读、随机读和顺序读。最常见的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心“。为了结束读操作, 主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。AT24C01片内地址在接收到每一个数据字节地址后自动加1, 故装载一页以内规定数据字节时, 只须输入首地址, 若装载字节多于规定的最多字节数, 数据地址将“上卷”, 前面的数据被覆盖;连续读操作时为了指定首地址, 需要两个伪字节写来给定器件地址和片内地址, 重复一次启动信号和器件地址 (读) , 就可读出该地址的数据。由于伪字节写中并未执行写操作, 地址没有加1。以后每读取一个字节, 地址自动加1。在读操作中接收器接收到最后一个数据字节后不返回肯定应答 (保持SDA高电平) 随后发停止信号。
2 UART接口简介
UART (Universal Asynchronous Receiver/Transmitter) 通用异步收发器是用于控制计算机与串行设备的芯片。通过RS-232C数据终端设备接口, 计算机将由计算机内部传送过来的并行数据转换为输出的串行数据流;将计算机外部来的串行数据转换为字节, 供计算机内部使用并行数据的器件使用。并且在输出的串行数据流中加入奇偶校验位, 并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记, 并从接收数据流中删除启停标记。
UART工作原理就是将传输数据的每个字符一位接一位地传输。
起始位:先发出一个逻辑”0”的信号, 表示传输字符的开始。
数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等, 构成一个字符。通常采用ASCII码。从最低位开始传送, 靠时钟定位。
奇偶校验位:资料位加上这一位后, 使得“1”的位数应为偶数 (偶校验) 或奇数 (奇校验) , 以此来校验资料传送的正确性。
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
空闲位:处于逻辑“1”状态, 表示当前线路上没有资料传送。
波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/s, 而每一个字符为10位, 则其传送的波特率为10×120=1200字符/s=1200波特。
3 IC卡读写器的硬件设计
本文所设计的IC卡读写器采用单片机AT89C51及其外部接口实现, 主要包括控制部分、读卡部分、上位机通讯部分、复位部分和电源部分, 采用AT89C51的P1.0~3作为读卡信号线, 其中P1.0与AT24C01的SCL相连, 作为时钟信号线, P1.1与AT24C01上行数据线相连, P1.2与AT24C01下行数据线相连, P1.3与C1相连, 用于实时监测是否有卡插入, P1.4~7与看门狗电路的X5045相连, 负责AT89C51与看门狗电路的通信。
控制部分主要负责读取IC卡中的数据, 进行分析处理, 存储在自身的RAM中或是通过RS232传送到上位机进行存储。控制部分的主要芯片为AT89C51, 它提供了8K字节Flash闪存存储器, 256字节内部RAM, 32个I/O端口线, 3个16位定时/计数器, 一个6向量两级中断结构, 一个全双工串行通讯口, 片内振荡器及时钟电路。
读卡部分根据控制部分的控制信号, 对IC卡进行读或写操作, 并可实时监测IC卡的插入或是拔出。并将读出的数据通过驱动电路7407传送到控制电路或将控制电路所传送的数据写入IC卡。
上位机通讯部分的主要功能是与上位机通讯, 将IC卡中的数据传送到上位机中或是将上位机中的数据存储到IC卡中。由于AT89C51的电平为0V~5V, 无法和上位计算机直接相连, 必须同转换芯片MAX232将电平转换为-5~+5, 可以和计算机进行通讯。
复位部分的主要功能是防止单片机程序死机。在IC卡读写器工作时, 由于出现的一些意外的原因, 程序不能正常运行而进入死循环, 这时需要对单片机进行复位, 让其从新开始工作。
电源部分主要为整个IC电路提供电能, 7805负责将输入的+12V直流转化为稳定的+5V电流, 电源部分的主要芯片为7805为12V直流输入, 5V直流输出的稳压器件, S为两相12V直流电源输入端接外部电源, SW为电源开关, LED1为电源指示灯, C1~C3为7805的稳压电容。
4 程序设计
软件程序采用模块化设计方式, 主要包括上位机和下位机, 上位机为计算机, 采用VB完成串行通讯, 下位机为读卡器的AT89C51, 采用C语言完成串行通讯, 如图1所示。
5 结论
经过调试, 本设计能够在上电后独立的运行程序, 并能在PC机软件的控制下, 实现对IC卡中任意位置的读写, 其中读写的起始地址、读写数据的个数以及数据内容可以在PC机端输入或选择。
参考文献
[1]于微波, 林晓梅, 刘俊萍.微型机算计控制系统[M].吉林人民出版社, 2002, 5.
[2]何立民.单片机应用系统设计[M].北京航空航天大学出版社, 1990.
IC卡读写模块 篇4
1.1 TDA8020HL是Philips公司生产的一款能够读写符合ISO7816-3 T=0、T=1标准的IC卡,也支持符合EMV3.1.1(Europay,MasterCard,VISA)标准的卡的专用接口芯片。系统CPU通过I2C总线向TDA8020HL发送命令和回读其状态。通过TDA8020HL的I/Ou C口向IC卡发送和接收数据。能够支持两个不同地址的智能IC卡,其地址由2个地址选择引脚组合来决定,共有四种地址组合。
TDA8020HL既支持5V卡(A类卡)也支持3V卡(B类卡),电压范围比较宽,从2.7V到6.5V。TDA8020HL向IC卡提供时钟信号。时钟信号的频率应符合:A类卡,时钟应在1~5MHz;B类卡,时钟应在1~4MHz。IC卡接口触点ESD保护可达6KV,系统CPU通过I2C总线来控制TDA8020H L。下面是TDA8020HL的框图(见图1):
1.2 ISO7816标准中规定对卡的激活和释放,有很严格的时序要求。TDA8020HL是符合ISO7816标准的读写卡的专用芯片,对卡的激活和释放过程如下:
(1)激活过程
当卡在激活前,VCC,CLK,RST,I/O处于低电平状态。
在t0时刻TDA8020HL的振荡器一定要升频;
在t1时刻TDA8020HL的内部直流转换器启动;
在t2时刻打开IC卡的电源VCC(5V或3V)并以0.14V/u S开始上升;
在t3时刻IC卡的I/O电平稳定到VCC;
在t4时刻IC卡的CLK开始加载,RST复位开始;
如果在42100个CLK内,IC卡没有应答,在t5时刻RST返回高电平。
(2)释放过程
当信息交换结束时,系统CPU复位START//STOP到低电平,开始IC卡的释放过程。
在t11时刻IC卡的RST置为低电平;
在t12时刻IC卡的CLK停振;
在t13时刻将I/O置为低电平;
在t14时刻释放VCC;
在t15时刻将TDA8020HL的内部直流转换器关闭;
TDA8020HL的振荡器做降频处理。
2 TDA8020HL的应用
2.1 TDA8020HL应用的硬件设计
下面是TDA8020H L与32位嵌入式ARM系统的接口电路设计,如图2:
图中,ARM系统通过I2C总线与TDA8020HL连接。TDA8020HL管理两个IC卡,分别是IC_CARD1和IC_CARD2,TDA8020HL的输入时钟由有源晶振3.5795MHz供给。ARM系统通过I2C总线向TDA8020HL发送命令和回读其状态,两个卡的数据通道分别通过ARM系统的GPIO口GPF2、GPF3与TDA8020HL的I/O1u C、I/O2u C来传递。通过两个数字三极管及常开卡座组成一个自动识检测卡插入的电路。
2.2 TDA8020HL的软件设计
2.2.1 向TDA8020HL发送命令的格式
ARM系统通过I2C总线向TDA8020HL发送命令控制字0x E3H(选择冷复位,5V卡,对输入时钟不分频,I/O与I/Ou C连接)初始化IC_CARD1(I2C地址:0x40H)和IC_CARD2(I2C地址:0x48H)。
2.2.2 回读TDA8020HL的状态的格式
ARM系统通过I2C总线分别从TDA8020HL回读IC_CARD1(地址:0x41H)和IC_CARD2(地址:0x49H)的状态字,以便了解IC_CARD1和IC_CARD2的状态。
当检测到卡插入后,给卡加载5V电源,CLK,复位开始,进入卡的激活过程。
2.2.3 ARM系统与卡数据交换
当卡被激活后,ARM系统就可以通过GPIO口GPF2、GPF3与TDA8020HL的I/O1u C、I/O2u C数据通道分别与IC_CARD1和IC_CARD2进行数据交换。当过载、过热、卡被拔出等TDA8020HL都会产生一个中断信号并通知ARM系统,ARM系统就会对这个异常作出处理。
在应用TDA8020HL时笔者认为有两点值得大家注意:第一,系统处理器与卡进行数据交换的通道是通过I/Ou C完成而不是I2C总线。由于TDA8020HL的数据手册关于这一点讲的很少,使得初次使用TDA8020HL时易犯错;第二,TDA8020HL为卡提供的电源VCC有时会有几百豪伏的纹波,无法正常使用,最好进行滤波处理。
总之,IC卡读写芯片从接口方式分有并行、串行、I2C总线三种通信方式,但从其性能上看同时能满足A类卡和B类卡,又具有高达6KV的ESD和过载保护的功能,又符合ISO7816的标准,对于一个具有I2C总线接口的ARM系统来讲,TDA8020HL的确是设计者一个不错的选择。
摘要:介绍了Philips公司的一款I2C总线通信方式读写IC卡的专用芯片TDA8020HL,它的工作原理以及其在ARM系统中的应用和实际应用时的注意事项。
关键词:ISO7816,I2C总线,TDA8020HL,ARM
参考文献
[1]TDA8020HL Data Sheet[Z].2002.