1非接触式IC卡工作原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.非接触式IC卡工作原理

非接触式IC卡可用以存储数字、字母编码信息,具有智能读写和加密通信的功能,卡中存储的需要识别、交互的数据可以随时写入、更改或擦除。它通过无线电波与读写设备进行数据交换,不需要电气触点,读写频率高。卡中的集成电路除了带加密逻辑、串行EEPROM (可擦除、可编程只读存储器) 、微处理器CPU外,还带有射频收发及相关电路。无源非接触式IC卡框图如图1 所示。

非接触式IC卡接收射频脉冲,经整流给电容器充电,再经稳压后作为工作电压。数据解调部分从接收到的射频脉冲中解调出数据送到控制逻辑,控制逻辑接受指令完成存储、发送数据或接收读写器的数据。

图1无源非接触式IC卡框图

系统以13. 56MHz的工作频率,半双工方式在读写器与IC卡之间双向传递数据。读写器将要发送的信号,编码后加载在频率为13. 56MHz的载波信号上经天线向外发送,进入读写器工作区域的IC卡接收此脉冲信号,一方面卡内芯片中的射频接口模块由此信号获得电源电压、复位信号、时钟信号;同时卡内芯片中的有关电路对此信号进行调制、解码、解密,然后对命令请求、密码、权限等进行判断,若为读命令,控制逻辑电路则从存储器中读取有关信息,经加密、编码、调制后经卡内天线发送给读写器,读写器对接收到的信号进行解调、解码、解密后送至后台计算机处理。若为修改信息的写命令,有关控制逻辑引起的内部电荷泵提升工作电压,提供擦写EEPROM时所需的高压,以便对EEPROM 中的内容进行改写。若经判断其对应的密码和权限不符,则返回出错信息与接触式IC卡相比较。

2.射频卡读写器硬件设计

系统工作前,通过读写器中的写卡功能对所有的IC卡写入指定的数据,在正式的工作中,由读写卡模块的读卡功能将放入感应区的IC卡中的数据读出,并将数据传输到微处理器中,然后再由微处理器通过对比判断读卡模块上传的数据是否正确,最后根据微处理器得出的结果决定是否开门。系统的原理框图如图2所示。

图2系统原理图

2. 1读写卡模块

IC卡读写模块中采用的芯片是MF RC500,它的并行微控制器接口自动检测连接的8 位并行接口的类型,它包含一个易用的双向F IFO 缓冲区和一个可配置的中断输出,这样就为连接各种MCU 提供了很大的灵活性,即使使用非常低成本的器件也能满足高速非接触式通信的要求。

数据处理部分执行数据的并行串行转换,它支持的帧包括CRC和奇偶校验,它以完全透明的模式进行操作,因而支持ISO14443A的所有层,状态和控制部分允许对器件进行配置以适应环境的影响并使性能调节到最佳状态,当与M I2FARE Standard 和M IFARE 产品通信时, 使用高速CRYPTO1 流密码单元和一个可靠的非易失性密匙存储器。模拟电路包含了一个具有非常低阻抗桥驱动器输出的发送部分使得最大操作距离可达100mm。接收器可以检测到并解码非常弱的应答信号,由于所采用的接收器已不再是限制操作距离的因素,在此使用的IC卡读写模块具有比较大的科学先进性,比以往使用的ID卡系统拥有更高的性能。

2. 2微处理器模块

在微处理器上采用了AT89C51单片机为处理芯片。由于系统中IC卡方面的功能已经可以用RC500处理,处理器只负责对读写器的读写和外部通讯,所以此单片机完全符合上述功能。微处理器的P0口连接读写卡模块的一些控制信号端口,P1口连接读写卡模块的数据和地址端口。在单机连接使用时可直接使用微处理器的串口,如果是多机连接时,可再加入串口转RS485模块,这样对每一个使用的系统进行编号处理就构成了多机的联机使用状态,。

3.射频卡读写器软件设计

在系统的主程序流程图中主要画出的是微控制器的程序流程,而加密算法作为一个子程序嵌入到主程序当中。在此系统中,微控制器中的程序使用的是C语言,但在编写数据加密系统中使用的是专用的编写程序。由于两种编程语言使用的并不是相同的语言,如何将两种语言在同一系统中体现出各自的功能是本系统软件编写的重点和难点。本系统主程序流程图如图3所示。

图3主程序流程图

3. 1微控制器软件设计

此模块中的设计主要是IC卡模块与微控制器之间的通讯设计。其中重要的是密码的写入与读写的操作过程。以下便是本模块的部分原始程序。装载密码的应用程序: uint8 PCDLoadKey ( uint8 KEYAB, uint8 SecNr, uint8 3

Key)

{

uint8 Status;

SerBfr[CMDTYPE ] = 1;

/ /对IC卡存储芯片写时续操作

SerBfr[COMMAND ] = ′E′;

/ /定义数据长度

SerBfr[LENGTH ] = 8;

/ /写入卡的密码数据

SerBfr[DATA ] = KEYAB;

/ /进行加密操作

SerBfr[DATA + 1 ] = SecNr;

memcopy(&SerBfr[DA TA + 2 ] , Key, 6) ;

/ /对写入的数据进行验证

Status =R500_Cmd ( SlvAddr) ;

if ( Status = =OK)

{ / /判断加密操作

Status = SerBfr[ STATUS];

}

return Status;

}

写读卡芯片寄存器的应用程序:

uint8 PCDWriteReg( uint8 RegAddr, uint8 RegValue) {

uint8 Status;

SerBfr[CMDTYPE ] = 1;

/ /对IC卡存储芯片写时续操作

SerBfr[COMMAND ] = ′F′;

/ /定义数据长度

SerBfr[LENGTH ] = 2;

/ /定义写数据的地址

SerBfr[DATA ] =RegAddr;

/ /调整地址

SerBfr[DATA + 1 ] =RegValue;

/ /调用写数据程序

Status =R500_Cmd ( SlvAddr) ;

if ( Status = =OK)

{ / /验证数据正确性

Status = SerBfr[ STATUS];

}

return Status;

}

读读卡芯片寄存器的应用程序:

uint8 PCDReadReg( uint8 RegAddr, uint8 3 RegV alue) {

uint8 Status;

SerBfr[CMDTYPE ] = 1;

/ /对IC卡存储芯片写时续操作

SerBfr[COMMAND ] = ′G′;

/ /定义数据长度

SerBfr[LENGTH ] = 1;

/ /定义读数据的地址

SerBfr[DATA ] =RegAddr;

/ /调用读数据程序

Status =R500_Cmd ( SlvAddr) ;

if ( Status = =OK)

{

Status = SerBfr[ STATUS];

if ( Status = =OK)

/ /验证数据正确性

3 RegValue = SerBfr[DATA ];

}

return Status;

}

相关文档
最新文档