您当前的位置:五五电子网电子知识通信技术射频技术-RFID基于AT89C51非接触IC卡读写系统的设计 正文
基于AT89C51非接触IC卡读写系统的设计

基于AT89C51非接触IC卡读写系统的设计

点击数:7696 次   录入时间:03-04 11:46:43   整理:http://www.55dianzi.com   射频技术-RFID

  非接触IC卡,诞生于90年代初期,具有使用方便快捷、不易损坏的特点。与磁卡和接触式IC卡相比,非接触IC卡与读写设备无电路接触,通过射频电磁感应电路从读写设备获取能量和交换数据,读写操作只需将卡片放在读写器附近一定距离之内就能实现数据交换。
  
  Philips公司的Mifare技术是当今世界上非接触式IC智能射频卡中的主流技术,MifarelIC智能射频卡的核心是Philips公司的MifarelICS50系列微晶片,它采用先进的芯片制造工艺制作,内部包括有1KB高速EEPROM、数字控制模块和一个高效率射频天线模块。卡片上无电源,工作时的电源能量由卡片读写器天线发送无线电载波信号耦合到卡片上天线而产生电能,其电压一般可达2V以上,足以满足卡片上IC工作所需。为了保证数据交换的安全可靠,MifarelIC卡还提供了信道检测、防冲突机制、存储数据冗余检验和3次传递认证。
  
  该系统主要由AT89C51、MFRC500、看门狗以及RS-232通信模块组成,MFRC500是应用于13.56MHz非接触式通信中高集成读卡IC系列中的一员,系统的工作方式是先由AT89C51控制MFRC500驱动天线对Mifare卡进行读写操作,然后与PC机之间进行通信,并把数据传给上位机。
  
  下图所示是基于MFRC500的非接触式IC卡读写器的系统结构框图。
  

基于MFRC500的非接触式IC卡读写器的系统结构框图

  1.非接触IC卡与读卡器的通信过程
  
  
  非接触式IC卡与读卡器的交易过程,实际上就是IC卡和读卡器之间的数据交换和对IC卡内EEPROM存储器中的数据进行处理的过程。在数据交换过程中,为了确保卡和读卡器之间数据的同步及数据能被正确接收、识别,需要建立系统的通信协议。在交易的过程中,非接触式lC卡遵守通信协议,根据接收的指令,在有限状态机的控制下执行一个工作过程,从而完成需要的功能。
  
  接下来就分别介绍读卡器与IC卡之间的通信协议、MF RC500的命令集及卡对指令的执行过程。
  
  2.通信协议
  
  非接触式IC卡与读卡器之间采用半双工的通信方式进行通信,使用13.56MHz高频电磁波作为载波,数据以106kbit/s进行传送。
  
  在非接触式IC卡与读卡器之间的异步通信中,采用了起止位同步法的帧结构,有以下3种帧结构。
  
  ·复位请求指令的帧结构:起始位、7个数据位和停止位(不包括奇偶校验位)。
  
  ·标准的帧结构:起始位、n个字符(每个字符为8位数据位还有1位奇偶校验位)和停止位。
  
  ·防冲突指令的帧结构:标准指令结构包括7个字节长度的数据,分为两部分,读卡器传输给IC卡的数据为第一部分,包括一字节的选卡操作码(SEL),一字节的有效位个数(NVB,有效位个数确定其后读卡器发出的卡序列号的数据位的个数)和卡序列号(UID,在0位到40位之间),第一部分数据最小长度为16位,最大长度为55位;IC卡返回给读卡器的数据为第二部分,是IC卡返回的卡序列号(读卡器发出)的剩余部分,第二部分数据最大长度为40位,最小长度为1位。当这两部分以字节为单位分开时,第一部分的最后一位后加一位奇偶校验。
  
  3.MFRC500的命令集
  
  MFRC500的状态由可执行特定功能的命令集决定,这些命令可通过将相应的命令代码写入Command寄存器来启动,处理一个命令所需要的变量和数据主要通过FIFO缓冲区进行交换。
  
  MFRC500的命令集的程序定义代码如下。

