打印

单片机与RFID的非接触式读卡器软件设计

[复制链接]
3532|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
galy|  楼主 | 2012-5-12 07:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
http://www.multi-parking.com/foxnews.asp  技术**来源
单片机与RFID的非接触式读卡器软件设计 一、背景
  随着中国物联网热的兴起,人们对物联网的兴趣也极大的增加,各种对物联网应用的研究也逐步展开。所谓“物联网”(Internet of Things),指的是将各种信息传感设备,如射频识别(RFID)装置、红外感应器、全球定位系统、激光扫描器等种种装置与互联网结合起来而形成的一个巨大网络。其目的,是让任何物品都与网络连接在一起,方便识别和管理。 物联网是利用无所不在的网络技术建立起来的。
  其中非常重要且应用得最为广泛的的是RFID技术。RFlD是射频识别技术(Radio Frequency denti-fieation)的英文缩写,又称电子标签,是一项利用射频信号通过空间耦合(交变磁场或电磁场)实现无接触信息传递并通过所传递的信息达到识别目的的技术。RFID具备自动识别的能力,而且能够应用到任何物体上. RFlD又可分为接触式与非接触式两种. 非接触式刷卡方便,安全性能高.故其应用越来越广泛。
  射频识别技术具有很多突出的优点:第一,安全性高。适合于高安全性的终端。数据安全方面除电子标签的密码保护外,数据部分可用一些算法实现安全管理。读写器与标签之间存在相互认证的过程。可实现安全通信和存储,读写器具有不直接对最终用户开放的物理接口,可保证其自身的安全性:第二。可同时识别多个电子标签;第三,四轴飞行器械磨损。寿命长。并可工作于各种油渍、灰尘污染等恶劣的环境;第四,非接触操作,完成识别工作时无需人工干预。应用便利。正是因为具有这些优点,使RFID的应用在近年来如火如荼。为了使复杂的RFID系统简化。笔者设计了基于单片机与MF RC500型读卡器的低成本无源RFID系统。系统外部接口为串口,使得包括PC在内的有串口的设备可以方便地与它相连。对RFID的推广有重要意义。
  二、方案及元器件选择
  本次读卡器的RFID芯片上我选择了Philip公司的mifare技术及其芯片MF RC500, 它目前占据世界非接触式IC卡市场80%的份额,具有方案成熟,价资料全面的优点格低廉。
  随着半导体技术的进步,单片机成为功能越来越强的片上系统SOC,正向小型化,低功耗及模数混合的方向发展,使其在通用小型化系统中成为处理器的首选.而51系列单片机更是其中最为典型,应用最为广泛,最稳定的一系列产品.
  因此,在本次非接触式IC读卡器的设计上我选择了atmel公司生产的89c51单片机.它是一种带4k字节可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。它结构稳定,技术成熟,资料全面,价格低廉.89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
  89c51系列单片机与MF RC500的组合已有许多成熟的方案,资料众多,便于实现 。
  三、系统硬件设计
  1、系统工作概述
  非接触式卡读IC卡器硬件电路包括以下部分:控制器,mifare读写芯片,天线匹配电路,天线,RS232通信电路,分为电路,电源电路,LED状态显示和蜂鸣器驱动电路等。
  RFID标签由耦合元件及电路组成,其发射电波及内部处理器运行所需能量均来自阅读器产生的电磁波。无源标签接收到阅读器发出的电磁波信号后。将部分电磁能量转化为供自己工作的能量。每个电子标签具有全球惟一的识别号(ID),无法修改、无法仿造,保证了安全性。电子标签中保存有约定格式的电子数据。
  天线在标签和阅读器间传递射频信号。即标签的数据信息。
  RFID阅读器是读取(或写入)电子标签信息的设备。阅读器可无接触地读取并识别电子标签中所保存的电子数据。能自动识别物体。阅读器通过网口与计算机相连。将读取的标签信息传送到计算机上。进行下一步处理。
  2、MF RC500的特点
  Philips公司的MF RC500型读卡器是应用于13。56 MHz非接触式通信的高集成读卡IC系列中的一员。该读卡IC系列利用先进的调制和解调概念。完全集成了在13。56 MHz下所有类型的被动非接触式通信方式和协议。MF RC500支持IS014443A所有的层。内部的发送器部分不需要增加有源电路就能够直接驱动近操作距离的天线(可达100 mm):接收器部分提供一个坚固而有效的解调和解码电路,用于IS014443兼容的应答器信号;数字部分处理IS014443A帧和错误检测(奇偶&CRC)。此外,它还支持快速CRYPTOI加密算法,用于验证Mifare系列产品。方便地并行接口可直接连接到任何8位微处理器。给阅读器的设计提供了极大的灵活性。。MF RC500可方便的用于各种基于ISO/IEC 14443A标准并且要求低成本、小尺寸、高性能以及单电源的非接触式通信的应用场合。
  3、MF RCS00的功能
  MF RC500内部包括并行微控制器接口、双向。FIFO缓冲区、中断、数据处理单元、状态控制单元、安全和密码控制单元、模拟电路接口及天线接口。MF RC500的外部接口包括数据总线、地址总线、控制总线(包含读写信号和中断等)和电源等。MF RC500的并行微控制器接口自动检测连接的8位并行接口的类型。它包含一个易用的双向FIFO缓冲区和一个可配置的中断输出,为连接各种MCU提供了很大的灵活性。即使采用成本非常低的器件也能满足高速非接触式通信的要求。数据处理部分执行数据的并行一串行转换。支持的帧包括CRC和奇偶校验。MF RC500以完全透明的模式进行操作。因而支持IS014443A的所有层。状态和控制部分允许对器件进行配置以适应环境的影响,并将性能调节到最佳状态。当与Mifare Standard和Mifare通信时,使用高速CRYPTOI流密码单元和一个可靠的非易失性密匙存储器。模拟电路包含一个具有阻抗非常低的桥驱动器输出的发送部分。这使得最大操作距离可达100 mm。接收器可以检测到并解码非常弱的应答信号。
  根据RFID原理和MF RC500的特性,可设计基于AT89C51和MF RC500的REID阅读器系统。
  系统主要由AT89C51、MF RC500、时钟电路、看门狗、MAX232和矩阵键盘等组成。系统的工作方式是先由。MCU控制MF RC500驱动天线对Mifare卡也就是对应答器(PICC)进行读写操作,然后与PC通信,把数据传给上位机。主控电路采用AT89C51,因为AT89C51的开发简单、快捷。运行稳定。采用ATMEL的AT24C256型。12C总线EEPROM存储系统的数据。为了防止系统“死机”.使用MAX813作为看门狗来实现系统上电复位、按键的热重启及电压检测等。与上位机的通信采用RS一232方式,整个系统由9V电源供电。再由稳压模块7805稳压成5V的电源。
  MF RC500和单片机AT89C51都是采用标准TTL电平,不需电平转换。单片机AT89C51与PC串口电平不匹配。使用MAX232型电平转换器进行电平转换。
  4、系统天线设计
  MF RC500的非接触式天线接口使用4个引脚。
  为了驱动天线,MF RC500通过TXl和TX2提供13。56 MHz的能量载波。根据寄存器的设定对发送数据进行调制来得到发送的信号。S50卡采用RF场的负载调制进行响应。天线拾取的信号经过天线匹配电路送到RX脚。MF RC500的内部接收器对信号进行检测和解调并根据寄存器的设定进行处理。然后数据发送到并行接口。由微控制器进行读取。MF RC500对驱动部分使用单独电源供电。
  一般的天线设计要达到如下要求:
  1)使天线线圈的电流最大,用于产生最大的磁通量;2)功率匹配。以最大程度地利用产生磁通量的可用能量;3)足够的带宽。以便无失真地传送用数据调制的载波信号。天线是有一定负载阻抗的谐振回路。阅读器又具有一定的源阻抗。为了获得最佳性能,必须通过无源的匹配回路将线圈阻抗转换为源阻抗。然后,通过同轴线缆即可无损失且无辐射地将功率从读写器末级传送到匹配电路。
  为了节约成本和减小系统体积。本系统采用PCB板天线设计。品质因数Q是一个很重要的参数。用于电感耦合式射频识别系统的天线,其特征值就是它的谐振频率和品质因数。较高的品质因数值会增加天线线圈中的电流强度,由此改善对RFID卡的功率传送。与之相反,天线的传输带宽刚好与品质因数值成反比例变化,选择的品质因数过高会导致带宽缩小。从而明显地减弱卡片接收到的调制边。品质因数可以通过电感线圈电抗与电阻的比值计算出来,公式:Q=(coaxLm)/RANT
  四、系统软件设计
  1、系统的工作方式
  硬件掉电阶段
  以下三种情况导致系统掉电阶段有效:(1)DVDD引脚电压上升导致上电复位。(2)AVDD引脚电压上升导致上电复位。(3)RSTPD引脚为高电平。
  (1)复位和复位响应
  复位和复位响应是根据ISO/IEC 10536-1标准来进行的, 在操作期间的任意时候都可以复位开始地址计数器随一个时钟脉冲而被设置为零。复位阶段需要512个时钟周期,在复位阶段,一些寄存器由硬件预设。如果使用内部晶振,需要注意他是由AVDD供电,需要一点时间等到晶振稳定。当RST 线从高状态(H)置到低状态(L)时,第一个数据位(LSB)的内容被送到I/O上,若连续输入32个时钟脉冲,主存储器中的前四个字节地址单元中的内容被读出在第33 个始终脉冲的下降沿I/O线被置成高状态而关闭。
  (2)命令模式
  复位响应以后,芯片等待着命令每条命令都以一个启动状态开始整个命令,包括3 个字节随后紧跟着一个附加脉冲,并用一个停止状态来结束操作。
  启动状态:在CLK 为高状态(H 状态)期间I/O 显得下降沿为启动状态。
  停止状态:在CLK 为高状态(H 状态)期间I/O 显得上升沿为停止状态。
  在接受一个命令之后有两种可能的模式输出数据模式(即读数据)和处理数据模式。注:IFD (INTERFACE DEVICE)指接口设备。
  (3)输出模式
  输出数据模式是将IC 卡芯片中的数据传送个外部设备接口(IFD)的一种操作 ,在第一个CLK 脉冲的下降沿之后I/O 线上的第一位数据变为有效,随后每增加一个时钟脉冲芯片内部的一位数据被送到I/O 线上,其传送顺序从每个字节的最低位(LSB)开始。当所需要的最后一个数据送出以后,需要在附加一个时钟脉冲来把I/O 置成高状态以便接受新的命令。在输出数据期间任何启动状态和停止状态均被屏蔽掉。
  (4)读操作
  基站产生固定间隙的射频振荡,并通过控制两个间隙之间的振荡时间对位数据"1"和位数据"0"进行编码,持续地发送位数据流,完成写操作。  
  (5) 时钟特性
  MF RC500包含一个TIMER, TIMER的主要部分是一个自减计数器值不为0,就会在时钟控制下做自减操作。如果AutoRestart置1,则TIMER不会自减到0。当TIMER计数到1时会在下一个时钟自动加载TimerReolad寄存器的值。
  TIMER时钟由芯片13.56 MHz时钟分配得到。由TpreScaler寄存器决定分频数:
  TpreScaler寄存器范围从0到21,对应T从74ns到150ms。从上一个开始时间到目前的时间范围为74ns到40s。
  2、单片机软件设计
  下位机程序主要包括对MF RC500进行初始化、接收上位计算机的指令、控制MF RC500,并且把MF RC500的状态信息反馈给计算机。MCU对Mifare1卡操作的命令主要有空操作、装载密码、验证密码、读卡、写卡和关卡等。无论哪种操作都必须先把命令代码写入到Command寄存器,比如执行验证密码则需要执行WriteRC(RegCommand,0x0c)命令。
  整个系统的工作由对Mifare卡操作和系统后台处理两大部分组成。由于篇幅有限,本文只介绍对Mifare卡操作流程。Mifare卡的操作可以分为以下几项:
  (1)复位请求
  当一张Mifare卡处在读写器的天线的工作范围之内时,复位请求开始工作,并按以下步骤进行操作:
  1)读写器向卡片发出Request all(或Request std)命令。Request all指令是连续性的读卡指令。Request all指令是非连续性的读卡指令,只读一次。
  2)Request all指令在成功地读取一张卡片之后,会一直等待使用者拿走这一张卡片,直到有新一张卡片进入MF的天线有效工作范围之内
  3)卡片的ATR将启动,将卡片Block 0中的卡片类型(TagType)号共2个字节传送给读写器,建立卡片与读写器的第一步通信联络。
  具体代码如下:
  void SerialIRQ() interrupt 4
  {   if(RI){RI=0;
  if(SBUF=='[')//开始接收
  point_in=0;
  else if(!Request all)
  { Request std[point_in]=SBUF;} // 放入缓冲
  (2)反碰撞操作
  如果有多张Mifare卡片处在卡片读写器的天线的工作范围之内时,读卡器将:
  1)与每一张卡片进行通信,取得每一张卡片的系列号。由于每一张Mifare卡片都具有其唯一的序列号,决不会相同。
  2)读卡器根据卡片的序列号来保证一次只对一张卡操作。
  3)读卡器得到PICC的返回值为卡的序列号。
  (3)卡选择操作步骤
  1) MCU向MF RC500发送“SELECT”命令。
  2)同时在“AntiCollision”操作中得到Mifare 1卡片的40bit长的序列号的前四个字节以及前四个字节的异或结果。
  3)同时再重新发送给Mifare 1卡,只有本身的序列号和接收的序列号相同的卡片才被真正地选中。
  4)Select指令成功执行后,MCU将得到DATA寄存器传来的一个字节长的卡片容量信息(SIZE字节)。SIZE字节被存储在Mifare 1卡片上的第00H扇区中的第00H 块中。
  (4)认证操作步骤
  1)设置密码控制寄存器KEYSTACON,使AL=1。
  2)然后设置KS0和KS1以指定一套密码集。
  3设置密码地址寄存器KEYADDR。
  4)通过写"Authentication" 认证命令代码和写“地址”(Mifare 1卡要认证的扇区地址是0~15)到DATA寄存器。如果三遍认证的每一个环都为“真”,且都能正确通过验证,则整个认证成功。这时读写器即可对刚刚认证通过的卡片上的这个扇区进行下一步READ/WRITE 等操作。
  (5)读写操作步骤
  1)“Authentication” 认证指令完成。
  2)对数据扇区或数据块进行“Write”写指令操作。
  3)完成数据块的初始化。
  3、MF RC500编程方法
  除了复位以外。对MF RC500的绝大多数控制是通过读写MF RC500的寄存器来实现的。MFRC500共有64个寄存器,分为8个寄存器页,每页8个。每个寄存器都是8位。单片机将这些寄存器作为片外RAM进行操作。最常用的是FIFODATA(数据堆栈)、COMMAND(命令)、FIFOLENGTH(堆栈长度)和PRIMARYSTATUS(标记)等。要实现某个操作。只需将该操作对应的代码写入对应地址即可。例如MF RC500休眠模式对应的控制寄存器名为Contr01,地址为09H的bit4且为1有效,那么让MFRC500进入休眠模式只需要将Contr01写入0x10即可。
  当对应的RFlD卡S50进入阅读器的有效范围时,天线的能量使RFID卡耦合出自身工作的能量,并建立通信。MF RC500对卡的操作主要是通过写通讯命令、参数和数据到FIFODATA,再通过写命令到120MMAND,实现与RFID卡的通讯。
  工程中用到的函数主要有:系统初始化、验证密码、复位射频卡、认证状态、防重叠认证、读取MIFARE卡、写EEprom、蜂鸣器响、命令执行标志置1、冲掉FIFO等。其他就不一一列举了。很多函数只是在基本的读写寄存器操作的基础上做了一个封装,使得调用起来更加方便,这种模块化的程序设计方法在项目中得到了很好的体现。
  五、结束语
  物联网的研究以及应用涉及到很多方面,本着专而精的原则,再加上时间的限制,我选择了应用最为广泛,且最贴近人们日常生活的基于单片机与非接触式IC射的频读卡器作为本次的课题。本文介绍了基于Philips公司MF RC500型芯片和atmel公司AT89c51型单片机的RFID阅读器的低成本软硬件设计。且重点放在这两块芯片的I/O接口设计及相互通信方面,对MF RC500与IC卡片之间的射频通信及单片机与上位机之间的通信则未作过多的介绍。经实践验证,本系统可成功实现对符合IS014443协议的MifareS50卡的读写,并且能对范围内的多个卡准确无误地读写,读写距离达到8 cm。本系统成本低廉,足协速度快,可靠性高,操作便利,可以方便地和包括PC在内的有申口的设备连接。它可以作为简单模块与其他系统相连。对RFID的推广有重要意义。
  通过本次课题的设计,我也从对单片机及射频方面的知识一点也不懂进步到对单片机的工作原理、接口设计、射频的原理、系统的整合等都有一定了解。由于之前并没有相关知识,所以平时主要以看书及查资料为主,边查边学习,进步较快。同时也认识到要进行一个项目一定要先进行市场调查,全面把握,对各方面都要考虑到。
         

相关帖子

沙发
liguang02| | 2012-12-9 18:15 | 只看该作者
大哥,有没有电路图啊,想炒一个玩玩

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

20

帖子

0

粉丝