MIFARE卡射频识别应用技术概要
RFID的MIFARE 应用技术
MIFARE APPLICATION TECHNICHE of RFID
1382030133 许敏
摘要:MIFARE 卡是目前世界上使用量最大、技术最成熟、性能最稳定、内存容量最大的一种感应式智能IC卡(非接触性智能卡),是一种射频卡。MIFARE是Philips Electronics所拥有的13.56MHz非接触辨识技术。Philips并没有制造卡片或卡片读写器,而是在开放的市场上贩售相关技术与芯片,卡片和卡片读写器的制造商再利用它们的技术来创造独特的产品给一般使用者。MIFARE是一种非接触式智能卡的技术,这是因为它可以在卡片上兼具读写的功能而且不用紧靠 读写器(或读写芯片)。MIFARE I卡仅具备存储功能,必须搭配微处理器才能达到读写功能,而微处理型MIFARE 卡:MIFARE PRO(Philips) 就搭配了微处理器,能实现复杂多样的应用。与接触性智能卡相比,非接触式智能卡MIFARE卡 操作简单、快捷,抗干扰能力强,可靠性高,更加适合于一卡多用。本文介绍了:根据ISO14443A
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
,基于RFID(射频识别技术)上,以非接触性智能卡读写器/读写芯片,对MIFARE 卡进行射频识别的应用技术。简要介绍了MIFARE 卡的特性、结构、工作原理、通信原理和控制属性,以及非接触性智能卡读写器/读写芯片的结构和工作原理等。还简要介绍了MIFARE 卡的应用项目开发,本文选用MFRC500射频读写芯片来进行读写模块的应用
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
,简要阐述了MIFARE系统硬件电路设计应用技术和系统软件设计应用技术。
关键字:RFID MIFARE MIFARE卡 读写器/读写芯片 应用技术
1.绪论 ........................................................................................................................................... - 3 -
2.MIFARE 卡的特性结构、工作原理、通信原理和控制属性......................................................... - 4 -
2.1 MIFARE 卡的特性 ......................................................................................................... - 4 -
2.2 MIFARE 卡结构 ............................................................................................................. - 4 -
2.3 MIFARE 卡的存储结构 .................................................................................................. - 5 -
2.4 MIFARE 卡工作原理 ...................................................................................................... - 6 -
2.5 MIFARE 卡通信原理 ...................................................................................................... - 7 -
2.6 MIFARE 卡的控制属性 .................................................................................................. - 8 - 3.MIFARE读写器/芯片的结构和工作原理 ..................................................................................... - 9 -
3.1 MIFARE读写器/芯片的结构 ........................................................................................... - 9 -
3.2 MFRC500内部结构 .......................................................................................................- 10 -
3.3 MFRC500引脚说明 .......................................................................................................- 10 -
3.4 MFRC500芯片主要特性及应用......................................................................................- 11 - 4.读写器硬件设计.........................................................................................................................- 11 -
4.1 读写器总体构思、读写器的硬件 ....................................................................................- 11 -
4.2 MCU主控模块 ..............................................................................................................- 12 -
4.3 射频接口模块 ................................................................................................................- 13 -
4.4 天线设计部分 ................................................................................................................- 14 -
4.5 电源与存储模块 ............................................................................................................- 14 -
4.6 外设电路 .......................................................................................................................- 15 - 5. 读写器软件设计 .......................................................................................................................- 18 -
5.1 主程序流程 ...................................................................................................................- 18 -
5.2 MIFARE卡应用程序......................................................................................................- 18 -
5.3 其它部分程序设计 .........................................................................................................- 23 - 6.结论 ..........................................................................................................................................- 27 -
致谢 .............................................................................................................................................- 28 -
参考文献 ......................................................................................................................................- 29 -
- 2 -
1.绪论
射频识别(英文:Radio Frequency Identification,缩写:RFID)根据使用的能量和数据传输方法,RFID是一种非接触识别系统。RFID可以通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学联系。
RFID是物联网的核心技术之一,而物联网技术是继个人计算机、互联网和移动通信网络之后的全球信息产业的第三次浪潮。许多行业都运用了射频识别技术。将标签附着在一辆正在生产中的汽车,厂方便可以追踪此车在生产线上的进度。仓库可以追踪货物的所在。射频标签也可以附于牲畜与宠物上,方便对牲畜与宠物的积极识别(积极识别意思是防止数只牲畜使用同一个身份)。射频识别的身份识别卡可以使员工得以进入敏感机密的建筑部分,汽车上的射频应答器也可以用来征收收费路段与停车场的费用。某些射频标签附在衣物、个人财物上,甚至于植入人体之内。由于这项技术可能会在未经本人许可的情况下读取个人信息,这项技术也会有侵犯个人隐私忧患。但是,在MIFARE 卡中经由认证和加密模块,完全可以有效的保护个人隐私。
一套完整的RFID系统, 是由读卡器(读写器/读写芯片,R/Writer )与电子标签(TAG)也就是所谓的应答器(Transponder)及嵌入式应用软件系统三个部份所组成。如图1所示:基于MIFARE的RFID系统简便、清晰和低成本,但是却难得地高效率。
图1 基于MIFARE的 RFID系统构成图
RFID技术的基本工作原理:标签进入读写磁场后,按照ISO14443A协议,读写器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息(Passive Tag,无源标签或被动标签),或者由标签主动发送某一频率的信号(Active Tag,有源标签或主动标签),读写器读取信息并解码后,送至控制处理系统进行有关数据处理。
MIFARE是属于Philips Electronics所拥有的13.56MHz非接触辨识技术,它只在开放的市场上贩售相关技术与芯片,而把其他产品交给众多的下游生产商。伴随着超过50亿张智能卡和IC卡以及超过5 千万台读卡器的销售,MIFARE已成为全球大多数非接触式智能卡的技术选择。MIFARE 是一种非接触式智能卡的RFID技术,“一卡通”系统可采用 Mifare 卡读写技术研制开发而成,综合计算机技术、自动控制技术、网络通信技术、
- 3 -
智能卡技术、传感技术、模式识别技术、机电一体化技术的跨专业应用系统,是应用于智能楼宇、智能小区和现代企业、学校的智能化“一卡通”管理的一套性能价格比最优的全面解决方案。
2.MIFARE 卡的特性结构、工作原理、通信原理和控制属性
MIFARE 卡属于非接触型智能IC卡。IC卡(integrated circuit card),即集成电路卡。是将一个专用的集成电路嵌入到塑料基片中,封装成卡的形式。非接触型智能IC卡分为两大类卡:存储器型和微处理型。存储器型是单一非接触存储器型,MIFAREI(Philips)、STM系列(STMicroelectronics)。微处理型是双界面处理器型,比如MIFARE PRO(Philips)、 Mifare Desfire (Philips) 、Moorola、STM系列(STMicroelectronics)、SLE66CLxxS (Siemens)等。微处理型安全性较高一些。MIFARE 卡执行ISO14443A协议,本文主要介绍微处理型MIFARE 卡:完全支持一卡多用,可靠、灵活、安全、方便。
2.1 MIFARE 卡的特性:
非接触数据传输并提供能源(不需电池),工作距离:可达100mm (取决于天线尺寸结构),工作频率:13.56 MHz,快速数据传输:106 kbit/s,高度数据完整性保护:16 Bit CRC,奇偶校验,位编码,位计数。真正的防冲突/防冲撞 , 典型票务交易: < 100 ms (包括备份管理)。EPPROM 容量 1 Kbyte,分为16 个区,每区4 个块,每块16 字节。用户可定义内存块的读写条件, 数据耐久性10 年,写入耐久性100000 次,安全性为相互三轮认证(ISO/IEC DIS9798-2),带重现攻击保护的射频通道数据加密,每区(每应用)两个密钥,支持密钥分级的多应用场合,每卡一个唯一序列号,在传输过程中以传输密钥保护对EEPROM 的访问权。
2.2 MIFARE 卡结构
MIFARE 卡结构分为:天线、RF接口模块、数字控制单元、EEPROM存储器。
图2 MIFARE 卡结构图
- 4 -
RF 接口: 包含了调制解调器、检波器、时钟发生器、上电复位、稳压器。对射频信号波发送、接收和调制解调,还可对卡充电复位。
防冲突:读写范围内的几张卡可以逐一选定和操作。智能的防冲突功能可以同时操作读写范围内的多张卡。防冲突算法逐一选定每张卡,保证与选定的卡执行交易,不会导致与读写范围内其他卡的数据冲突。
认证:在所有存储器操作之前进行认证过程,以保证必须通过各块指定密钥才能访问该块。安全认证的重点是防欺诈。相互随机数和应答认证、数据加密和报文鉴别检查和,防止各种破解和篡改,使其更适于票务应用。不可更改的序列号,保证了每张卡的唯一性。
控制和算术逻辑单元:数值以特定的冗余格式存储,特定命令有读数据块、写数据块、增数据值、减数据值、恢复、转存(read、 write、increment、decrement,、restore、transfer)。
EEPROM 接口:EEPROM的接口电路。
加密单元:域验证的CRYPTO1数据流加密,保证数据交换的安全。
EEPROM: 1 Kbyte,分16 区,每区4 块。每一块有16 字节。
图3 厂商代码块示意图:
2.3 MIFARE 卡的存储结构
EEPRAM存储器总共分为16个区,每区4块,每块16字节。每区的最后一块称作“尾块”,含有两个密钥和本区各块的读写条件。厂商代码块:这是第1 区的第1 块(块0)。它含有集成电路制造商数据。出于安全和系统需求,此块是制造商在生产过程中编程后写保护的。
数据块:各区均有3 个16 字节的块用于存储数据(区0 只有两个数据块以及一个只读的厂商代码块)。数据块可以通过读写控制位设置为:读写块(用于非接触门禁管理), 数值块(用于电子钱包,另有可直接控制存储值的命令,如增值、减值。此外,在任何存储器操作之前必须执行认证命令。)
数值块:数值块具有电子钱包功能(有效命令:read, write, increment,decrement,
restore,transfer)。数值块有固定的数据格式,以便于错误检测、纠错和备份管理。数值块只能通过以数值块格式的写操作生成。
数值:有符号4 字节数值。数值的最低字节存储在最低地址字节。负值以
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的 2 的 补码形式存储。出于数据完整性和安全原因,数值存储三次,两次不取反,一次取反。
- 5 -
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
1 1024 x 8 bit EEPRAM存储器结构
地址(Adr):1 字节地址,当进行备份管理时,可用于保存块的地址。地址保存四次。两次取反,两次不取反。在increment、decrement、restore 和transfer 操作中,地址保持不变。它只能通过write 命令更改。
表2 数值块存储结构
2.4 MIFARE 卡工作原理
卡片由一个卷绕天线和特定用途集成电路模块组成。其中,模块由一个高速(106KB波特率)的RF接口。一个控制单元和一个8K位E2PROM组成。读写器向MF1卡发出一组固定频率(13.56MHZ)的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使谐振电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到模块存储电容内储存,当所积累的电荷达到2V以上时,此电容可作为电源向模块电路提供工作电压,将卡内数据发射出去或接收读写器的数据。射频卡由耦合元件及微电子芯片组成,没有供电电源,它的能量、时钟脉冲以及数据都是通过耦合单元由读写器提供,并回送信息给读写器。L1为
MK,L1L2读写器PCD发送天线,L2是射频卡PICC的天线,其耦合系数(L1、L2为两个线圈的自感系数,M为互感系数),其耦合回路电路如图4所示。
- 6 -
图4 耦合回路等效电路图
MIFARE射频卡由天线和ASIC(专用集成电路)组成,天线是只有几组绕线的线圈,卡上的ASIC由一个高速(波特率106kbit,s)的RF接口,一个控制单元和一个8K位EEPROM组成。读写器向射频卡发送一组固定频率的电磁载波,卡片内有一个LC串联谐振电路,其频率与读写器发送的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内产生电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内存储,当所积累的电荷达到2V时,此电容可作为电源为其它电路提供工作电压,将卡内数据发射出去或接收读写器的数据。
2.5 MIFARE 卡通信原理
MIFARE卡的通信原理流程:休眠、呼叫、防冲突循环、选卡、三轮认证、存储器操作、返回休眠态,如图5所示:
休眠 在没有进入读写器/芯片的工作范围时,MIFARE 卡处于休眠状态。
呼叫 进入读写器/芯片的工作范围时,MIFARE 卡被唤醒,卡上电复位后,向读写卡/器发回requst应答码.能够回应读写器向天线范围内所有卡发出的request 命令。
一张卡的序列号。即从工作范围内的冲突循环 在防冲突循环中,读写卡/器读回某
1-n张卡中,读回其中一张卡序列号,并可选定以进行下一步交易。其它未被选定的卡转入休眠状态,等待新的requst命令。
选卡 读写器/芯片选定一张卡。卡返回选定的应答码(ATS= 08h),明确所选的卡型。
三轮认证 选卡后,读写器/芯片指定后续读取的存储器位置,采用加密算法,使用相应密钥进行三轮认证。认证成功后,所有的存储器操作都是加密的。采用符合ISO 9798-2 的三轮认证,以保证高度的安全性。三轮认证流程: a) 读写器指定要访问的区,并选择密钥A 或B。b) 卡从位块读区密钥和访问条件。然后,卡向读写器发送随机数。(第一轮)c) 读写器利用密钥和随机数计算回应值。回应值连同读写器的随机数,发送给卡(第 二轮)。d) 卡通过与自己的随机数比较,验证读写器的回应值,再计算回应值并发送(第三轮)。e) 读写器通过比较,验证卡的回应值。这样认证加密后,就有效的保护了个人隐私。
存储器操作 认证成功后,可进行下列存储器操作:读数据块、写数据块、减值(减少数据块内的数值,并将结果保存在临时内部数据寄存器中)、加值(增加数据块内的数值,并将结果保存在数据寄存器中)、恢复(将数据块内容移入数据寄存器)、转存(将
- 7 -
临时内部数据寄存器的内容写入数值块)。
返回休眠态 完成存储操作后,MIFARE卡进入休眠状态,等待下一次唤醒。
图5 卡通信原理流程图
2.6 MIFARE 卡的控制属性
EEPRAM存储器扇区的块3为控制块,包括密码A、存取控制、密码B,如表3:
表3 控制块结构
每个扇区的用户密码和存取控制条件都是独立设置的,可以根据实际需要设定各自的密码及存取控制。在存取控制中,每个块都有三个控制位相对应,用以决定某数据块或控制块的读写条件,定义为:“CXxy”,见表4所示。
其中CX代表每块控制位号(C1,C3),x代表某块所属扇区号(0,15), y代表该扇区内某块号。例如C1x2 即为x扇区内块2的第1控制位,依此类推。各扇区数据块0,块2的三个控制位以正反两种形式存在于块3的存取控制字节中,它决定了该块的访问权限(例如进行减值及初始化值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)。其
- 8 -
表4 控制位定义
三个控制位在存取控制字节(6,9字节)中的权限如下(阴影区的存取控制为厂商初始值;字节9为备用字节,默认值为69)。
表5 数据块的存取控制权限(x=0,15扇区; y=块0,块1,块2)
3.MIFARE读写器/芯片的结构和工作原理
3.1 MIFARE读写器/芯片的结构
射频卡读写器的核心部分即硬件电路系统,包括MCU主控制模块、射频模块、读写器天线、存储模块时钟模块、显示模块、键盘模块、通讯模块及声光报警模块。 不同类型的非接触IC卡,由于采用的通信协议不同,相应的射频读写芯片也不同,如表6所示。目前在中国的市场上,非接触式IC卡主要的厂商有:中国的华虹、复旦微电子、以及荷兰Philips、瑞士LEGIC、法国意法半导体(ST)、日本索尼等,其中基于Philips公司MIFARE 芯片的产品在市场上占有绝对的优势。鉴于国内市场上MIFARE芯片卡应用广泛,我们采用Philips公司生产的射频处理基站芯片。MFCM 200与MFCM 500是第一代MIFARE读写器模块,现已停产,Philips新推出的集成化单颗射频基站芯片RC系列是CM模块系列的替代产品,且性能更稳定、功耗更低、应用更灵活、价格更低廉。
表6 MAFARE读写器芯片
- 9 -
本方案选用MFRC500射频读写芯片来进行读写模块的设计。MFRC500的性价比最高,市场应用最为广泛,购买也最方便,且内部有高集成的调制解调模块,内部发射器可直接驱动基于13.56MHz的非接触式天线,最大距离可达10cm。
3.2 MFRC500内部结构
MFRC500 的内部EEPROM 分为四个部分,分别用于存放产品的信息,启动寄存器初始化文件,寄存器初始化文件,Cryptol 密匙区。同时还有 8*64 位的 FIFO 缓冲区,它缓冲微处理器和 MFRC500 之间输入和输出的数据流。MFRC500 内部有完善的中断系统,其中包括内部定时器中断、发送器中断、CRC 效验中断、E2PROM 中断、接收器中断、命令寄存器中断、FIFO 缓冲区的空和满中断等等,相关的中断源都可以通过 IRQ 脚上的信号触发微处理器产生中断,这就使微处理器的软件更为有效。MFRC500 内部有一个定时器,它由片内 13.56MHz 时钟驱动。微处理器可使用该时钟管理与定时有关的任务。定时器单元可配置为以下几种方式之一:超时计数器、看门狗、停止监视、可编程单次触发、周期触发等。
MFRC500支持ISO 14443A所有的层,模拟电路部分内含射频发送器和接收器。发送器不需要增加有源电路就可以直接驱动工作,接收器对来自符合ISO 14443A协议的卡的信号
位并行微控制器接口可自动检测连接的接口类型,它包括进行解调、译码。MFRC500的8
一个双向FIFO缓冲区和一个可设置的中断输出。方便的并行接口可与各种8位微处理器直接连接,给读写器终端的设计提供了极大的灵活性。数据处理部分则主要进行ISO 14443A帧的封装和错误检测(支持CRC校验和奇偶校验)。通过状态和控制部分可以对芯片进行配置,以适应环境并使芯片性能调节到最佳状态。
3.3 MFRC500引脚说明
MFRC500共有32个引脚可以分为以下几类:
(1)电源类引脚 EMC特性和信号解耦方面达到最佳性能,器件使用3个独立的电源:TVDD,TVSS(6脚,8脚):天线驱动部分的单独电源。
AVDD,AVSS(26脚,28脚):模拟部分的单独电源。
DVDD,DVSS(25脚,12脚):数字部分的单独电源。
(2)天线引脚 TX1,TX2(5脚,7脚):发送器引脚。MFRC500通过TX1和TX2发送13.56MHz的能量载波。RX(29脚):模拟天线输入信号。VMID(30脚):天线部分的内部参考电压。
(3)复位引脚 RSTPD(31脚):禁止内部电流源和时钟,并使MFRC500从微控制器总线接口脱开。当出现一个从高到低的电平跳变时RC500复位,即当该引脚为高时,RC500停止工作;为低电平,RC500才能正常工作。如果RSTPD置位,则MFRC500执行上电时序。(辅助管脚 可选择内部信号驱动该管脚AUX,作为设计和测试之用。)
(4)晶振引脚 OSCIN,OSCOUT(1脚,32脚):晶振的输入、输出引脚。电源振荡器缓冲输出13.56MHz晶振通过快速片内缓冲区连接到OSCIN和OSCOUT,如果器件
- 10 -
采用外部时钟,可从OSCIN输入。
(5)串行接口 MFIN,MFOUT(3脚,4脚):MIFARE接口输入、输出引脚。
(6)并行接口 MFRC500有16个引脚用于控制并行接口:
AD0,AD7(13脚至20脚):8位双向数据总线(也可复用为地址线)。
A0,A2(22脚至24脚):地址线输入。
NCS(9脚):片选信号,选择RC500的并行微控制器接口。输入高电平有效。
NWR(10脚):写信号线,输入低电平有效。
NRD(11脚):读信号线,输入,低电平有效。
ALE(21脚):地址锁存允许引脚,输入,高电平有效。
IRQ(2脚):中断请求引脚,当有中断事件发生时产生中断信号。输出高电平有效 3.4 MFRC500芯片主要特性及应用
该芯片的主要特性有:
(1)高集成度模拟电路用于射频卡应答信号的解调和解码;
(2)缓冲输出驱动器使用最少数目的外部元件连接到天线;
(3)支持ISO,IEC 14443A国际标准;
支持MIFARE双界面卡和MIFARE典型协议; (4)
(5)支持波特率高达424 kHz的通信速率;
(6)灵活的中断处理及可编程定时器;
(7)近距离操作可达100mm;
(8)带低功耗的硬件复位和软件实现掉电模式;
(9)并行微处理器接口带有内部地址锁存和IRQ线;
(10)自动检测微处理器并行接口的类型;
(11)64 Byte发送和接收FIFO缓冲区;
(12)面向位和字节的帧;
(13)唯一的序列号,可靠的内部非易失性加密存储器;
(14)连接到13.56MHz晶振上的内部振荡缓冲器具有优化的低相位去抖动;
(15)在近距离应用中,发送器采用电压3.3V,5V;
MFRC500适用于各种基于ISO,IEC 14443A标准,主要应用于要求低成本、小尺寸、高性能以及单电源的非接触式通信的应用场合:计量、公共交通终端、手持终端、板上单元、非接触式PC终端、非接触式公用电话等
4.读写器硬件设计
4.1 读写器总体构思、读写器的硬件
从功能上来划分大致可分为几个模块,包括MCU主控制模块、天线、射频接口模块、储存模块、时钟模块、显示模块、声光报警模块等。读卡器用STC89C52RC作为单片机主
- 11 -
控制器。单片机控制MFRC500驱动天线对MIFARE卡进行读写操作,SED1520作显示驱动器驱动LCD液晶显示器,PS,2总线作为通用编码键盘接口, LCD显示器与声光报警作为人机交互接接口,MAX232作串口信号转换把数据传给上位机。
图6 硬件系统组成
4.2 MCU主控模块
MCU主控电路是射频卡读写器的核心部分,主要负责系统上电后对各个模块的初始化、控制通信模块完成与上位机进行串行数据通信、控制显示模块显示数据、声光报警、控制射频模块通过天线完成对射频卡的各种操作等,保证系统能够有序、稳定的工作,其主控电路如图7所示。
图7 主控电路
在单片机选型的过程中主要考虑了单片机的计算速度、处理能力、稳定性、定时器和中断资源、片内集成的ROM大小等因数。从众多的八位微处理器中选择了意法半导体公司(STMicroelectronics)的STC89C52RC单片机作为系统的MCU,它是MCS.51单片机的扩展型号,其指令与MCS.51系列单片机完全兼容,是目前所有内部集成Flash存储器产品中功耗最低的一种。
- 12 -
STC89C52RC内置15K的Flash存储器和512字节RAM,具有3个16位计数器和一个标准的串行通信口,支持ISP程序下载,方便程序的调试,此外它还具有良好的温度特性、稳定性和性价比。
4.3 射频接口模块
射频接口模块主要包括RF接口电路,在简单的介绍了RF接口电路在RF射频接口电路中,其结构框图如图8所示。
图8 RF接口电路框
- 13 -
图9 RF接口电路
主要包括有波形转换模块,它可将读写器发出的13.56MHz的无线载波调制频率接收,一方面送调制解调模块,另一方面进行波形转换,将正弦波转换为方波,然后对其整流滤波,由电压调节模块对电压进行进一步的处理,最终输出供给卡片上的各电路使用。
在介绍了MFRC500芯片相关资料,根据其寄存器的设定对发送数据进行调制得到发送的信号,通过由天线驱动引脚TX1和TX2驱动的天线以13.56MHz的电磁波形式发送出去,在其射频范围内的非接触卡采用RF场的负载调制进行响应。天线接收到卡片的响应信号经过天线匹配电路送到MFRC500的接收引脚RX,芯片内部的接收器对接收信号进行解调、译码,并根据寄存器的设定进行处理,最后将数据发送到并行接口由微控制器读取。根据MFRC500的典型应用电路和系统本身的特点设计了射频接口部分的电路,如图9所示。
4.4 天线设计部分
为了获得稳定、可靠的射频信号,天线部分的电路设计非常关键。设计读写模块的天线电路时,主要分四个部分:EMC低通滤波器、接收电路、天线匹配电路和天线。由于加入了保护层,使 IC 与卡片上的天线组成的振荡回路的频率将发生变化,所以保护层给 IC 微晶片增加了一个输入只有几个pF至几十个pF回路电容,对于要求频率精度、稳定度等都很高的非接触式IC射频卡来说也至关重要。这一部分参考了Philips公司所提供文档中的推
所示。 荐电路图,如图10
图10 天线电路
4.5 电源与存储模块
电源与存储模块主要包括电源电路、存储电路。
电源电路
考虑到该电流源输出电压在10V以内,最大输出电流不大于2000mA,由公式P=UI可以粗略估算电流源的功耗为20W。单片机控制系统以及外围芯片供电采用78系列三端稳压器件,通过全波整流,然后进行滤波稳压完成读写器的通信,其电路图如4-6所示。
L1是一个100uH的电感,交流阻抗大,以防止总线上的高频干扰窜入结点电路。二
- 14 -
极管VD1的作用有两个:一是降低集成稳压电路7805的输入电压;二是防止总线断电时,电容C1上所储存的电荷向总线释放;电容C1、C2是滤波电容; C3、C4是去耦电容;7805是+5V的集成稳压电路。
存储电路
根据系统应用需求的特点,存储器件必须具有掉电后数据不丢失的特性。存储模块用来存储系统用户卡的16个扇区32套密码,以便在验证密码时,单片机从存储模块中读取特定扇区的密码,通过射频模块校验特定扇区的密码,用RAMTRON INTERNATIONAL公司生产的一种铁电存储器(FRAM)FM24C16作为存储介质。
图11 电源电路
FM24C16的存储容量为2048×8bit,共分8页,每页256B,工作电压为+5V。系统中
2采用单片机的两个I/O口模拟IC总线的时钟线和数据线同FM24C16通信,完成数据的读写操作。FM24C16芯片主要引脚。SDA I/O 串行数据,地址:在两线协议中,这是一个双向数据线,用来送串行数据和地址为开漏输出,需要加上拉电阻。SCL 输入串行时钟:两线接口串行时钟输入,数据在SCL的下降沿输出,数据在SCL的上沿输出,需要加上拉
图12 存储电路
电阻。WP 输入写保护:当WP为高电平时,物理地址A2=1时,存储器的上半部地址的数据被保护,数据禁止写入;当WP为低电平时,所有地址都能写入,此脚不能悬空。 4.6 外设电路
外设电路 RS-232接口电路、时钟电路、看门狗电路、状态指示灯、蜂鸣器电路如下:
- 15 -
图13 RS-232接口电路
图14 时钟电路
图15 看门狗电路
- 16 -
声光示警电路包含蜂鸣器电路和状态指示灯,以下声光示警电路模块:
图16 蜂鸣器电路 图17 状态指示灯
人机交互界面模块
人机交互界面模块主要有液晶显示电路和声光示警电路构成。
液晶显示器(LCD)具有显示信息丰富、功耗低、体积小、重量轻、超薄等许多其他显示器无法比拟的优点,近几年来已经越来越多地应用于单片机控制的智能仪器、仪表和低功耗仪器仪表及各种电子消费品中,其应用方法也越来越受到广大工程技术人员的关注。本文介绍一种122×32图形液晶显示器LCM12232B(无背光)的应用。
LCM12232B液晶显示器的控制芯片是SED1520,而且在其PCB板上通常有两片SED1520,每片 SED1520横向61点,纵向有16点,故两片SED1520可控制横向122点,纵向32点,如果以8×8点阵字符而言,每行可显示15个字符,二行共计30个8×8点阵字符,可显示14个汉字,这种LCD正是目前中文BP机所用的类型。 其主要功能说明如下:
VEE:LCD驱动电源5~10V;CL: 外部时钟输入端2KHz;
E/RD,R/W:读写信号输入端,低电平有效;
CS1,CS2:控制芯片SED1520的左,右半边的片选使能端;
V LED ,,V LED ,:空接或背光引脚,可预留做背光电源的输入;
A0:(数据/指令)寄存器选择线,低电平时数据D0-D7将送入指令执行器;高电平时数据D0-D7将送入显示RAM。
声光示警模块主要包括蜂呜器和LED指示灯两个部分的电路。
蜂鸣器起到声音提示的作用,例如开机提示、验证卡片密码失败、对卡片读写的过程中发生了错误进行提示等。由于单片机的I/O口驱动能力有限,一般不能直接驱动压电式蜂鸣器,因此选用NP型三极管9012组成驱动电路,单片机P1.1口输出经驱动电路放大后即可驱动蜂鸣器,其电路图如图16所示。
单片机采用5V供电,当P1.1输出高电平时,三极管截止,集电极无电流,蜂鸣器不响;当P1.1输出低电平时,三极管导通,蜂鸣器发出声音,从而可通过控制P1.1脚的高低电平变化来控制蜂鸣器的是否发生,发声次数和频率等。
- 17 -
读写器设计中设计了两个状念指示灯完成读卡器状态的说明,在设计中将所LED发光所需要的驱动能力交给电源完成,加一个电阻限流,通过设置I/O口为低电平就可以让发光二极管亮。
5. 读写器软件设计
射频卡读写器的软件系统主要分为:主程序、MFRC500的应用程序、及其它电路程序。其它部分电路程序设计包括液晶显示程序设计、时钟显示部分的程序设计、声光报警程序设计等。
5.1 主程序流程
主程序主要负责各个模块的控制、协调各个模块之间的工作,并根据上位机的命令完成对各个模块的操作,在系统上电后负责对系统各个模块的初始化、自检、单片机自身资源的初始化(包括定时器的初始化、串口的工作方式和波特率等)、实时显示当前时间。刷新时间采用的是通过定时的方式完成实时显示系统时间,用一个定时器作20ms的定时,每到20ms的时间产生一次中断,在定时中断服务子程序中主程序从日期时钟芯片读出特定数据格式的时钟数据,并对数据解析出时、分、秒后送到12232LCD显示,从而完成实时显示时间的功能。主程序流程图如图18所示。
图18 主程序流程图
5.2 MIFARE卡应用程序
主要介绍MFRC500的基本操作和MIFARE卡操作程序。
MFRC500的基本操作
MCU通过对MFRC500的基本操作,实现对射频卡的读写等各种控制。对MFRC500的控制是通过读,写它的寄存器来实现的,通过MFRC500的FIFO缓冲区来传递参数和 交换数据,MFRC500内部有64个寄存器,这些寄存器被分为8页,每页有8个寄存器。
- 18 -
无论页是否被选中,页寄存器总是可以被访问,其控制程序用Keil C语言实现对寄存器的
访问。
(1)从指定寄存器中读数据的程序代码:
unsigned char ReadRawRC(unsigned char Address)
{
unsigned char pdata,pa;
RC50-CE=0;
pa=Address;
return(pa);
}
(2)向指定寄存器中写入数据代码:
Void writeRawRC(unsigned char Addrcss,unsigned char value)
{
unsigned char pdata,pa;
pa=Address;
pa=Value;
}
(3)给指定寄存器中数据的某一位置位代码:
void SetBitMaSk(unsigned char reg,unsigned char mask)
{
char tmp=0x0;
tmp=ReadRawRC(reg);
wfitcRawRc(re,tmp l mask);
(4)给指定寄存器中数据的某一位清零代码:
Void ClearBitMaSk(unsigned char rcg,unsigned char mask)
{
char tmp=0x0;
tmp=ReadRawRC(reg);
writeRawRC(fetmp&,mask);}
MIFARE卡操作程序:
当有多张射频卡同时进入读写器天线的有效工作范围内时,必须执行防冲突操作,返
回其中一张卡的序列号,作为本次操作的对象。在成功执行防冲撞操作得到其中一张射频
卡的序列号之后,若读写器想继续同该卡片进行通信,必须执行选卡操作,以建立与所选
卡片的通信。为了保证对射频卡操作的合法性,在对卡片进行各种读写操作之前必须在卡
片和读写器之间进行密码认证。
- 19 -
读写器对任何一张射频卡片进行任何操作都要经过上述几个步骤,之后才可以对卡片进行相应的读块、写块、加值、减值、休眠等。其操作的流程如图19所示。
1(寻卡操作
当有卡进入读写器天线工作范围内,读写器发出寻卡(Request)命令,卡上的ATR将启动,将卡上第0扇区的第0块上的卡片类型代码(CardType)共两个字节,数据发给读写器,建立卡与读写器的第一步通信联络,如果不进行寻卡操作,接下去的操作无法进行。
寻卡操作有两种类型,第一种Requestl,命令代码0x52H,所有在读写器天线范围的卡均对此操作进行响应;第二种Request Idle,命令代码0x26H,在读写器天线范围内的处于挂起的卡不对此操作响应,其余的卡均响应。寻卡函数如下:
图19 射频卡流程图
char PcdRequest(unsigned char req_pode,unsigned char *type)
{
char status:
unsigned int unLen;
unsigned char idata ucComBuf[FSD];
vriteRawRc(RegChannelRedundancy,0x03);
ClearBitMask(RegControl,0X08);
writeRawRc(RegBitFraming,0x07);
SetBitMask(RegTXControl,0x03);
PcdSetTmo(106);
- 20 -
ucComBuf(0)= reqode;
status=PcdComIS014443(PCD TRANSCEIVE,ucComBuf,ComBuf,&unLen);
if((status==0x00),,(unLen==0xl0))
{
pTagType = ucComBuf [0];
(pTagType+1)= ucComBuf [1];
else
{ status= 0x01;}
Return StatuS;
}
recode为输出参数,表示寻卡方式,代码0x52为寻感应区内所有符合ISO 14443A标准的卡,代码0x26为寻卡未进入休眠状态的卡。
pTagType为输出参数,表示返回的卡片类型代码,0x0004表示MIFARE 1卡,0x0010表示MIFARE卡。
2(防冲撞操作
在寻卡操作之后,要进行防冲突操作,得到一张卡片的序列号。由于卡的序列号是唯一的,不可能重复,可以保证下一步只对一张卡片进行操作。防碰撞函数如下:
char PcdA-Ilticoll(unsigned char *pSnr)
{
……
}
pSnr为输出参数,表示返回卡片4个字节的序列号。
3(选卡操作
在卡片成功的完成寻卡、防冲撞操作后,可以对指定序列号的卡进行选卡操作,被选中的卡片可以进一步同读写器进行通信,其它卡恢复到初始状态。选择卡操作函数:
char PcdSelect(unsigned char*pSnr)
{
……
}
4(认证操作
为了访问卡的EEPROM存储器中存放的数据,必须进行认证操作即验证密码。验证密码的过程首先MCU要将正确的密钥传递给MF R500放入它的密钥缓冲区中,然后比较密钥缓冲区中存放的密钥与射频卡每个扇区的最后一块中存放的密钥是否一致,若一致则可以对卡片进行下一步操作,不一致则不允许对进行下一步操作。
其函数如下:
- 21 -
chaf PcdAuthState(unsigned char auth—mode,unsigned char addr'unsigned char*psnr)
{
……
}
auth-mode为输入函数,表示密码验证模。0x60为验证扇区的A密码为验证扇区的B密码。Addr为输入函数,表示需要验证密码的数据块地址。pSnr为输入参数,表示4字节的需要验证密码卡片的卡片序列号。
读写器在工作时,首先上位机将系统对象卡的16个扇区的32套密码通过串口发送给读写器,读写器按
规划
污水管网监理规划下载职业规划大学生职业规划个人职业规划职业规划论文
好的存储方案将其存入FM24C16中,在需要验证某个扇区的密码时,MCU将特定扇区的密码从FM24C16中取出,同时传递给MFRC500并将密码放到密钥缓冲区中,其函数如下:
char PcdGetKby(unsigned char mode,unsigned int addr,unsigned char*keys)
{ ……
}
mode为输入函数区的密码。Addr为输入函数表示密码验证模,为验证扇区的A密码,0x61为验证扇表示取得密码的数据块的地址。keys为输出函数,表示从FM24C16中取得的需要的数据块的密码。
char PcdAuthKey(unsigned char *pKey)
{
……
}
pKey为输入函数,表示需要传送到MFRC500密钥缓冲区中的密码。
5(读操作
经过认证过程后,卡片访问控制条件为允许读时,可以从卡中读出其EEPROM中的值,每次读出16个字节一块的数据。其函数如下:
char PcdRead(unsigned char addr,unsigned char *pData)
{……
}
addr为输入函数,表示需要读操作的块的块地址,取值范围为0,63。
pData为输出函数,表示读出的指定块中的16字节数据。
6(写操作
经过认证验证密码以后,卡的访问控制条件为允许写时,可以通过写操作将数据写入到卡的EEPROM中,每次写入16字节一整块数据。其函数如下:
char Pcdwrite(unsigned char addr,unsigned char*pData)
{……
- 22 -
}
addr为输入函数,表示需要写操作的块的块地址,取值范围为0,63。
pData为输出函数,表示写入指定块中的16字节数据。
7(值操作
当的块的属性设定为值块时,并进行了块值的初始化后,就可以进行值操作,值操作包括加值、减值、传输。加值操作读取卡指定块的值,检查值的合法性,增加指定的值,将结果存放到卡的内部中间寄存器中。减值操作读取卡指定块的值,检查值的合法性,减少指定的值,将结果存放到卡的内部中间寄存器中。传输操作将卡内部中间寄存器的内容传送到卡的EEPROM中,该函数是在加值操作、减值操作后调用的。其函数如下:
char PcdValue(unsigned char d_mode,unsigned char Addr,unsigned char *pValue)
{
……
}
d_mode为输入函数,表示值操作的命令字,0xC0表示减值,0xCl表示加值。
Addr为输入函数,表示要进行值操作的块地址。
pValue为输入函数,表示4字节增(减)值,低位在前。
8(挂起操作
挂起操作将卡片设置为“HAI=I'MODE”,例如卡片已经退出使用。被系统挂起的卡片不能够被系统继续进行操作,直到将卡片移出读写器天线的工作区再一次重新进入到天线的工作区,系统才能够对其进行下一次操作。其函数如下:
char PcdHalt( )
{
char status;
unsigned int unLen;
unsigned char idata nccomBuf [FSD];
ucComBuf{01=PICC_HAI,
ucC0_mBuf(1)=0;
status = PcdComIS014443(PCD TR ANSCElVE,ucComBuf, ucComBuf,
&unLen);
Return 0x00;
以上所有函数操作成功返回值为0,否则返回相应的错误代码。 5.3 其它部分程序设计
主要有液晶显示部分程序设计、时钟部分程序设计和声光示警部分程序设计。
液晶显示程序设计
由第四章介绍LCD液晶显示原理,在此给出12232无背光显示器的软件程序:
- 23 -
#include
#define uchar unsigned char #define uint unsigned int sbit SCLK = P3.4; //液晶时钟线
sbit SDAT = P3.5; //液晶数据线
void SEND_BYTE_LCD(uchar data_to_lcd);
void SEND_DATA_SER(bit codeordata, uchar SERIAL_DATA);//code 为1
void wrlcd(uchar HANG, uchar LIE, uchar *SENTENCE); void lcdinit(void);
void delay(uchar deltime);
/*********************************************************/
延时程序:
/********************************************************/
void delay(uint deltime)
{
uchar i;
uint j;
for (j = 0;j < deltime; j++)
for (i = 0; i < 255; i++);
}
/*********************************************************
液晶写命令子程序
**********************************************************/
void SEND_BYTE_LCD(uchar data_to_lcd)
{
uchar j;
for (j = 0; j < 8; j++)
{
SDAT = (bit)(data_to_lcd &0x80);
SCLK = 0;
SCLK = 0;
SCLK = 0;
SCLK = 0;
SCLK = 0;
- 24 -
SCLK = 1;
SCLK = 1;
SCLK = 1;
SCLK = 1;
SCLK = 1;
data_to_lcd <<= 1;
SCLK = 0;
SCLK = 0;
SCLK = 0;
SCLK = 0;
SCLK = 0;
}
}
void SEND_DATA_SER(bit codeordata, uchar SERIAL_DATA)
{
uchar first, second, third;
if (codeordata)
{
first = 0xf8;
}
else
{
first = 0xfa;
}
second = SERIAL_DATA &0xf0;
third = SERIAL_DATA << 4;
SEND_BYTE_LCD(first);
SEND_BYTE_LCD(second);
SEND_BYTE_LCD(third); }
void wrlcd(uchar HANG,,uchar LIE, uchar *SENTENCE)
{
uchar position;
position = HANG + LIE;
- 25 -
SEND_DATA_SER(1,,position);
delay(2);
while(*SENTENCE)
{ SEND_DATA_SER(0, *SENTENCE++);}
}
void lcdinit(void)
{ delay(100);
SEND_DATA_SER(1,,0X30);
delay(4); //基本功能设置
//SEND_DATA_SER(1,0X06);delay(2);
SEND_DATA_SER(1, 0X0C);
delay(4);
SEND_DATA_SER(1, 0X01);
delay(40);
SEND_DATA_SER(1, 0X02);
delay(40);
// SEND_DATA_SER(1,0X80);
delay(2);
delay(10);
}
时钟程序设计
时钟部分采用了DSl302作为系统的时钟芯片,其内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码格式。对DSl302进行任何数据传送时,第一个数据必须是命令字节,其最高有效位MSB(位)必须为逻辑l,如果是0,则禁止写DSl302。位6为逻辑0时,指定传送时钟日历数据;逻辑1指定传送洲数据。位1,5指定进行输入或输出的特定寄存器的地址。最低有效位LSB(位0)为逻辑0时,指定进行写操作(输入);逻辑1指定进行读操作(输出),命令字节总是从最低有效位LSB(位0)开始输入。操作DSl302需要一个驱动程序来完成对芯片寄存器的读写,从其某个寄存器中读出数据的函数如下:
unsigned char DS_Read(unsigned char cr)
{ unsigned char dd= 0;
DS_RST= 0;
_nop_( );
DS_CLK= 0;
_nop_( );
- 26 -
DS_RST=1;
DS_Shift_In(cr);
dd=DS_Shift_Out( );
DS_RST=0;
DS_CLK=1;
return(dd);
}
cr为输入函数,表示需要读的寄存器地址。
向DSl302某个特定寄存器写入一个字节的函数:
void DS_write(unsigned char ord,unsigned char dd)
{DS_RST=0;
_nop_( );
DS_CLK=0;
_nop_( );
DS_RST=1;
DS_Shift_In (ord);
DS_Shift_In (dd);
DS_RST=0;
return(bData); DS_CLK=1;
}
ord为输入函数,表示写地址;dd为输入函数,表示需要写入的数据。
通过这些函数就可以通过改变DSl302时间寄存器的内容来校J下整个系统的时间,并且能够随时得到系统的准确时间。
声光示警程序设计
蜂鸣器和发光LED的驱动程序相对比较简单,只需要置相应的I,O端口为高低电平,即可实现蜂鸣器的发声、发光LED状态的变化。在系统中相应I,O端口为“0”则蜂鸣器呜叫、发光二极管点亮,相应I,O为“1”则蜂鸣器不发声,发光二极管保持为不发光状态,呜叫和发光的持续时间有程序延时决定
6.结论
MIFARE卡读写器使用射频识别技术,在5~10cm范围内非接触读写数据,读写时间不大于0.1秒,上位机通过读写器完成对卡中数据的设置,三次认证机制增强系统的可靠性,完善的防冲突机制实现一机多卡功能。本系统被广泛应用于工业自动化、商业自动化和交通运输控制管理等领域。
本文设计的MIFARE系列射频卡读写器能够读写多种MIFARE系列射频卡,该读写器操作方便灵活,只要通过计算机串口按规定协议发送命令给它即可完成读卡、写卡、取消
- 27 -
和更改密码等操作;也可设置为脱离计算机独立工作方式,必要时再将所存储的记录数据上传到上位机供其处理。
射频卡读写器功能齐全,性价比高,并且性能稳定,虽然软硬件上都采用了模块化的设计思想,可以方便的进行功能上的删减,二次开发或者将其集成到其它的系统中。然而,在设计中还有很多需要进一步提高的地方,比如读写器与上位机之间的通信接口宜采用USB接口,与计算机之间的传输速率远比RS232高,而且支持热插拔。
在文中介绍的MIFARE卡的内部结构和主要特性,在硬件电路设计中的两个核心部分:MFRC500的控制电路和天线电路,并做了详细说明更加的通俗易懂。在软件设计中的卡操作流程和程序代码,让读写器的系统更加的完善,并且该读写器可以通过串口通信与其他应用系统兼容,具很强的兼容性。
致谢
紧张充实的课题论文就要画上句号了,本论文是在马老师的督促指导下完成的,从接触到这个看似很陌生的课题开始,就对我学业进行了悉心的指导和要求完善的系统学习,以及设计思路和办法。使我深刻的学会了实用的学习办公软件,更让我对RFID专业产生了很浓厚的学习兴趣,顺利完成课程学习和课题工作。
我感谢老师认真负责的教学态度与严谨细心的工作作风,是我最为之敬佩的并深深的感染感动了我,在我今后的工作和学习道路上产生更深远的影响,在此对老师给予的各方面的指导和关心表示衷心的感谢和深深的敬意!
在这里,我在完成课题的过程中特别感谢同学对我的帮助,给我了信心,是我在短时间内完成了毕业论文设计,同时也让我对软硬件的设计工作有了更深的一步了解。也得到了许多同学的宝贵建议,同在此一并致以诚挚的谢意。
感谢所有关心、支持、帮助过我的良师益友。
最后,向在百忙中抽出时间对本文进行评审并提出宝贵意见的各位专家表示衷心地感谢~
- 28 -
参考文献
[1] 周晓光.射频识别(RFID)系统设计、仿真与应用.北京: 人民邮电出版社;2008.3 [2] 董丽华.RFID技术与应用.北京:电子工业出版社;2008.5
[3] 张智文.射频识别技术理论与实践.北京: 中国科学技术出版社;2008.1 [4] 范博.射频电路原理与实用电路设计.北京:机械工业出版社;2006.9 [5] 位永辉,刘笃仁.基于MFRC500的非接触式IC卡读写器设计[J].电子元器件应用;2007.(05)
[6] 李亮.对单片机控制非接触式IC卡读写器模块的讨论[J].南华大学学报(自然科学版);2007.(01)
[7] 邱丽芳.非接触式智能IC卡读写器的设计[J].仪器仪表用户;2007. (02) [8] Klaus Frinkenzeller 射频识别技术(第三版)电子工业出版社 ;2006.10 [9] 桂小林 物联网技术导论 清华大学出版社 ;2012.6
- 29 -
30