教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

基于单片机的RFID读写器设计(6)

来源:网络收集 时间:2026-08-25
导读: 图4-2 为了处理Mifare卡在读卡器产生的电磁场中激励后,未完成处理义从激励 场中拿开的情况,软件中启用了RC522芯片内部的定时器。若超过设定的时间未得到卡片应答,则中止与卡的通信,返回“卡无反应”的错误信息

图4-2

为了处理Mifare卡在读卡器产生的电磁场中激励后,未完成处理义从激励

场中拿开的情况,软件中启用了RC522芯片内部的定时器。若超过设定的时间未得到卡片应答,则中止与卡的通信,返回“卡无反应”的错误信息。

从图4-2中可以看出Tranceive命令的核心处理方法:根据相关通信状态指示寄存器的内容返回各种错误状态字,若有位冲突错误,则进一步返回位冲突位置。Tranceive命令不处理面向比特的帧,这种帧只可能在MIFARE卡防冲突循环中出现。为了保持Tranceive命令对各种MI-FARE卡命令的普适性,该命令只完成帧的发送和接收,不对帧信息作处理,所有位冲突处理留在函数外进行。

需要注意的是,Tranceive命令不能自动中止,在任何情况下从该命令返回时必须先执行IDLE指令使RC522转入空闲态。

5.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个数据块解密,若要操作其他扇区的数据用户还须另外启动对该扇区的认证操作。

5.2 Mifare卡操作程序设计

对Mifare卡的操作分为请求、反碰撞、选择、认证、读、写、增值、减值、存取和传输,对Mifare卡的操作流程图如图所示,具体描述如下:

1请求操作

当有Mifare卡进入读写器天线作用范围内,读写器发出Request命令。卡上的ATR将启动,将卡上的第0扇区的第0块上得卡片类型号(TagType)共2个字节数据发给读写器,建立卡与读写器的第一步通信联络。如果不进行请求操作,接下去的操作无法进行。

请求函数如下:

char PcdRequest(unsigned char data req_code,unsigned char *pTagType) req_mode是输入参数,Request All时输入命令代码52H,Request Idle时输入参数26H.

pTagType是输出,返回2个字节的卡类型号。

操作成功返回值为0 。 2 反碰撞操作

在请求操作之后,要进行的是反碰撞操作,得到一张卡的序列号。当多张Mifare卡同时处于读写器天线作用范围内,读写器与一张Mifare卡进行通信,取得徐序列号。由于Mifare卡的序列号全球唯一,不可能重复,保证下一步只对一张Mifare卡操作。

反碰撞函数如下:

char PcdAnticoll(unsigned char *pSnr)

pSnr是输入,存放序列号(4byte)的内存单元首地址。 操作成功时函数返回值为0. 3卡选择操作

在Mifare卡成功完成请求,反碰撞操作后,进行的操作是卡选择。对指定序列号的卡进行选择操作,选中的卡可以进一步同RC522进行通信,其余的卡恢复到初始状态。

卡选择操作函数:

char PcdSelect(unsigned char *pSnr) pSnr是输入,Mifare卡的序列号。 操作成功时函数返回值为0. 4 认证操作

为了访问Mifare卡的EEPROM存储器中存放的数据,必须进行认证操作。认证的过程从RC522内部开始。用户首先要将正确的密钥放入RC522的密钥缓冲区中,然后比较RC522的密钥缓冲区中存放的密钥与Mifare卡尾块中存放的密钥是否相同,相同可以对Mifare卡进行下一步操作,不相同不允许对Mifare进行下一步操作。

认证的程序流程一般分为三步:(1)为了进行认证操作,密钥必须转化为标准的格式,然后存入RC522的内部密钥缓冲区中,将6字节的未编码的密钥转化成12字节的编码密钥,有米要编码函数char ChangeCodeKey( )实现;(2)讲已转换格式后的密钥送到RC522的FIFO中,有函数char PcdAuthKey( )实现;(3)用存放RC522的FIFO 中得密钥和卡上的密钥进行验证,由函数char PcdAuthState( )完成。

相关函数如下:

…… 此处隐藏:406字,全部文档内容请下载后查看。喜欢就下载吧 ……
基于单片机的RFID读写器设计(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/606339.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)