通用射频卡读写模块的设计流程.docx
《通用射频卡读写模块的设计流程.docx》由会员分享,可在线阅读,更多相关《通用射频卡读写模块的设计流程.docx(28页珍藏版)》请在冰豆网上搜索。
通用射频卡读写模块的设计流程
通用射频卡读写模块的设计流程
本设计为非接触式射频卡读卡器,它是基于单片机AT89S52与Philips公司的MFRC500嵌入式读写芯片设计开发的,整个系统包括由AT89S52构成控制模块,由MFRC500构成的射频模块,天线模块,由LCD1602构成的显示模块,通信模块以及若干标签等组成。
它能完成对Mifare1卡所有读写及控制操作,并且还可以方便的嵌入到其他系统(如:
门禁,公交)中,成为用户系统的一部分。
一.设计思想
本设计所研究的读卡器为非接触式的静距离无限读卡系统。
该系统为无线通信系统,对通信距离和通信信息的可靠性等都需进行研究。
主要考虑的问题在以下几个方面:
①不同的射频读卡器系统拥有不同的通信频带,RFID按应用频率的不同分为低频(LF)、高频(HF)、超高频(UHF)、微波(MW),相对应的代表性频率分别为:
低频135KHz以下、高频13.56MHz、超高频860M-960MHz、微波2.4G、5.8G,在设计系统时,标签与天线和读卡芯片模块的带宽需严格匹配,否则将无法进行通行或出现通信错误。
本设计中采用的为高频频带,在天线设计过程中需严格遵守天线设计的参数要求,设计与高频相匹配的天线,并选用合适的标签,并且标签和射频芯片的需遵守相同的通信标准才能够成功的进行通信。
②由于RFID通信采用的无线通信方式,无线通信的通信信道是开放性信道,因此对通信安全有比较严格的要求,因此在通信时需要有严格的通信加密方式,才能够确保信息的安全性。
③在读卡的过程中,由于可能同时存在有多个标签在读写范围内,要能识别正确的标签,则需设计相应的防碰撞法则,以能够选择出对应的标签进行操作并防止出现通信混乱。
二.MFRC500芯片概述
1.MFRC500芯片特点
MFRC500是PHILIPS公司生产的高集成度TYPEA读写器芯片。
其主要性能如下:
●载波频率为13.56MHz;
●集成了编码调制和解调解码的收发电路;
●天线驱动电路仅需很少的外围元件,有效距离可达10cm;
●内部集成有并行接口控制电路,可自动检测外部微控制器(MCU)的接口类型;
●具有内部地址锁存和IRQ线,可以很方便地与MCU接口;
●集成有64字节的收发FIFO缓存器;
●内部寄存器、命令集、加密算法可支持TYPEA标准的各项功能,同时支持MIFARE类卡的有关协议;
●数字、模拟、发送电路都有各自独立的供电电源。
基于以上特点,用MFRC500极易设计TYPEA型卡的读写器,可广泛用于非接触式公共电话、仪器仪表、非接触式手持终端等领域。
2.引脚功能
MFRC500为32脚SO封装,其引脚功能如表1-1所列。
需说明的是:
某些引脚(带*号)依据其所用MCU(微控制器)的接口情况具有不同功能。
表1-1MFRC500引脚功能
管脚
符号
类型
描述
1
OSCIN
I
晶振输入,振荡器反相放大器输入,该脚也作为外部时钟输入(fosc=13.56MHz)。
2
IRQ
O
中断请求,输出中断事件请求信号。
3
MFIN
I
MIFARE接口输入,接受符合ISO14443A(MIFIRE)的数字串行数据流。
4
MFOUT
O
MIFARE接口输出,发送符合ISO14443A(MIFIRE)的数字串行数据流。
5
TX1
O
发送器1,发送经过调制的13.56MHz能量载波。
6
TVDD
PWR
发送器电源,提供TX1和TX2输出电源。
7
TX2
O
发送器2,发送经过调制的13.56MHz能量载波。
8
TVSS
PWR
发送器地:
提供TX1和TX2输出电源。
9
NCS
I
片选:
选择和激活MFRC500的微处理器接口。
10
NWR
I
写MFRC500寄存器写入数据D0~D7选通。
11
NRD
I
读MFRC500寄存器读出数据D0~D7选通。
12
DVSS
PWR
数字地。
13
D0~D7
I/O
8位双向数据总线。
20
AD0~AD7
I/O
8位双向地址和数据总线。
21
ALE
I
址锁存使能,为高时将AD0~AD5锁存为内部地址。
22
A0
I
地址线0,寄存器地址位0。
23
A1
I
地址线1,寄存器地址位1。
24
A2
I
地址线2,寄存器地址位2。
25
DVDD
PWR
数字电源。
26
AVDD
PWR
模拟电源。
27
AUX
O
辅助输出,该脚输出模拟测试信号,该信号可通过TestAnaOutSel寄存器选择。
28
AVSS
PWR
模拟地。
29
RX
I
接收器输入,卡应答输入脚,该应答为经过天线电路耦合的调制13.56MHz载波。
30
VMID
PWR
内部参考电压,该脚输出内部参考电压(注:
必须接一个100nF电容)。
31
RSTPD
I
复位和掉电,当为高时,内部灌电流关闭,振荡器停止,输入端与外部断开,该管脚的下降沿启动内部复位。
32
OSCOUT
O
晶振输出振荡器反向放大器输出。
3.工作原理
MFRC500的内部电路框图如图1.1所示,它由并行接口及控制电路、密钥存贮及加密算法(Cypto1)、状态机与寄存器、数据处理电路、模拟电路(调制、解调及输出驱动电路)等组成。
4.MFRC500寄存器设置
MFRC500芯片的内部寄存器按页分配,并通过相应寻址方法获得地址。
内部寄存器共分8页,每页有8个寄存器,每页的第一个寄存器称为页寄存器,用于选择该寄存器页。
每个寄存器由8位组成,其位特性有四种:
读/写(r/w)、只读(r)、仅写(w)和动态(dy)。
其中dy属性位可由微控制器读写,也可以在执行实际命令后自动由内部状态机改变位值。
微控制器MCU通过对内部寄存器的写和读,可以预置和读出系统运行状况。
寄存器在芯片复位状态为其预置初始值。
了解内部寄存器的设置对于软件编程至关重要,表1-2给出了寄存器的配置情况。
表1-2内部寄存器配置
页号
功能
寄存器地址
相应寄存器名
0
命令与状态
0~7
Page,Command,FIFOData6,PrimaryStatus,FIFOLengthF
SecondaryStatus,InterruptEn,InterruptRq
1
控制与状态
8~F
Page,Control,ErrorFlag,CollPosR,TimerValue
CRCResultLSB,CRCResultMSB,BitFraming
2
发送与编码控制
10~17
Page,TxControlCWConductanc,
PreSet13,PreSet14,ModWidth,PreSet16,PreSet17
3
接受与解码控制
18~1F
Page,RxControl1,DecodeControl,BitPhase,RxThreshold,PreSet1D,RxControl2,ClockQControl
4
定时和通道冗余码
20~27
Page,RxWait,ChannelRedundancy,CRCPresetLSB,
CRCPresetMSB,CRCPreSet25,MFOUTSelect,PreSet27
5
FIFO,定时器和IRQ引脚
28~2F
Page,FIFOLevel,TimerClock,TimerControl,TimerReload,
IRQPinConfig,PreSet2E,PreSet2F
6
备用
30~37
Page,RFU
7
测试控制
38~3F
Page,RFU,TestAnaSelect,PreSet3B,PreSet3C,TestDigiSelect,RFU,
5.并行接口
NCS
A2
A1
A0
D0~D7
ALE
NRD
NWR
片选低高高
复用地址/数据线
地址所存使能
读选通
写选通
图1-2复用方式连接图
MFRC500芯片可直接支持各种微控制器(MCU),也可直接和PC机的增强型并行接口(EPP)相连接,每次上电(PON)或硬启动(Reset)后,芯片会复原其并行接口模式并检测当前的MCU接口类型,通常用检测控制引脚逻辑电平的方法来识别MCU接口,并利用固定引脚连接和初始化相结合的方法实现正确的接口。
图1-2给出了本次设计相应的连接接线图。
6.EEPROM存贮器
MFRC500的EEPROM共有32块,每块16字节。
EEPROM存贮区分为四部分:
第一部分为块0,属性为只读,用于保存产品的有关信息;第二部分为块1和块2,它们具有读/写属性,用于存放寄存器初始化启动文件;第三部分从块3至块7,用于存放寄存器初始化文件,属性为读/写;第四部分从块8至块31,属性为只写,用于存放加密运算的密钥,存放一个密钥需要12字节,EEPROM密钥存放区共可存放32个密钥,实际密钥长度为6字节,存放在紧邻的12个EEPROM字节地址中。
一个密钥字节的8位必须分开存放,若设密钥8位为K7,K6,K5,K4,K3,K2,K1,K0。
则存放在两个相邻字节时为k7k6k5k4K7K6K5K4和k3k2k1k0K3K2K1K0,例如密钥字节为A0H时,则存放内容为5AH、F0H两个字节。
7.FIFO缓存
8×64位的FIFO用于缓存微控制器与芯片之间的输入/输出数据流。
可处理数据流长度达64字节。
FIFOData寄存器作为输入/输出数据流的并/并转换口;FIFOLength寄存器用于指示FIFO缓冲器的字节存储量、写时增量、读时减量;FIFO缓冲器的状态(如空、溢出等)可由寄存器PrimaryStatus、FIFOLevel的相关位指示;对FIFO的访问则可通过微控制器送出有效命令来实现。
8.中断请求
芯片的中断请求有定时设置到、发送请求、接收请求、一个命令执行完、FIFO满、FIFO空等六种。
0页寄存器InterruptEn的相应位(r/w属性)用于相应中断请求使能设置;InterruptRq的相应位(dy属性)用于指示使能情况下的相应中断出现。
任何允许中断产生时,0页寄存器PrimaryStatus的IRQ位(r属性)可用于指示中断的产生,同时可由引脚IRQ和微控制器进行连接以产生中断请求信号。
9.定时器
MFRC500内有定时器,其时钟源于13.56MHz晶振信号,13.56MHz信号由晶振电路(外接石英晶体)产生。
微处理器可借助于定时器完成有关定时任务的管理。
定时器可用于定时输出计数、看门狗计数、停止监测、定时触发等工作。
10.模拟电路
a.发送电路
RF信号从引脚TX1和TX2输出可直接驱动天线线圈。
调制信号及TX1、TX2输出的射频信号类型(已调或无调制载波)均可由寄存器TxControl控制。
b.接收电路
载波解调采用正交解调电路,正交解调所需的I和Q时钟(两者相差为90°)可在芯片内产生。
解调后由所得副载波调制信号要经放大、滤波相关器、判决电路进行副载波解调,其中放大电路的增益可由寄存器RxControl的设置来控制。
11.串行信号开关
串行信号开关用于桥接芯片数字电路和模拟电路两部分,两部分电路的输入/输出和外部应用所需的输入/输出可以灵活组合。
这种组合可借助MFIN和MFOUT引脚和相关寄存器来控制实现。
MFIN可输入曼彻斯特码、带副载波的曼彻斯特码,并由寄存器RxControl2的设置选择送至解码器。
若输入的是修正密勒码,则由寄存器TxControl设置选择送至发送通道的调制器。
MFOUT引脚上可输出曼彻斯特码、带副载波的曼彻斯特码、NRZ码、修正密勒码以及测试信号,具体可通过寄存器MFOUTSelect的不同设置来选择。
12.命令设置
MCRF500的性能由内部状态机保证,状态机可以完成命令功能。
寄存器Command的相应位存贮R命令码(属性为dy)可用于启动或停止命令执行。
命令大多可由写入相应命令码至Command寄存器实现,其所需变量和数据主要由FIFO缓冲器交换。
有关命令及功能如表1-3所列。
表1-3MFRC500命令及功能简介
命令
码
功能简介
Startup
3F
执行Reset和初始化,它仅能由PON和硬件Reset完成
Idle
00
取消当前指令执行
Transmit
1A
从FIFO发送到数据卡
Receive
16
激活接受电路
Rransceive
1E
发送FIFO数据至卡后,自动接受状态
WriteE2
01
从FIFO获取数据并写入EEPROM
ReadE2
O3
从EEPROM读取数据至于FIFO,但密钥不能读出
LoadKey
19
从FIFO读取一个密钥,将其写入密钥缓存器
LoadkeyE2
0B
从EEPROM拷贝一个密钥至密钥缓存器
Authent1
0C
完成从Crpto1认证的第一部分
Authent2
14
完成从Crpto1认证的第二部分
LoadConfig
07
从EEPROM读取数据,并初始化芯片寄存器
CalcCRC
12
激活CRC检测功能
13.认证与加密
Mifare类产品中加密算法的实现被称之为CRYPT01,它是一种密钥长度为48bit的流密码。
要访问一个Mifare类卡的数据,首先要完成认证,Mifare卡的认证采用三次认证的过程,这个过程可由自动执行Authbent1和Authbent2命令来实现。
三.Mifare1射频卡的结构和工作原理
1.工作原理
射频卡的电气部分由天线、1个高速(106KB波特率)的RF接口、1个控制单元和1个8K位EEPROM组成。
其工作原理如下:
读写器向射频卡发一组固定频率的电磁波,卡片内有1个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有1个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可作为电源为其他电路提供工作电压,将卡内数据发射出去或接收读写器的数据。
2.Mifare1结构和组成
每张卡有唯一的32位序列号,其工作频率为13.56MHz,存储量为1KB,分为16个
扇区,每扇区一组密码,各扇区的存储区域相互独立,每区可作为不同用途(第0区一般不用),实现一卡多用。
Mifare1卡可擦写10万次以上,其密码验证机制严密,可保证存储存信息的安全可靠;同时该卡具有防冲突机制,可支持多卡同时操作。
Mifare1卡有16个扇区,每个扇区又分为4块(块0、块1、块2和块3),每块16个字节,以块为存取单位。
除第0扇区的块0(即绝对地址0块)已经固化,用于存放厂商代码,不可更改之外,其余每个扇区的块0、块1、块2为数据块,可用于存贮数据,块3为控制块,包括密码A(6字节)、存取控制(4字节)和密码B(6字节).
Mifare1卡每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制,存取控制决定各块的读写权限与密码验证。
16扇区中的每块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的。
四.系统结构组成和工作原理
1.系统基本结构和工作原理
一个比较完整的读卡器系统主要包括有微控制器模块,射频处理模块,天线模块,显示模块以及与PC机得的信模块,其中MFRC模块可以产生载波信号驱动天线发射能量并能够处理经天线反射回来的载有标签信息的模拟信号,使之转化为数字电平。
MCU则用于控制其余模块。
液晶显示器可以系统获得的标签信息显示出来。
读卡器系统的结构框图如图1-3(a)所示。
系统工作原理图如图1-3(b)所示。
系统数据存储在无源Mifare1卡,也就是PICC(应答器)中。
PCD(读写器)的主要任务是传输能量给PICC,并建立与之的通信。
PICC是由一个电子数据作载体,通常由单个微型芯片以及用作天线的大面积线圈等组成;而PCD产生高频的强电磁场,这种磁场穿过线圈横截面和线圈周围的空间。
因为MFRC500提供的频率为13.56MHz,所以其波长比PCD的天线和PICC之间的距离大好多倍,可以把PICC到天线之间的电磁场当作简单的交变磁场来对待。
PICC中存在一个LC串联谐振电路,其频率与读卡器的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而是电容中有了电荷,在这个电容的另一端,接有一个单项导通的电子泵,将电容内的电荷存储到另外一个电容内,当所积累的电荷达到2V时,此电容可作为电源为其他的器件提供工作电压,将卡内的数据通过电磁波发送出去。
当天线接收到含有卡片信息的载波后,经过滤波得到的携带卡片信息的有用信号,该模拟信号经MFRC500处理后得到表示Mifare1卡信息的数字信号送入单片机中。
如上所述可以看出,PCD的性能与天线的参数有着直接的关系。
在对天线的性能进行优化之后,PCD的读卡距离可以达到10cm。
2.人机接口电路设计(显示器)
在本设计中,液晶显示屏主要功能是显示标签的信息,如标签的序列号等。
液晶显示屏有很多不同的种类,显示屏与单片机之间需要有驱动电路,本设计中选择的LCD1602液晶显示屏。
液晶显示屏也单片机的接口电路如图1-4所示。
3.MFRC500应用电路设计
MFRC500为32脚SO封装,使用了3个独立的电源以实现在EMC特性和信号解耦方面达到最佳性能。
除了模拟电源和数字电源外,MFRC500还对天线驱动电路单独设有电源,以此提高天线的驱动能力。
MFRC500具有出色的RF性能,并且模拟和数字部分可适应不同的操作电压。
方便的并行接口可直接连接到任何8位微处理器,这样给读写器的设计提供了极大的灵活性。
工作时需接一个13.56MHz的晶振。
4.与天线连接电路
MFRC500提供TXI和TX2两个发送端,采用中心抽头设计方法,以此提高抗干扰能力。
系统的工作频率由一个石英振荡器产生,它同时也产生高次谐波,因此在发送端需要使用低通滤波器:
低通滤波器由L0和CO构成。
天线接收到的信号经过天线匹配电路送到RX脚,使用内部产生的电势作为RX管脚的输入,另外还需在RX和VMID引脚之间连接一个分压器。
为了减少干扰,VMID引脚接一个电容到地。
MFRC500集成了一个正交调制电路,该电路从输入到RX脚的13.56MHzASK调制信号中解析出ISO14443-A副载波信号。
发送器管脚TX1和TX2上传递的信号是由包络信号调制的13.56MHz能量载波,只需要很少的用于匹配和滤波就可以直接驱动天线。
MFRC500与天线的连接电路如图1-5所示。
5.与单片机连接电路
MFRC500与AT89S52的连接电路主要包括地址、数据及控制线的连接。
MFRC500提供了8位并行数据AD0~AD7,地址A0~A2,片选信号口,读写控制口,复位口,中断请求口,地址数据复用时的地址锁存使能口。
当地址线和数据线复用时,A0、A1接高电平,A2接低电平,AD0~AD7同为数据地址线。
非复用时,A0,A2为低3位地址,其它3位由MFRC500内部的页选寄存器PAGESELECT的后三位确定。
本设计中采用地址数据总线复用的方式。
MFRC500与单片机的连接电路图如图1-6所示:
6.PCD的天线设计
由于MFRC500的频率是13.56MHz,属于短波段,因此可以采用小环天线。
小环天线有方型、圆形、椭圆型、三角型等,本系统采用方型天线。
天线的最大几何尺寸同工作波长之间没有一个严格的界限,一般定义为:
(1)
式
(1)中,L是天线的最大尺寸,λ是工作波长。
对于13.56MHz的系统来说,天线的最大尺寸在50cm左右。
在天线设计中,品质因数Q是一个非常重要的参数。
对于电感耦合式射频识别系统的PCD天线来说,较高品质因数的值会使天线线圈中的电流强度大些,由此改善对PICC的功率传送。
品质因数的计算公式为:
(2)
式
(2)中的f
是工作频率,是天线的尺寸,R
是天线的半径。
通过品质因数可以很容易计算出天线的带宽:
(3)
从式(3)中可以看出,天线的传输带宽与品质因数成反比关系。
因此,过高的品质因数会导致带宽缩小,从而减弱PCD的调制边带,会导致PCD无法与卡通信。
一般系统的最佳品质因数为10~30,最大值不能超过60。
五.系统软件的设计
1.主程序设计
图1-7为单片机系统主程序框图。
读写器在完成各项初始化后,就进入检测标签、扫描键盘、上位机的命令的循环,等待转入标签处理或各功能键处理子程序。
初始化过程包括对单片机、MFRC500、LCD的初始化
主程序如下:
#define__SRC
#include"main.h"
#undef__SRC
#include
#include
#include
#include
#include
#defineMIS_CHK_OK(0)
#defineMIS_CHK_FAILED(-1)
#defineMIS_CHK_COMPERR(-2)
//Function:
mifs_request
#defineIDLE0x00
#defineALL0x01
sbitRC500RST=P2^7;
sbitRC500_CS=P2^6;
sbitLED=P3^4;
ucharcodeSW_Rel[]="\n\rMFRC500V1.022.06.02\n\r";//释放标签序列号
staticuintCrc;//MRRC500序列号
voidinit(void);
codeNkey_a[6]={0xA0,0xA1,0xA2,0xA3,0xA4,0xA5};
codeNkey_b[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
voidmain(void)
{
unsignedcharcounter,counter2;
unsignedcharmfout=2;//readbuf[16];
unsignedchartt1[2];
unsignedcharstatus1;
unsignedcharcardserialno[4];
unsignedchar*sak1;
unsignedcharblockdata[16];
init();
M500PcdConfig();//初始化RC500
PcdReadE2(8,4,Snr_RC500);//读MF2RC500的系列号并存贮它
M500PcdMfOutSelect(mfout);
for(counter=0;counter<20;counter++)
{
status1=M500Pic