来源:中国一卡通网 作者:不详 发布时间:2011-09-06 09:07:39 字体:[大 中 小]
摘 要:本文设计的读卡器系统以PICl6F7x单片机作为主控芯片,选用MIFARE S50卡片,读卡器与卡片间以106kbps速率通信,同时实现读卡过程中的防冲突处理和对卡E2PROM块内容的读/写等功能。
其中:命令代码“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时隙方式。
推荐文章
论坛热帖