基于单片机与RFID的非接触式读卡器设计Word格式.docx
《基于单片机与RFID的非接触式读卡器设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机与RFID的非接触式读卡器设计Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
读写器与标签之间存在相互认证的过程.可实现安全通信和存储,读写器具有不直接对最终用户开放的物理接口,可保证其自身的安全性:
第二.可同时识别多个电子标签;
第三,无机械磨损.寿命长.并可工作于各种油渍、灰尘污染等恶劣的环境;
第四,非接触操作,完成识别工作时无需人工干预.应用便利。
正是因为具有这些优点,使RFID的应用在近年来如火如荼。
为了使复杂的RFID系统简化.笔者设计了基于单片机与MFRC500型读卡器的低成本无源RFID系统。
系统外部接口为串口,使得包括PC在内的有串口的设备可以方便地与它相连.对RFID的推广有重要意义。
二、方案及元器件选择
本次读卡器的RFID芯片上我选择了Philip公司的mifare技术及其芯片MFRC500,它目前占据世界非接触式IC卡市场80%的份额,具有方案成熟,价资料全面的优点格低廉,.
随着半导体技术的进步,单片机成为功能越来越强的片上系统SOC,正向小型化,低功耗及模数混合的方向发展,使其在通用小型化系统中成为处理器的首选.而51系列单片机更是其中最为典型,应用最为广泛,最稳定的一系列产品.
因此,在本次非接触式IC读卡器的设计上我选择了atmel公司生产的89c51单片机.它是一种带4k字节可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。
它结构稳定,技术成熟,资料全面,价格低廉.89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
89c51系列单片机与MFRC500的组合已有许多成熟的方案,资料众多,便于实现
三、系统硬件设计
3.1系统工作概述
非接触式卡读IC卡器硬件电路包括以下部分:
控制器,mifare读写芯片,天线匹配电路,天线,RS232通信电路,分为电路,电源电路,LED状态显示和蜂鸣器驱动电路等
RFID标签由耦合元件及电路组成,其发射电波及内部处理器运行所需能量均来自阅读器产生的电磁波。
无源标签接收到阅读器发出的电磁波信号后.将部分电磁能量转化为供自己工作的能量。
每个电子标签具有全球惟一的识别号(ID),无法修改、无法仿造,保证了安全性。
电子标签中保存有约定格式的电子数据。
天线在标签和阅读器间传递射频信号.即标签的数据信息。
RFID阅读器是读取(或写入)电子标签信息的设备。
阅读器可无接触地读取并识别电子标签中所保存的电子数据.能自动识别物体。
阅读器通过网口与计算机相连.将读取的标签信息传送到计算机上.进行下一步处理。
3.2MFRC500的特点
Philips公司的MFRC500型读卡器是应用于13.56MHz非接触式通信的高集成读卡IC系列中的一员。
该读卡IC系列利用先进的调制和解调概念.完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。
MFRC500支持IS014443A所有的层.内部的发送器部分不需要增加有源电路就能够直接驱动近操作距离的天线(可达100mm):
接收器部分提供一个坚固而有效的解调和解码电路,用于IS014443兼容的应答器信号;
数字部分处理IS014443A帧和错误检测(奇偶&
CRC)。
此外,它还支持快速CRYPTOI加密算法,用于验证Mifare系列产品。
方便地并行接口可直接连接到任何8位微处理器.给阅读器的设计提供了极大的灵活性。
。
MFRC500可方便的用于各种基于ISO/IEC14443A标准并且要求低成本、小尺寸、高性能以及单电源的非接触式通信的应用场合。
3.3MFRCS00的功能
MFRC500的功能框图如图2所示。
图2.MFRC功能框图
由图2可知.。
MFRC500内部包括并行微控制器接口、双向。
FIFO缓冲区、中断、数据处理单元、状态控制单元、安全和密码控制单元、模拟电路接口及天线接口。
MFRC500的外部接口包括数据总线、地址总线、控制总线(包含读写信号和中断等)和电源等。
MFRC500的并行微控制器接口自动检测连接的8位并行接口的类型。
它包含一个易用的双向FIFO缓冲区和一个可配置的中断输出,为连接各种MCU提供了很大的灵活性。
即使采用成本非常低的器件也能满足高速非接触式通信的要求。
数据处理部分执行数据的并行一串行转换。
支持的帧包括CRC和奇偶校验。
MFRC500以完全透明的模式进行操作.因而支持IS014443A的所有层。
状态和控制部分允许对器件进行配置以适应环境的影响,并将性能调节到最佳状态。
当与MifareStandard和Mifare通信时,使用高速CRYPTOI流密码单元和一个可靠的非易失性密匙存储器。
模拟电路包含一个具有阻抗非常低的桥驱动器输出的发送部分。
这使得最大操作距离可达100mm。
接收器可以检测到并解码非常弱的应答信号。
根据RFID原理和MFRC500的特性,可设计基于AT89C51和MFRC500的REID阅读器系统,其结构框图如图3所示。
系统主要由AT89C51、MFRC500、时钟电路、看门狗、MAX232和矩阵键盘等组成。
系统的工作方式是先由。
MCU控制MFRC500驱动天线对Mifare卡也就是对应答器(PICC)进行读写操作,然后与PC通信,把数据传给上位机。
主控电路采用AT89C51,因为AT89C51的开发简单、快捷.运行稳定。
采用ATMEL的AT24C256型.12C总线EEPROM存储系统的数据。
为了防止系统“死机”.使用MAX813作为看门狗来实现系统上电复位、按键的热重启及电压检测等。
与上位机的通信采用RS一232方式,整个系统由9V电源供电.再由稳压模块7805稳压成5V的电源。
MFRC500和单片机AT89C51都是采用标准TTL电平,不需电平转换。
单片机AT89C51与PC串口电平不匹配.使用MAX232型电平转换器进行电平转换。
3.4MFRC500管脚描述
管脚
符号
类型
描述
1
OSCIN
I
该脚也作为外部时钟输入(fosc=13.56MHz)
2
IRQ
O
中断请求输出中断事件请求信号
3
MFIN
MIFARE接口输入接受符合ISO14443A(MIFIRE)的数字串行数据流
4
MFOUT
MIFARE接口输出发送符合ISO14443A(MIFIRE)的数字串行数据流
5
TX1
发送器1发送经过调制的13.56MHz能量载波
6
TVDD
PWR
发送器电源提供TX1和TX2输出电源
7
TX2
发送器2发送经过调制的13.56MHz能量载波
8
TVSS
发送器地提供TX1和TX2输出电源
9
NCS
/片选选择和激活MFRC500的微处理器接口
10
NWR
/写MFRC500寄存器写入数据D0~D7选通
R/NW
读//写选择所要执行的是读还是写
nWrite
/写选择所要执行的是读还是写
11
NRD
/读MFRC500寄存器读出数据D0~D7选通
NDS
/数据选通读和写周期的选通
nDStrb
12
DVSS
数字地
13
D0~D7
I/O
8位双向数据总线
20
AD0~AD7
8位双向地址和数据总线
21
ALE
地址锁存使能为高时将AD0~AD5锁存为内部地址
AS
地址选通为低时选通信号将AD0~AD5锁存为内部地址
nAStrb
/地址选通为低时选通信号将AD0~AD5锁存为内部地址
22
A0
地址线0寄存器地址位0
nWait
/等待信号为低可以开始一个存取周期为高时可以停止
23
A1
地址线1寄存器地址位1
24
A2
地址线2寄存器地址位2
25
DVDD
数字电源
26
AVDD
模拟电源
27
AUX
辅助输出模拟测试信号该信号可通过TestAnaOutSel寄存器选择
28
AVSS
模拟地
29
RX
接收器输入卡应答输入脚该应答为经过天线电路耦合的调13.56MHz载波
30
VMID
该脚输出内部参考电压(注:
必须接一个100nF电容)
31
RSTPD
复位和掉电当为高时内部电流关闭振荡器停止输入端与外部断开
该管脚的下降沿启动内部复位
32
OSCOUT
晶振输出振荡器反向放大器输出
注:
I为输入,O为输出,PWR为电源
系统硬件设计中的关键接口部分连接如下:
MFRC500的ADO—AD7(脚13一脚20)为带施密特触发器的双向数据和地址复用总线,接单片机AT89C51的ADO—AD7(脚39一脚32)。
MFRC500的NWPdRNW(脚10)为带施密特触发器的写禁止/只读信号,接单片机的写信号WR(脚16)。
MFRC500的NRD/NDS(脚11)为带施密特触发器的读禁止,数据选通禁止信号,接单片机的读信号RD(脚17)。
MFRC500的NCS(脚19)为带施密特触发器的片选禁止信号.接单片机的I/O口线P2.7(脚28)。
MFRC500的ALE(脚21)为带施密特触发器的地址锁存使能信号,接单片机的地址锁存信号(脚30)。
MFRC500的IRQ(脚2)为带施密特触发器的中断请求信号,接单片机的中断0(脚12)。
3.5系统天线设计
MFRC500的非接触式天线接口使用4个引脚。
为了驱动天线。
MFRC500通过TXl和TX2提供13.56MHz的能量载波。
根据寄存器的设定对发送数据进行调制来得到发送的信号。
S50卡采用RF场的负载调制进行响应。
天线拾取的信号经过天线匹配电路送到RX脚。
MFRC500的内部接收器对信号进行检测和解调并根据寄存器的设定进行处理.然后数据发送到并行接口.由微控制器进行读取。
MFRC500对驱动部分使用单独电源供电。
一般的天线设计要达到如下要求:
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/IEC10536-1标准来进行的,在操作期间的任意时候都可以复位开始地址计数器随一个时钟脉冲而被设置为零。
复位阶段需要512个时钟周期,在复位阶段,一些寄存器由硬件预设。
如果使用内部晶振,需要注意他是由AVDD供电,需要一点时间等到晶振稳定。
当RST线从高状态(H)置到低状态(L)时,第一个数据位(LSB)的内容被送到I/O上,若连续输入32个时钟脉冲,主存储器中的前四个字节地址单元中的内容被读出在第33个始终脉冲的下降沿I/O线被置成高状态而关闭
(2)命令模式
复位响应以后,芯片等待着命令每条命令都以一个启动状态开始整个命令,包括3个字节随后紧跟着一个附加脉冲,并用一个停止状态来结束操作。
启动状态:
在CLK为高状态(H状态)期间I/O显得下降沿为启动状态。
停止状态:
在CLK为高状态(H状态)期间I/O显得上升沿为停止状态。
在接受一个命令之后有两种可能的模式输出数据模式(即读数据)和处理数据模式。
注:
IFD(INTERFACEDEVICE)指接口设备
(3)输出模式
输出数据模式是将IC卡芯片中的数据传送个外部设备接口(IFD)的一种操作,在第一个CLK脉冲的下降沿之后I/O线上的第一位数据变为有效,随后每增加一个时钟脉冲芯片内部的一位数据被送到I/O线上,其传送顺序从每个字节的最低位(LSB)开始。
当所需要的最后一个数据送出以后,需要在附加一个时钟脉冲来把I/O置成高状态以便接受新的命令。
在输出数据期间任何启动状态和停止状态均被屏蔽掉。
(4)读操作
基站产生固定间隙的射频振荡,并通过控制两个间隙之间的振荡时间对位数据"
1"
和位数据"
0"
进行编码,持续地发送位数据流,完成写操作。
(5)时钟特性
MFRC500包含一个TIMER,TIMER的主要部分是一个自减计数器值不为0,就会在时钟控制下做自减操作。
如果AutoRestart置1,则TIMER不会自减到0。
当TIMER计数到1时会在下一个时钟自动加载TimerReolad寄存器的值。
TIMER时钟由芯片13.56MHz时钟分配得到。
由TpreScaler寄存器决定分频数:
TpreScaler寄存器范围从0到21,对应T从74ns到150ms。
从上一个开始时间到目前的时间范围为74ns到40s,计
微处理器可以计算TIMER开始到结束之间的时间
系统工作流程如图5所示。
4.2单片机软件设计
下位机程序主要包括对MFRC500进行初始化、接收上位计算机的指令、控制MFRC500,并且把MFRC500的状态信息反馈给计算机。
MCU对Mifare1卡操作的命令主要有空操作、装载密码、验证密码、读卡、写卡和关卡等。
无论哪种操作都必须先把命令代码写入到Command寄存器,比如执行验证密码则需要执行WriteRC(RegCommand,0x0c)命令
整个系统的工作由对Mifare卡操作和系统后台处理两大部分组成。
由于篇幅有限,本文只介绍对Mifare卡操作流程。
Mifare卡的操作可以分为以下几项:
一、复位请求
当一张Mifare卡处在读写器的天线的工作范围之内时,复位请求开始工作,并按以下步骤进行操作:
1)读写器向卡片发出Requestall(或Requeststd)命令。
Requestall指令是连续性的读卡指令。
Requestall指令是非连续性的读卡指令,只读一次。
2)Requestall指令在成功地读取一张卡片之后,会一直等待使用者拿走这一张卡片,直到有新一张卡片进入MF的天线有效工作范围之内
3)卡片的ATR将启动,将卡片Block0中的卡片类型(TagType)号共2个字节传送给读写器,建立卡片与读写器的第一步通信联络。
具体代码如下:
voidSerialIRQ()interrupt4
{if(RI){RI=0;
if(SBUF=='
['
)//开始接收
point_in=0;
elseif(!
Requestall)
{Requeststd[point_in]=SBUF;
}//放入缓冲
二、反碰撞操作
如果有多张Mifare卡片处在卡片读写器的天线的工作范围之内时,读卡器将:
1)与每一张卡片进行通信,取得每一张卡片的系列号。
由于每一张Mifare卡片都具有其唯一的序列号,决不会相同。
2)读卡器根据卡片的序列号来保证一次只对一张卡操作。
3)读卡器得到PICC的返回值为卡的序列号。
三、卡选择操作步骤
1MCU向MFRC500发送“SELECT”命令。
2)同时在“AntiCollision”操作中得到Mifare1卡片的40bit长的序列号的前四个字节以及前四个字节的异或结果。
3)同时再重新发送给Mifare1卡,只有本身的序列号和接收的序列号相同的卡片才被真正地选中。
4)Select指令成功执行后,MCU将得到DATA寄存器传来的一个字节长的卡片容量信息(SIZE字节)。
SIZE字节被存储在Mifare1卡片上的第00H扇区中的第00H块中。
四、认证操作步骤
1)设置密码控制寄存器KEYSTACON,使AL=1。
2)然后设置KS0和KS1以指定一套密码集。
3设置密码地址寄存器KEYADDR。
4)通过写"Authentication"认证命令代码和写“地址”(Mifare1卡要认证的扇区地址是0~15)到DATA寄存器
如果三遍认证的每一个环都为“真”,且都能正确通过验证,则整个认证成功。
这时读写器即可对刚刚认证通过的卡片上的这个扇区进行下一步READ/WRITE等操作。
五、读写操作步骤
1)“Authentication”认证指令完成。
2)对数据扇区或数据块进行“Write”写指令操作。
3)完成数据块的初始化。
4.3 MFRC500编程方法
除了复位以外.对MFRC500的绝大多数控制是通过读写MFRC500的寄存器来实现的。
MFRC500共有64个寄存器,分为8个寄存器页,每页8个.每个寄存器都是8位。
单片机将这些寄存器作为片外RAM进行操作。
最常用的是FIFODATA(数据堆栈)、COMMAND(命令)、FIFOLENGTH(堆栈长度)和PRIMARYSTATUS(标记)等。
要实现某个操作.只需将该操作对应的代码写入对应地址即可。
例如MFRC500休眠模式对应的控制寄存器名为Contr01,地址为09H的bit4且为1有效,那么让MFRC500进入休眠模式只需要将Contr01写入0x10即可。
当对应的RFlD卡S50进入阅读器的有效范围时,天线的能量使RFID卡耦合出自身工作的能量,并建立通信。
MFRC500对卡的操作主要是通过写通讯命令、参数和数据到FIFODATA,再通过写命令到120MMAND,实现与RFID卡的通讯。
工程中用到的函数主要有:
系统初始化、验证密码、复位射频卡、认证状态、防重叠认证、读取MIFARE卡、写EEprom、蜂鸣器响、命令执行标志置1、冲掉FIFO等。
其他就不一一列举了。
很多函数只是在基本的读写寄存器操作的基础上做了一个封装,使得调用起来更加方便,这种模块化的程序设计方法在项目中得到了很好的体现。
五、结束语
物联网的研究以及应用涉及到很多方面,本着专而精的原则,再加上时间的限制,我选择了应用最为广泛,且最贴近人们日常生活的基于单片机与非接触式IC射的频读卡器作为本次的课题。
本文介绍了基于Philips公司MFRC500型芯片和atmel公司AT89c51型单片机的RFID阅读器的低成本软硬件设计。
且重点放在这两块芯片的I/O接口设计及相互通信方面,对MFRC500与IC卡片之间的射频通信及单片机与上位机之间的通信则未作过多的介绍。
经实践验证,本系统可成功实现对符合IS014443协议的MifareS50卡的读写,并且能对范围内的多个卡准确无误地读写,读写距离达到8cm。
本系统成本低廉,足协速度快,可靠性高,操作便利,可以方便地和包括PC在内的有申口的设备连接。
它可以作为简单模块与其他系统相连.对RFID的推广有重要意义。
通过本次课题的设计,我也从对单片机及射频方面的知识一点也不懂进步到对单片机的工作原理、接口设计、射频的原理、系统的整合等都有一定了解。
由于之前并没有相关知识,所以平时主要以看书及查资料为主,边查边学习,进步较快。
同时也认识到要进行一个项目一定要先进行市场调查,全面把握,对各方面都要考虑到。
参考文献:
1.<
<
51系列单片机开发实例精解>
>
编者:
田立马鸣鹤中国电力出版社
2.<
51单片机实用C语言程序设计与典型实例>
杨国田