基于RC522的读卡器系统设计 - 中国一卡通网
用户名密码 [免费注册] [找回密码] 推广技巧 发布求购 建商铺  发产品  会员体制比较  
 

基于RC522的读卡器系统设计

来源:中国一卡通网  作者:不详  发布时间:2011-09-06 09:07:39  字体:[ ]

关键字:读卡器  芯片  单片机  

摘   要:本文设计的读卡器系统以PICl6F7x单片机作为主控芯片,选用MIFARE S50卡片,读卡器与卡片间以106kbps速率通信,同时实现读卡过程中的防冲突处理和对卡E2PROM块内容的读/写等功能。


  2.1.2 MFAuthent命令

  RC522简化了与MIFARE卡的加密认证操作,用一个MFAuthent命令代替了原来RC500需要的Authentl和Authent2两条命令。MFAuthent命令执行的最终目的在于开启RC522的加密认证单元。该指令执行成功后,RC522芯片与MIFARE卡间的通信信息将首先加密,然后再通过射频接口发送。从本质上讲,MFAuthent是一条变相的Tranceive命令,其算法流程图与图一致。但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都被识别,防冲突流程结束。

  防冲突算法流程图如图所示。

  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卡操作指令。

  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时隙方式。

更多

新闻投稿合作邮箱:yktchina-admin@163.com    字体[ ] [收藏] [进入论坛]

推荐文章

论坛热帖