MFRC500的命令集的程序定义代码

  4.MFRC500的内部寄存器
  
  MFRC500共有64个寄存器,8个寄存器为一页,每页的第一个寄存器为页寄存器,其地址分别为0x00,0x08,0xl0,0x18,0x20,0x28,0x30,0x38;命令寄存器可用于启动或停止命令执行,通过写入相应命令码至命令寄存器来实现,其所需变量和数据主要由FIFO缓冲器交换。FIFO数据寄存器是内部64字节FIFO缓冲器中的数据输入与输出端口,输入输出数据流在FIFO缓冲器中完成转换,可以并行输入输出。IntetruptRQ寄存器是中断请求标志寄存器,当中断产生时,需要由该寄存器的相关标志位来判断中断的类型。
  
  MFRC500的64个寄存器的程序定义代码如下。

MFRC500的64个寄存器的程序定义代码

MFRC500的64个寄存器的程序定义代码

MFRC500的64个寄存器的程序定义代码

 



www.55dianzi.com

  5.非接触IC卡的指令流程
  
  非接触式IC接收到读卡器的指令后,经过指令译码,在有限状态机的控制下,进行数据处理,并返回相应的处理结果。非接触式IC卡与读卡器之间一个完整的交易过程如下左图所示。
  
  (1)初始化。
  
  系统的初始化包括单片机的初始化和对MFRC500内部寄存器设初值、打开RF场以及X5045复位等操作。
  
  (2)发送Request指令。
  
  Request指令用以通知MFRC500在天线的有效工作范围内寻找Mifarel卡,如有卡在,读写器将与Mifarel卡进行通信,读取卡片内的类型号(两字节),然后由MFRC500传递给单片机识别处理,建立卡片与读写器的第一步通信联络。Request指令分为Requeststd和Requestall两个指令,前者是只读一次,后者是连续性的读卡指令。
  
  (3)防冲撞操作。
  
  当有多张Mifarel卡在读卡器天线的有效工作范围内,必须执行防冲撞操作。读写器将首先与每一张卡片进行通信,取得每一张卡片的系列号,每一张Mifarel卡片都具有其惟一的序列号,决不会相同,读卡器能够根据卡片的序列号选择出一张卡片。该操作读写器得到的返回值为卡的序列号。
  
  (4)选择卡片。
  
  选择被选中卡片的序列号,并返回该卡片的容量代码。
  
  (5)认证操作。
  
  在对卡片某一扇区读写操作之前,程序员必须证明他的读写操作是被允许的。这可以通过选择存储在MFRC500内的RAM中的密码集中的一组密码来进行认证而实现,密码匹配才能被允许对该扇区进行读写操作。
  
  (6)对数据的操作。
  
  对卡的最后操作即是读、写、增值、减值、存储和传送等操作。在每一个加值和减值操  作后面都必须跟随一条Transfer传送指令,这样才能真正地将数据结果传送到卡片上。如果没有传送指令,数据结果仍将保持在数据缓冲寄存器中。
  
  6.系统的主程序
  
  主程序的流程图如下右图所示。

主程序的流程图

  主程序的代码如下:

主程序的代码

主程序的代码

主程序的代码

  注意事项
  
  在硬件电路的设计中,要特别注意天线的选择,包括天线的形状、尺寸和磁通量的计算。
  
  在非接触通信中,为了保证读卡器与卡片之间数据传输完整可靠,可采用以下措施:一是防冲突算法,二是通过1位CRC纠错,三是检查每个字母的奇偶检验位,四是检查位数,五是用编码方式来区分1、O或无信息。
  
  在实际情况中,由于外界环境的干扰信号多呈毛刺状、作用时间很短,因此不能采用多次采集再取平均值等方法来有效滤除干扰,只能是多次检测都一致才行。为有效去除外界干扰对读卡的影响,并达到卡靠近读写器时自动读卡、处理和卡未拿走时只处理一次的目的,设置了卡同步信号连续读对次数与连续读错次数两个计数器以及3个标志位:卡同步读对或读错标志,仅读卡同步信号或同时读卡同步、数据信号标志,卡己处理或未处理一次标志。

 




本文关键字:暂无联系方式射频技术-RFID通信技术 - 射频技术-RFID