怎么做“射频ic卡读卡器 usb上位机软件设计...

读卡器及基于rc522的读卡器的设计(1) - 网文精粹 - 技术资料==
热门型号:
技术文章分类:
电子综合工具:
&&&当前位置:
& 读卡器及基于rc522的读卡器的设计(1)
读卡器及基于rc522的读卡器的设计(1)
相关技术资料单片机与RFID的非接触式读卡器软件设计
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
单片机与RFID的非接触式读卡器软件设计
单片机与RFID的非接触式读卡器软件设计
15:37:55 &nbsp&nbsp&nbsp&nbsp&nbsp【文章字体:&&】
&&& 一、背景
  随着中国物联网热的兴起,人们对物联网的兴趣也极大的增加,各种对物联网应用的研究也逐步展开。所谓“物联网”(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的组合已有许多成熟的方案,资料众多,便于实现 。
  三、系统硬件设计
  3.1 系统工作概述
  非接触式卡读IC卡器硬件电路包括以下部分:控制器,mifare读写芯片,天线匹配电路,天线,RS232通信电路,分为电路,电源电路,LED状态显示和蜂鸣器驱动电路等。
  RFID标签由耦合元件及电路组成,其发射电波及内部处理器运行所需能量均来自阅读器产生的电磁波。无源标签接收到阅读器发出的电磁波信号后。将部分电磁能量转化为供自己工作的能量。每个电子标签具有全球惟一的识别号(ID),无法修改、无法仿造,保证了安全性。电子标签中保存有约定格式的电子数据。
  天线在标签和阅读器间传递射频信号。即标签的数据信息。
  RFID阅读器是读取(或写入)电子标签信息的设备。阅读器可无接触地读取并识别电子标签中所保存的电子数据。能自动识别物体。阅读器通过网口与计算机相连。将读取的标签信息传送到计算机上。进行下一步处理。 &&&&& &&&&&&& 3.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.3 MF RCS00的功能&
&&&&&& MF RC500的功能框图如图2所示。
&  由图2可知: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阅读器系统,其结构框图如图3所示。
  系统主要由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型电平转换器进行电平转换。
  3.4 系统天线设计
  MF RC500的非接触式天线接口使用4个引脚。
  为了驱动天线,MF RC500通过TXl和TX2提供13。56 MHz的能量载波。根据寄存器的设定对发送数据进行调制来得到发送的信号。S50卡采用RF场的负载调制进行响应。天线拾取的信号经过天线匹配电路送到RX脚。MF RC500的内部接收器对信号进行检测和解调并根据寄存器的设定进行处理。然后数据发送到并行接口。由微控制器进行读取。MF RC500对驱动部分使用单独电源供电。
  一般的天线设计要达到如下要求:1)使天线线圈的电流最大,用于产生最大的磁通量;2)功率匹配。以最大程度地利用产生磁通量的可用能量;3)足够的带宽。以便无失真地传送用数据调制的载波信号。天线是有一定负载阻抗的谐振回路。阅读器又具有一定的源阻抗。为了获得最佳性能,必须通过无源的匹配回路将线圈阻抗转换为源阻抗。然后,通过同轴线缆即可无损失且无辐射地将功率从读写器末级传送到匹配电路。
  为了节约成本和减小系统体积。本系统采用PCB板天线设计。品质因数Q是一个很重要的参数。用于电感耦合式射频识别系统的天线,其特征值就是它的谐振频率和品质因数。较高的品质因数值会增加天线线圈中的电流强度,由此改善对RFID卡的功率传送。与之相反,天线的传输带宽刚好与品质因数值成反比例变化,选择的品质因数过高会导致带宽缩小。从而明显地减弱卡片接收到的调制边。品质因数可以通过电感线圈电抗与电阻的比值计算出来,公式如
  (1):Q=(coaxLm)/RANT (1)
  式中ωa=2πfRo天线部分电路和EMC的原理如图如4所示。
&  四、系统软件设计
  4.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,计微处理器可以计算TIMER开始到结束之间的时间系统工作流程如图5所示。&
  4.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)完成数据块的初始化。
  4.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的推广有重要意义。
  通过本次课题的设计,我也从对单片机及射频方面的知识一点也不懂进步到对单片机的工作原理、接口设计、射频的原理、系统的整合等都有一定了解。由于之前并没有相关知识,所以平时主要以看书及查资料为主,边查边学习,进步较快。同时也认识到要进行一个项目一定要先进行市场调查,全面把握,对各方面都要考虑到。
  停止状态:在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,计微处理器可以计算TIMER开始到结束之间的时间系统工作流程如图5所示。&
  4.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)完成数据块的初始化。
  4.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的推广有重要意义。
  通过本次课题的设计,我也从对单片机及射频方面的知识一点也不懂进步到对单片机的工作原理、接口设计、射频的原理、系统的整合等都有一定了解。由于之前并没有相关知识,所以平时主要以看书及查资料为主,边查边学习,进步较快。同时也认识到要进行一个项目一定要先进行市场调查,全面把握,对各方面都要考虑到。
信息来源:
物联网世界
主办单位:国家科技图书文献中心 
运营机构:机械工业信息研究院情报研究所 地 址:北京市西城区百万庄大街22号 邮 编:100037
Copyright (C) All Rights Reserved扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于ARM的RFID读卡器设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口维库欢迎您!
微信扫一扫关注我们
当前位置:&>>&&>>&&>>&基于RC522的读卡器系统设计
&&&&& 本文设计的读卡器系统以PICl6F7x作为主控芯片,选用 S50卡片,读卡器与卡片间以106kbps速率通信,同时实现读卡过程中的防冲突处理和对卡E2PROM块内容的读/写等功能。读卡器内部设置了以存放卡数据,在Flash容量满的情况下可通过读卡器的以太网口读出全部数据到管理中心上位机,便于建立对卡数据的综合管理系统。
  1 硬件系统设计
  读卡器硬件框图如图1所示。
  单片机PICl6F7x通过SPI总线与和Flash芯片相连,同时用简化的ISA总线连接以太网接口芯片C58900,以提供连接到局域网的能力。AT45D0ll存储容量为lMb,可同时存储7400多组MIFARE的E2PROM块和UID号,提供了足够读卡器一天内读取的信息量的存放容量。对于RC522部分的设计,公司有专门的手册详细介绍,本文不再赘述。RC522的SPI总线接口有其自身的时序要求。它只能工作于从模式,最高传输速率为10 Mbps,数据与时钟相位关系满足“空闲态时钟为低电平,在时钟上升沿同步接收和发送数据,在下降沿数据转换”的约束关系。PICl6F7x系列单片机的片上外设包括1个SSP模块。该模块可配置为SPI接口使用,通过相应的寄存器可控制SPI接口的数据传输率、数据一时钟相位天系等通信参数。本文中配置SSP模块工作于SPI主模式下,时钟为1/4单片机主频,接收和发送数据都在时钟上升沿发生。
  需要注意的是,由于RC522支持的数字接口形式多种多样,因此芯片在每次复位时都会检测外部引脚连接关系。对于SPI接口,RC522的相关引脚必须按照图2所示的连接关系配置。
  除了通用的4条SPI信号线(时钟线SCK、输入数据线MOSI、输出数据线MOSO和选通线NSS)以外,RC522要求额外的2个引脚I2C和EA分别固定接低电平和高电平。这2个引脚不参与SPI总线传输,只起设定RC522数字界面采用SPI接口的作用。另外,片选信号必须保证在写入数据流期问为低电平,而在无数据流写入时则为高电平;用户不得为节省PIC单片机引脚资源而一直将NSS置为低电平。
  2 软件系统设计
  相对于Philips公司生产的其他14443基站芯片(如RC500、RC530等),RC522简化了内部系统结构,去掉了片内E2PROM。从而大大缩减了芯片命令集。另外,对载波调制电路,发送电路和解调、解码电路的控制也相应简化,去掉了校准接收电路I时钟、Q时钟、校准发送与接收时钟相位等繁琐的操作。一般而言,单片机与RC522的通信流程如图3所示。
  根据RC522和MIFARE卡问传送的控制流数据的不同,通信过程中可能会出现不同的状态。对各种状态须作不同处理,这正是软件系统开发的难度所在。下面给出RC522命令集中2个最基本命令(Tranceive和MFAuthe-nt)执行过程中可能遇到的通信状态及处理。这两个命令分别实现向MIFARE卡发送/接收数据和加密认证功能。实际上,通过它们即可完成对MIFARE卡的所有操作,包括Request、Anticollision、Select、READ、WRITE等。
  2.1 RC522命令集的实现
  RC522主要的状态指示寄存器包括ComIrqReg、Er-rorReg、Status2Reg和FIFOLevelReg等。软件处理的思路:通过ComIrgReg得到RC522内部中断状态;由中断判断RC522与MIFARE卡的通信流程信息,从而决定是否进行下一流程处理;若中断指示有错误发生,则需进一步读取ErrorReg的内容,据此返回错误字。
  2.1.1 Tranceive命令
  Tranceive命令的具体执行过程;读取RC522 FIFO中的所有数据,经基带编码和数字载波调制后通过通信接口以射频形式发送到MIFARE卡;发送完毕后通过通信接口检测有无MIFARE卡发送的射频信号回应,并将收到的信号解调、解码后放入FIFO中。分析以上Ttanceive命令执行过程,可以得到处理该命令的算法流程图,如图4所示。
  为了处理MIIFARE卡在读卡器产生的电磁场中激励后,未完成处理义从激励场中拿开的情况,软件中启用了RC522芯片内部的。若超过设定的时间未得到卡片应答,则中止与卡的通信,返回“卡无反应”的错误信息。
  从图4中可以看出Tranceive命令的核心处理方法:根据相关通信状态指示寄存器的内容返回各种错误状态字,若有位冲突错误,则进一步返回位冲突位置。Tranceive命令不处理面向比特的帧,这种帧只可能在MIFARE卡防冲突循环中出现。为了保持Tranceive命令对各种MI-FARE卡命令的普适性,该命令只完成帧的发送和接收,不对帧信息作处理,所有位冲突处理留在函数外进行。
  需要注意的是,Tranceive命令不能自动中止,在任何情况下从该命令返回时必须先执行IDLE指令使RC522转入空闲态。
  2.1.2 MFAuthent命令
  RC522简化了与MIFARE卡的加密认证操作,用一个MFAuthent命令代替了原来RC500需要的Authentl和Authent2两条命令。MFAuthent命令执行的最终目的在于开启RC522的加密认证单元。该指令执行成功后,RC522芯片与MIFARE卡间的通信信息将首先加密,然后再通过射频接口发送。从本质上讲,MFAuthent是一条变相的Tranceive命令,其算法流程图与图4一致。但RC522芯片内部已经对通信过程中的各种通信状态作了相应处理,且该命令执行完后自动中止,因此用户只须检测定时器状态和错误寄存器状态来判断执行情况。实际上,MFAuthent只可能有一种错误状态(RC522与MI-FARE卡通信帧格式错误),此时该命令不能打开加密认证单元,用户必须重新执行认证操作。
  MFAuthent执行过程中RC522将依次从FIFO中读取1字节认证模式、l字节要认证的E2PROM块号、6字节密钥和4字节射频卡UID号等信息,在命令执行前必须保证这12字节数据完整地保存在FIFO中。认证模式有A密钥认证和B密钥认证两种,一般选用A密钥认证。
  一次MFAutllent认证只能保证对MIFARE卡的一个扇区中的4个数据块解密,若要操作其他扇区的数据用户还须另外启动对该扇区的认证操作。
  2.2 MIFARE卡操作指令
  对MIFARE卡常用的操作指令包括查询、防冲突、选卡、读/写E2PROM块等。其中,防冲突指令是14443A协议的精华部分,实现难度较大。下面将重点介绍防冲突算法的软件实现方法。
  2.2.1 防冲突指令
  14443A标准定义的防冲突算法本质上是一种基于信道时分复用的信道复用方法。在某一时刻若多个射频卡占用射频信道与读卡器通信,则读卡器将会检测到比特流的冲突位置;然后重新启动另一次与射频卡的通信过程,在过程中将冲突位置上的比特值置为确定值(一般为1)后展开二进制搜索,直到投有冲突错误被检测到为止。MIFARE卡内有4字节的全球惟一序列号UID,而RC522防冲突处理的目的就在于最终确定MIFARE卡的UID。14443A标准的防冲突指令格式如下:
  其中:命令代码“93”代表要处理的射频卡UID只有4字节;NVM表示此次防冲突命令的UID域中正确的比特数;BCC字节只有在NVM为70(即UID的4字节都正确)时才存在,它表示此时整个UID都被识别,防冲突流程结束。
  防冲突算法流程图如图5所示。
  NVM初始值为20,表示该命令只含有2个字节,即“93+20”,不含UID数据,MIFARE卡须返回全部UID字节作为响应。若返回的UID数据有位冲突的情况发生,则根据冲突位置更新NVM值。可知在搜索循环中,随着UID已知比特数的加入,NVM不断增加,直到70为止。它表示除了“93+70”两个命令字节外,还有UID0~UID3和BCC 5个UID数据字节。此时命令字节共有7个,防冲突命令转变为卡片选择命令。
  防冲突流程中若遇到须发送和接收面向比特的帧的情况,则必须预先设置通信控制寄存器BitFramingReg。该寄存器可指明发送帧中最后一个字节和接收帧第一个字节中不完整的比特的位数。
  2.2.2 读卡和写卡指令
  14443A协议中并没有具体规定对射频卡的读写操作方式,故对每种卡的读写操作都必须考虑该卡的存储区域组织形式和应答形式。MIFARE卡内部存储器是由E2PROM组成的,共划分为16个扇区,每个扇区4个块,每块16字节。对E2PROM的读写都以块为单位进行,即每次读/写16字节。
  以写卡指令为例,MIFARE卡要求有两步握手,指令格式分别如下所述。
  Setp A:查询块状态。
  若块准备好,则MIFARE卡返回4比特应答。若值为1010,则可进行下一步操作;若值非1010,则表示块未准备好,必须等待直至块准备好为止。
  Step B:写数据。
  若写入成功,则MIFARE卡返回4比特应答,值仍为1010;若非lOl0,则表示写入失败。
  读卡指令格式如下:
  若执行成功,则MIFARE卡返回18字节应答比特。需要注意的是,其中只有16字节是读取的块数据,另外2个字节为填充字节。若字节数不为18,则可判断读卡操作错误。
  MIFARE卡数据加密时以扇区为单位,一次加密认证仅能操作一个扇区的数据。这为用户实现“一卡通”功能提供了便利,用户可在不同的扇区内采用不同加密方式互不干扰地存放各种目的应用数据。实际生活中常见的一种应用是钱包,对卡的写操作须按照一定的格式进行。一个块的数据组成如下:
  注意:address值无意义,但value值写入时必须在4~7字节中存入取反值。
  2.3 读卡器总体软件设计
  读卡器的软件设计思路是利用RC522的Tranceive命令作为标准函数,通过调用此函数实现MIFARE卡操作指令。MIFARE卡的操作流程如图6所示,其要点是将操作完成的卡转入休眠态,递减可能发生冲突的卡片数目直至所有卡片操作完毕,此时防冲突函数无卡片应答。
  RC522芯片在每次使用前都必须复位,除了在复位引脚NRSTPD输入从低电平至高电平的跳变沿外,还必须向RC522的命令寄存器CommandReg写人软复位命令代码0x0I?进行软复位。在利用Rc522操作MIF’RAE卡之前,用户必须正确设置芯片模拟部分的工作状态。依笔者经验,一般情况下RC522调制、解调方式采用默认设置即可;在106 kbps通信速率下可正常使用,但必须保证天线驱动接口打开,可以通过设置Tx―controlReg寄存器实现。另外,由于14443A协议采用调制深度为100}《的ASK调制,这一点与默认设置不同,因此必须相应设置TxASKRc毽来实现该种调制方式。
  RC522的通信参数设置很复杂,可以调控调制相位、调制位宽、射频信号检测强度、发送/接收速度等设置。在硬件调试过程中,用户可根据实际情况选用适合自身使用的设置形式。
  本文设计的读卡器在106 kbps通信速率下读卡距离达50 mm,可以实现考勤、电子钱包功能;整个读卡器采用低功耗元件,可以作为一个网络终端、以作后备可靠地工作。对于Rc522的应用,防冲突和通信接口的设置是重点。不同的射频卡协议,防冲突流程各不相同,通信接口也会有差异,但修改Rc522的相关设置即可使物理接口满足协议要求。对于防冲突处理,Rc522{支持基于比特冲突检测的处理方式,不可处理类似144。13B的ALOHA时隙方式。&&参考文献:[1].&AT45D011&datasheet&.[2].&RC500&datasheet&.[3].&BCC&datasheet&.[4].&MIF&datasheet&.来源:
技术资料出处:northerns
该文章仅供学习参考使用,版权归作者所有。
因本网站内容较多,未能及时联系上的作者,请按本网站显示的方式与我们联系。
【】【】【】【】
上一篇:下一篇:
本文已有(0)篇评论
发表技术资料评论,请使用文明用语
字符数不能超过255
暂且没有评论!
12345678910
暂且没有信息...
12345678910
您最关心的搜索
关于Tcl在Vivado中的应用文章从Tcl的基本语法和在Vivado中的应用展开,继上篇《用Tcl定制Vivado设计实现流程》介绍了如何扩展甚至是定制FPGA设计实现流程后,引出了一个更细节的应用场景:如何利用Tcl在已完成布局布线的设计上对网表或是布局布线进行局部编辑,...[][][][][][][][][][]

我要回帖

更多关于 沈阳公交ic卡充值 的文章

 

随机推荐