ImageVerifierCode 换一换
格式:PPT , 页数:142 ,大小:3.03MB ,
资源ID:12828430      下载积分:22 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12828430.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(RFID-开发技术及实践-(西电版)第5章--高频RFID阅读器设计课件.ppt)为本站上传会员【丰****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

RFID-开发技术及实践-(西电版)第5章--高频RFID阅读器设计课件.ppt

1、单击此处编辑母版标题样式,第5章 高频RFID阅读器设计,*,第5章 高频RFID阅读器设计,5.1 Mifare卡,5.2 MF RC522,5.3 RC522基本操作,5.4 高频RFID阅读器程序设计,5.1 Mifare卡,Mifare是NXP Semiconductors(恩智浦半导体)拥有的商标之一。Mifare卡是目前世界上使用量大、技术成熟、性能稳定、内存容量大的一种感应式智能IC卡。,5.1.1 Mifare卡的特点,Mifare技术是NXP(前身为飞利浦半导体)所拥有的13.56 MHz非接触性辨识技术。NXP并不制造卡片或卡片阅读机,而是在开放的市场上贩售相关技术与芯片,

2、卡片和卡片阅读器的制造商再利用它们的技术来研发产品出售给一般使用者。,Mifare卡经常被认为是一种智能卡的技术,这是因为它可以在卡片上兼具读写的功能。事实上,Mifare卡仅具备记忆功能,必须搭配阅读器才能达到读写功能。Mifare卡的非接触式读写功能是为处理大众运输系统中的付费交易部分来设计的,其与众不同的地方是具备执行升幂和降序的排序功能,简化资料读取的过程。尽管接触性智能卡也能够执行同样的动作,但非接触性智能卡的速度更快且操作更简单,而且卡片阅读机几乎不需要任何维修,卡片也较为耐用。,Mifare卡除了保留接触式IC卡的原有优点外,还具有以下特点:,操作简单、快捷。由于采用射频无线通信

3、使用时无需插拔卡及不受方向和正反面的限制,完成一次读写操作仅需0.1 s,大大提高了每次使用的速度,既适用于一般场合,又适用于快速、高流量的场所。,抗干扰能力强。Mifare卡中有快速防冲突机制,在多卡同时进入读写范围内时,能有效防止卡片之间出现数据干扰,读写设备可一一对卡进行处理,提高了应用的并行性及系统工作的速度。,5.1.2 Mifare1 S50卡,Mifare卡的主要芯片有NXP Mifare1 S50(1 KB)、S70(4 KB)等。Mifare1(下面简称MF1)是符合ISO/IEC 14443A的非接触智能卡,其通信层(MifareRF接口)符合ISO/IEC 14443A

4、标准的第2和第3部分,其安全层支持域检验的CRYPTO1数据流加密。目前国内出现了Mifare卡的克隆产品,但性能稍逊一筹。虽然Mifare技术已经被破解,卡片可以被复制,但是由于价格低廉,还在广泛使用。Mifare卡的技术特点如下:,卡片由一个卷绕天线和特定用途的集成电路模块组成。,Mifare卡有一个高速(106 KB波特率)的RF接口。,内部有一个控制单元和一个8 K个bit位的EEPROM。,阅读器向MF1卡发出一组固定频率(13.56MHz)的电磁波,卡片内有一个LC串联谐振电路,其频率与阅读器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使谐振电容有了电荷。,在这个电

5、容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到模块存储电容内储存,当所积累的电荷达到2V以上时,此电容可作为电源向模块电路提供工作电压,将卡内数据发射出去或接收阅读器的数据。MF1读写示意图如图5-1所示。,图5-1 MF1读写示意图,1 KB EEPROM,分为16个区,每区4个块,每块16字节。用户可定义内存块的读写条件。数据耐久性为10年。写入耐久性可达100 000次。相互三轮认证(ISO/IEC DIS9798-2)。带重现攻击保护的射频通道数据加密。每区(每个应用)两个密钥,支持密钥分级的多应用场合。每卡一个唯一序列号。在运输过程中以传输密钥保护对EEPROM的访问权。,

6、MF1 S50集成电路芯片内含1 KB EEPROM、RF接口和数字控制单元。能量和数据通过天线传输,卡中天线为几匝线圈,直接连接到芯片上,不再需要额外的组件。Mifare卡的结构如图5-2所示。图5-2中,各组件的功能简述如下:RF接口:调制解调器检波器时钟发生器的上电复位稳压器。防冲突:读写范围内的几张卡可以逐一选定和操作。认证:在所有存储器操作之前进行认证过程,以保证必须通过各块指定的密钥才能访问该块。,控制逻辑单元:数值以特定的冗余格式存储,可以增减。EEPROM接口:是与内部EEPROM的通信接口。加密单元:域验证的CRYPTO1数据流加密,保证数据交换的安全。EEPROM:总容量为

7、1 KB,每区的最后一块称做“尾块”,含有两个密钥和本区各块的读写条件。,图5-3 EEPROM结构,图5-4 制造商占用块的结构,数值:有符号4字节数值。数值的最低字节存储在最低地址字节。负值以标准的2的补码形式存储。出于数据完整性和安全原因,数值存储三次,两次不取反,一次取反。,地址(Adr):1字节地址,当进行备份管理时,可用于保存块的地址。地址保存四次,两次取反,两次不取反。在increment、decrement、restore和transfer 操作中,地址保持不变。它只能通过write命令更改。数值块的结构如图5-5所示。,图5-5 数值块的结构,3.尾块(块3),各扇区均有一个

8、尾块,存有:密钥A和B(可选),读时返回逻辑“0”。该区四个块的读写条件,存储在字节69。读写控制位也指定了数据块的类型(读写块或数值块)。如果不需要密钥B,块3的最后6字节可以用作数据字节。尾块的字节9可用于用户数据。因为此字节享有与字节6、7、8相同的读写权限。尾块的结构如图5-6所示。,图5-6 尾块的结构,1)读写条件每个数据块和尾块的读写条件均由3个bit定义,并以非取反和取反形式保存在各个区的尾块中。读写控制位管理着使用密钥A和B读写存储器的权限。如果知道相关的密钥,并且当前读写条件允许,读写条件是可以更改的,读写条件说明如图5-7所示。,2)尾块的读写条件对密钥和控制位的读写取决

9、于尾块(块3)的访问控制位,这些控制位存放在字节68中,以正值和反值的形式存放,分为“禁止”、“KEYA”、“KEYB”和“KEYA|B(KEYA或KEYB)”。读写条件在尾块中的存储位置如表5-1所示。读写条件定义如表5-2所示。由上表可知,尾块和KEY A被预定义为传输配置状态。因为在传输配置状态下KEY B可读,新卡必须用KEY A认证。由于访问控制位本身也可以禁止访问,所以操作时应当特别小心。,表5-1 读写条件在尾块中的存储位置,表5-2 读写条件定义,表5-3 数据块的访问控制条件,如果相应扇区尾块KEY B可读,则不得用作认证(上表中所有灰色行)。如果阅读器试图用灰色行的访问控制

10、条件以KEY B认证任何扇区的任何块,卡将在认证后拒绝所有后续存储器访问。,图5-8 Mifare卡读写,2.防碰撞循环(anticollision loop),在防碰撞循环中,可以读回一张卡的序列号。如果在阅读器的工作范围内有几张卡,则它们可以通过唯一序列号区分开来,并可选定以进行下一步交易。未被选定的卡转入待命状态,等候新的,request,命令。,3.,选卡,(select card),阅读器通过,select card,命令选定一张卡进行认证存储器的相关操作。该卡返回选定应答码(ATS=08h),明确所选卡的卡型。,4.三轮认证(3 pass authentication),选卡后,阅

11、读器指定后续读写的存储器位置,并用相应密钥进行三轮认证。认证成功后,所有的存储器操作都是加密的。,5.存储器操作,经过三轮认证后,阅读器可对卡片执行下列操作:读数据块。写数据块。减值:减少数据块内的数值,并将结果保存在临时内部数据寄存器中。加值:增加数据块内的数值,并将结果保存在数据寄存器中。恢复:将数据块内容移入数据寄存器。转存:将临时内部数据寄存器的内容写入数值块。,6.数据完整性,在阅读器和卡之间的非接触通信链接中实施下列机制,以保证数据传输的可靠性:每块16 bit CRC。每字节的奇偶位。位计数检查。位编码,以区分“1”、“0”和无信息。通道监控(协议序列和位流分析)。,7.安全,安

12、全认证中的三轮认证采用符合ISO 9798-2的协议,以保证高度的安全性。三轮认证过程如下:阅读器指定要访问的区,并选择密钥A或B。第一轮为卡从位块读区密钥和访问条件。然后,卡向阅读器发送随机数。第二轮为阅读器利用密钥和随机数计算回应值。回应值连同阅读器的随机数发送给卡。第三轮为卡通过与自己的随机数比较验证阅读器的回应值,再计算回应值并发送。阅读器通过比较验证卡的回应值。在第一个随机数传送之后,卡与阅读器之间的通信都是加密的。,5.2 MF RC522,MF RC522(简称RC522)是应用于13.56 MHz非接触式通信中高集成度读写卡系列芯片中的一员。它是NXP公司针对“三表”应用推出的

13、一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。,5.2.1 概述,MF RC522运用了先进的调制和解调概念,完全集成了13.56 MHz下所有类型的被动非接触式通信方式和协议,并支持ISO 14443A的多层应用。其内部发送器部分可驱动阅读器天线与ISO 14443A/Mifare卡和应答机的通信,无需其他电路。接收器部分提供一个坚固而有效的解调和解码电路,用于处理ISO 14443A兼容的应答器信号。数字部分处理ISO 14443A帧和错误检测。,此外,RC522还支持快速CRYPTO1加密算法,用于验证Mifare系列产品。MF RC522支持

14、Mifare更高速的非接触式通信,双向数据传输速率高达424kb/s。可根据不同的用户需求,选取SPI、I2C或串行UART(类似RS232)模式之一,有利于减少连线,缩小PCB板体积,降低成本。MF RC522的其他特性如下:高集成度的调制解调电路。采用少量外部器件,即可将输出驱动级接至天线。支持ISO/IEC 14443 TYPE A和Mifare通信协议。支持ISO 14443 212 kb/s和424 kb/s更高传输速率的通信。,支持,Mifare Classic,加密。,10 Mb/s,的,SPI,接口。I,2,C接口,快速模式的速率为400 kb/s,高速模式的速率为3400 k

15、b/s。串行UART,传输速率高达1228.8 kb/s,帧取决于RS232接口,电压电平取决于提供的管脚电压。64字节的发送和接收FIFO缓冲区。灵活的中断模式。可编程定时器。具备硬件掉电、软件掉电和发送器掉电三种节电模式。,内置温度传感器,以便在芯片温度过高时自动停止RF发射。采用相互独立的多组电源供电,以避免模块间的相互干扰,提高工作的稳定性。具备CRC和奇偶校验功能。内部振荡器,连接27.12 MHz的晶体。2.53.6 V的低电压低功耗设计。5 mm5 mm0.85 mm的超小体积。,5.2.2 原理图,MF RC522组成并不复杂,其原理图如图5-9所示。MF RC522集成度很高

16、其相关功能特性如下:MF RC522支持可直接相连的各种MCU接口类型,如SPI、I2C和串行UART。数据处理部分执行数据的并/串转换。它支持的帧包括CRC和奇偶校验。它以完全透明的模式进行操作,因而支持ISO 14443A的所有层。,图5-9 MF RC522的原理图,状态和控制部分允许对器件进行配置以适应环境的影响并将性能调节到最佳状态。当与Mifare Standard和Mifare产品通信时,使用高速CRYPTO1流密码单元和一个可靠的非易失性密匙存储器。模拟电路包含了一个具有非常低阻抗桥驱动器输出的发送部分,这使得最大操作距离可达100mm。接收器可以检测到并解码非常弱的应答信号

17、5.2.3 与MCU接口,MF RC522共有32个管脚,其管脚图如图5-10所示。MF RC522的32个管脚有其各自不同的功能和定义,如表5-4所示。,图5-10 MFRC522管脚图,表5-4 管 脚 定 义,1.MCU接口,在每次上电或硬件复位后,RC522也复位其接口模式并检测当前微处理器的接口类型。MF RC522在复位阶段后根据控制脚的逻辑电平识别微处理器接口。这是由固定管脚连接的组合和一个专门的初始化程序来实现的,其所有通信接口如表5-5所示。本例中,RC522与MCU连接的端口为SPI口,其他接口可参考相关资料。兼容SPI接口可使能RC522和一个MCU之间的高速串行通信

18、兼容SPI接口的处理与标准SPI接口相同。在本书配套的开发板上,RC522还需要经过一个跳线才能与MCU相连,其跳线定义如图5-11所示。,表5-5 通 信 接 口,图5-11 跳线定义,在SPI通信中,RC522作从机,SPI时钟SCK由主机产生。,数据通过MOSI线从主机传输到从机。,数据通过MISO线从RC522发回主机。,MOSI和MISO传输每个字节时都是高位在前。MOSI上的数据在时钟的上升沿保持不变,在时钟的下降沿改变。MISO与之类似,在时钟的下降沿,MISO上的数据由RC522来提供,在时钟的上升沿数据保持不变。,2.读数据,通过SPI接口读出数据需要有特定的数据结构。发送

19、的第一个字节定义了模式本身和地址,也可连续读出多个地址的数据,其顺序如表5-6所示。,表5-6 读数据顺序,3.写数据,通过SPI接口写入数据需要有特定的数据结构。发送的第一个字节定义了模式本身和地址,也可连续读出多个地址的数据,其顺序如表5-7所示。,4.地址字节,地址字节按特殊格式传输,第一个字节的MSB位设置使用的模式如下:,MSB位为1时从RC522读出数据。,MSB为0时将数据写入RC522。第一个字节的位6:1定义地址,最后一位应当设置为0。其位含义如表5-8所示。,表5-7 写数据顺序,表5-8 地址字节位含义,5.3 RC522基本操作,RC522是一款高度集成的RFID读写芯

20、片,还需要配合MCU和其他外围电路才能真正地实现阅读器的功能。,5.3.1 RC522寄存器,RC522的存储器中共有4页(PAGE)存放寄存器,用于配置和相关状态指示,详细定义如表5-9所示。,表5-9 RC522寄存器,5.3.2 FIFO缓冲区操作,MF RC522包含一个648位的FIFO缓冲区,用来缓存主机MCU和MF RC522的内部状态机之间的输入和输出数据流。因此,FIFO缓冲区可以处理长度大于64字节的数据流,但又不考虑时序的限制。,1.访问FIFO缓冲区,FIFO缓冲区的输入和输出数据总线连接到FIFODataReg寄存器。,通过写FIFODataReg寄存器将一个字节的数

21、据存入FIFO缓冲区,之后内部FIFO缓冲区写指针加1。,读出的FIFODataReg寄存器的内容是存放在FIFO缓冲区读指针处的数据,之后FIFO缓冲区读指针减1。FIFO缓冲区的读和写指针之间的间隔通过读取FIFOLevelReg得到。当MCU发布一个命令后,MFRC522可以在命令执行过程中根据命令要求来访问FIFO缓冲区。通常,只能实现一个FIFO缓冲区的操作,该缓冲区可用在输入和输出方向中。因此,MCU必须小心不能以其他方式来访问FIFO缓冲区。,2.控制FIFO缓冲区,除了读写FIFO缓冲区外,FIFO缓冲区指针还可通过置位寄存器FIFOLevelReg的FlushBuffer位来

22、复位。从而使FIFOLevel位被清零,寄存器ErrorReg的BufferOvfl位也被清零,实际存储的字节不能再访问,FIFO缓冲区可以用来存放下一批64字节的数据。,3.FIFO缓冲区的状态信息,MCU可得到以下FIFO缓冲区状态的数据:,已经存放在FIFO缓冲区中的字节数:寄存器FIFOLevelReg的FIFOLevel字段。,FIFO缓冲区已满的警告:寄存器Status1Reg的HiAlert位。,FIFO缓冲区已空的警告:寄存器Status1Reg的LoAlert位。,指示FIFO缓冲区已满时仍有字节写入:寄存器ErrorReg的BufferOvfl位。,BufferOvfl位可

23、通过置位FIFOLevelReg寄存器的FlushBuffer位来清零。当出现以下情况时,MFRC522可以产生中断信号:,如果寄存器CommIEnReg的LoAlertIEn被置位,且当寄存器Status1Reg的LoAlert位变成1时,管脚IRQ激活。,如果寄存器CommIEnReg的HiAlertIEn被置位,且当寄存器Status1Reg的HiAlert位变成1时,管脚IRQ激活。,如果FIFO缓冲区中只允许存放WaterLevel个(在寄存器WaterLevelReg中设置)或更少的字节,则HiAlert标志置位。上述数据满足下面的等式:HiAlert=(64-FIFOLength

24、)WaterLevel,如果实际只有WaterLevel个或更少的字节存放在FIFO缓冲区中,则LoAlert标志置位。同时,它们满足下面的等式:LoAlert=(64-FIFOLength)WaterLevel,5.3.3 RC522命令,RC522的操作可由执行一系列命令的内部状态机来决定。即通过向命令寄存器写入相应的命令代码来启动命令,并且执行一个命令所需的参数和数据可通过FIFO缓冲区来交换。,1.通用特性,RC522的命令可以动用FIFO缓冲区设置参数和数据,其操作有一些通用的特性如下:,每个需要数据流(或数据字节流)作为输入的命令在发现FIFO缓冲区有数据时会立刻处理,收发命令除外

25、收发命令的发送由寄存器BitFramingReg的StartSend位来启动。,每个需要某一数量参数的命令只有在它通过FIFO缓冲区接收到正确数量的参数时才能开始处理。,FIFO缓冲区不能在命令启动时自动清除。,也有可能要先将命令参数或数据字节写入FIFO缓冲区,再启动命令。,每个命令的执行都可能由MCU向命令寄存器写入一个新的命令代码(如idle命令)来中断。RC522命令有8个,其命令代码和描述如表5-10所示。,表5-10 RC522命令,2.Idle命令,RC522处于空闲模式。该命令也可用来终止实际正在执行的命令。,3.CalcCRC命令,FIFO的内容被传输到CRC协处理器并执行

26、CRC计算,该命令有如下特点:,计算结果存放在CRCResultReg寄存器中。,CRC计算无需限制字节的数目。,当在数据流过程中FIFO变成空时计算也不会停止。,写入FIFO的下个字节增加到计算中。,CRC的预置值由寄存器ModeReg的CRCPreset位控制,该值在命令启动时装入CRC协处理器。,这个命令必须通过向命令寄存器写入任何一个命令(如空闲命令)来清除。如果寄存器AutoTestReg的SelfTest位设置正确,则MFRC522处于自测试模式,启动CalCRC命令执行一次数字自测试。自测试的结果写入FIFO。,4.Transmit命令,发送FIFO的内容。在发送FIFO的内容之

27、前必须对所有相关的寄存器进行设置。该命令在FIFO变空后自动终止。,5.NOCmdChange命令,该命令不会影响CommandReg寄存器中正在执行的任何命令。它可用来修改CommandReg寄存器中除命令位之外的任何位,如RcvOff位或PowerDown位。,6.Receive命令,MF RC522激活接收器通路,等待接收任何数据流。该命令在接收到的数据流结束时自动终止。根据所选的成帧和速度,通过帧模式结束或长度字节来指示。,7.Transceive命令,该循环命令重复发送FIFO数据,并不断接收RF场的数据。第一个动作是发送,发送结束后命令变为接收数据流。其顺序为:发送接收发送接收。每

28、个发送过程都在BitFramingReg寄存器的StartSend位置位时启动。TRANSCEIVE命令通过向命令寄存器写入任何一个命令(如idle命令)来清除。,8.MFAuthent命令,该命令用来处理Mifare认证以使能任何Mifare普通卡的安全通信。在命令激活前以下数据必须被写入FIFO:认证命令代码(0 x60,0 x61)。,块地址。扇区密钥字节0。扇区密钥字节1。扇区密钥字节2。扇区密钥字节3。扇区密钥字节4。扇区密钥字节5。卡序列号字节0。卡序列号字节1。卡序列号字节2。卡序列号字节3。,上述命令参数总共12字节,应当写入FIFO中。当MFAuthent命令有效时,任何FI

29、FO访问都被禁止。只要访问FIFO的操作发生,ErrorReg寄存器的WrErr位就置位。该命令在Mifare卡被认证且Status2Reg寄存器的MFCrypto1On位置位时自动终止。当卡未响应时,该命令不会自动终止。因此,定时器必须初始化成自动模式。这时,除IdleIRQ外,TimerIRQ也可用作终止的标准。在认证过程中,RxIRQ和TxIRQ被禁止。,认证命令结束后(处理完协议或将IDLE写入命令寄存器后),只有Crypto1On位有效。如果认证过程中有错误出现,则ErrorReg寄存器的ProtocolErr位置位。Status2Reg寄存器的Crypto1On位清零。,9.Sof

30、tReset命令,该命令用来执行一次器件复位,内部缓冲区的配置数据保持不变。所有寄存器都设置成复位值,命令完成后自动终止。由于SerialSpeedReg寄存器被复位,则串行数据速率被设置成9600 kb/s。,5.3.4 RC522基本指令,RC522有14种基本指令集,实现不同方式的数据传输,其指令代码及含义如表5-11所示。,表5-11 指令代码及含义,5.4 高频RFID阅读器程序设计,高频RFID阅读器程序的主要工作是能够操作RC522,并按照Mifare卡的规则和流程对MF1卡进行读写和验证。一般分为三部分:初始化程序、驱动程序和主程序。,5.4.1 初始化程序,初始化程序用于各种

31、管脚和器件的初始化,以便能够正常进行解码。下述内容用于实现描述5.D.1,即编写RC522的初始化程序。基于模块化和移植的考虑,可将本例中初始化子程序单独封装成子函数InitAll(),具体源码如下:,【描述5.D.1】InitAll()/初始化子函数void InitAll(void),InitPort();InitRc522();INT_Init();TIMER_init();,/液晶屏显示初始化LCD_init();loc(1,0);LCD_display(高频HF读卡器:);loc(4,0);LCD_display(-请刷卡-);,/参数,标志位初始化bWarn=0;bPass=0;S

32、ysTime=0;KeyNum=0;KuaiN=0;oprationcard=0;bSendID=0;Pass();,InitPort()函数负责初始化相关的I/O端口,具体源码如下:【描述5.D.1】InitPort(),/初始化相关的I/O端口void InitPort(void)/蜂鸣器管脚DDRD|=(1PD7);PORTD|=(1PD7);/LED管脚DDRC|=(1PC7);PORTC|=(1PC7);,/初始化H-RST,CSS,MOSI,SCK.DDRB|=(1PB3)|(1PB4)|(1PB5)|(1PB7);/MISODDRB ,INT_Init()函数负责初始化外部中断的

33、相关工作方式和参数,具体源码如下:【描述5.D.1】INT_Init()/初始化外部中断void INT_Init(void)/开启INT0中断,并初始化MCUCR|=(1 ISC01);GICR|=(1 INT0);SREG|=(1 7);DDRD|=(1 PD2);PORTD|=(1 PD2);DDRD ,InitRc522()函数负责初始化RC522的相关配置和参数,具体源码如下:【描述5.D.1】InitRc522(),/初始化RC522void InitRc522(void)/重启天线,PcdReset();PcdAntennaOff();PcdAntennaOn();,/初始化工作

34、类型为ISO14443 TYPE A,M500PcdConfigISOType(A);,TIMER_init()函数负责初始化定时器的相关配置,具体源码如下:【描述5.D.1】TIMER_init(),/初始化定时器void TIMER_init(void)/初始化定时器0TCCR0|=(1 CS02)+(1 CS00);TIMSK|=(1 TOIE0);TCNT0 =256-61;SREG|=(1 7);,5.4.2 驱动程序,驱动程序是RC522能够正确解码的相关读写、命令设置等函数。下述内容用于实现描述5.D.2,即编写RC522的相关驱动程序。SPIReadByte()函数负责使用SP

35、I端口读入一个Byte,具体源码如下:【描述5.D.2】SPIReadByte(),/使用SPI端口读入一个byteunsigned char SPIReadByte(void)unsigned long i=60000;,/启动数据传输 SPDR=0XFF;/等待传输结束while(i-)if(SPSR,SPIWriteByte()函数负责使用SPI端口写入一个Byte,具体源码如下:【描述5.D.2】SPIWriteByte()/使用SPI端口写入一个Bytevoid SPIWriteByte(unsigned char SPIData)unsigned long i=60000;/启动数

36、据传输 SPDR=SPIData;/等待传输结束 while(i-)if(SPSR,PcdRequest()函数负责寻卡的相关操作和功能,具体源码如下:【描述5.D.2】PcdRequest(),/功 能:寻卡/参数说明:req_codeIN:寻卡方式/0 x52=寻感应区内所有符合14443A标准的卡/0 x26=寻未进入休眠状态的卡/pTagTypeOUT:卡片类型代码/0 x4400=Mifare_UltraLight/0 x0400=Mifare_One(S50)/0 x0200=Mifare_One(S70),/0 x0800=Mifare_Pro(X)/0 x4403=Mifare

37、DESFire/返 回:成功返回MI_OK/unsigned char PcdRequest(unsigned char req_code,unsigned char*pTagType)unsigned char status;unsigned int unLen;unsigned char ucComMF522BufMAXRLEN;/18/清除标志位ClearBitMask(Status2Reg,0 x08);WriteRawRC(BitFramingReg,0 x07);SetBitMask(TxControlReg,0 x03);,ucComMF522Buf0=req_code;/读取

38、状态字status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,if(status=MI_OK),PcdAnticoll(),函数负责防冲撞算法,具体源码如下:,【,描述5.D.2】PcdAnticoll(),/,功 能:防冲撞/参数说明:pSnrOUT:卡片序列号,4字节,/,返 回,:,成功返回,MI_OK/unsigned char PcdAnticoll(unsigned char*pSnr)unsigned char status;unsigned char i,snr_check=0;unsigned int u

39、nLen;unsigned char ucComMF522BufMAXRLEN;,/清除标志位ClearBitMask(Status2Reg,0 x08);WriteRawRC(BitFramingReg,0 x00);ClearBitMask(CollReg,0 x80);ucComMF522Buf0=PICC_ANTICOLL1;ucComMF522Buf1=0 x20;/读取状态字status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,if(status=MI_OK)for(i=0;i4;i+)*(pSnr+i)=u

40、cComMF522Bufi;snr_check=ucComMF522Bufi;if(snr_check!=ucComMF522Bufi)status=MI_ERR;SetBitMask(CollReg,0 x80);return status;,PcdSelect(),函数负责选定卡片,具体源码如下:,【,描述5.D.2】PcdSelect(),/,功 能:选定卡片/参数说明:pSnrIN:卡片序列号,4字节,/,返 回,:,成功返回,MI_OK/unsigned char PcdSelect(unsigned char*pSnr)unsigned char status;unsigned c

41、har i;unsigned int unLen;unsigned char ucComMF522BufMAXRLEN;,ucComMF522Buf0=PICC_ANTICOLL1;ucComMF522Buf1=0 x70;ucComMF522Buf6=0;/存入bufferfor(i=0;i4;i+)ucComMF522Bufi+2=*(pSnr+i);ucComMF522Buf6 =*(pSnr+i);/计算校验码CalulateCRC(ucComMF522Buf,7,status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522B

42、uf,if(status=MI_OK)&(unLen=0 x18),status=MI_OK;elsestatus=MI_ERR;return status;,PcdAuthState(),函数负责验证卡片密码,具体源码如下:,【,描述5.D.2】PcdAuthState(),/,功 能:验证卡片密码/参数说明:auth_modeIN:密码验证模式/0 x60=验证A密钥/0 x61=验证B密钥/addrIN:块地址/pKeyIN:密码/pSnrIN:卡片序列号,4字节,/,返 回,:,成功返回,MI_OK,/unsigned char PcdAuthState(unsigned char a

43、uth_mode,unsigned char addr,unsigned char*pKey,unsigned char*pSnr)unsigned char status;unsigned int unLen;unsigned char i,ucComMF522BufMAXRLEN;ucComMF522Buf0=auth_mode;ucComMF522Buf1=addr;/存入密码for(i=0;i6;i+)ucComMF522Bufi+2=*(pKey+i);,for(i=0;i6;i+)ucComMF522Bufi+8=*(pSnr+i);status=PcdComMF522(PCD_A

44、UTHENT,ucComMF522Buf,12,ucComMF522Buf,PcdRead()函数负责读取M1卡的一块数据,具体源码如下:【描述5.D.2】PcdRead(),/功 能:读取M1卡一块数据/参数说明:addrIN:块地址/pDataOUT:读出的数据,16字节/返 回:成功返回MI_OK/unsigned char PcdRead(unsigned char addr,unsigned char*pData)unsigned char status;unsigned int unLen;unsigned char i,ucComMF522BufMAXRLEN;,ucComMF5

45、22Buf0=PICC_READ;ucComMF522Buf1=addr;CalulateCRC(ucComMF522Buf,2,if(status=MI_OK)&(unLen=0 x90),for(i=0;i16;i+)*(pData+i)=ucComMF522Bufi;,elsestatus=MI_ERR;return status;,PcdWrite(),函数负责写数据到,M1,卡的一块,具体源码如下:,【,描述5.D.2】PcdWrite(),/功 能:写数据到M1卡的一块/参数说明:addrIN:块地址/pDataIN:写入的数据,16字节/返 回:成功返回MI_OK/unsigne

46、d char PcdWrite(unsigned char addr,unsigned char*pData)unsigned char status;unsigned int unLen;unsigned char i,ucComMF522BufMAXRLEN;,ucComMF522Buf0=PICC_WRITE;ucComMF522Buf1=addr;CalulateCRC(ucComMF522Buf,2,if(status!=MI_OK)|(unLen!=,4)|(ucComMF522Buf0 if(status=MI_OK),/memcpy(ucComMF522Buf,pData,16

47、);for(i=0;i16;i+)ucComMF522Bufi=*(pData+i);CalulateCRC(ucComMF522Buf,16,if(status!=MI_OK)|(unLen!=,4)|(ucComMF522Buf0&0 x0F)!=0 x0A),status=MI_ERR;return status;,PcdHalt(),函数负责命令卡片进入休眠状态,具体源码如下:,【,描述5.D.2】PcdHalt(),/功 能:命令卡片进入休眠状态,/,返 回,:,成功返回,MI_OK/unsigned char PcdHalt(void)unsigned int unLen;unsi

48、gned char ucComMF522BufMAXRLEN;,ucComMF522Buf0=PICC_HALT;ucComMF522Buf1=0;CalulateCRC(ucComMF522Buf,2,CalulateCRC(),函数负责用,MF522,计算,CRC16,函数,具体源码如下:,【,描述5.D.2】CalulateCRC(),/用MF522计算CRC16函数/void CalulateCRC(unsigned char*pIndata,unsigned char len,unsigned char*pOutData)unsigned char i,n;ClearBitMask(

49、DivIrqReg,0 x04);WriteRawRC(CommandReg,PCD_IDLE);SetBitMask(FIFOLevelReg,0 x80);,for(i=0;ilen;i+)WriteRawRC(FIFODataReg,*(pIndata+i);WriteRawRC(CommandReg,PCD_CALCCRC);i=0 xFF;don=ReadRawRC(DivIrqReg);i-;while(i!=0),PcdReset()函数负责复位RC522,具体源码如下:【描述5.D.2】PcdReset(),/功 能:复位RC522,/,返 回,:,成功返回,MI_OK/uns

50、igned char PcdReset(void)/PORTD|=(1RC522RST);SET_RC522RST;delay_ns(10);,CLR_RC522RST;delay_ns(10);SET_RC522RST;delay_ns(10);WriteRawRC(CommandReg,PCD_RESETPHASE);delay_ns(10);/和Mifare卡通讯,CRC初始值0 x6363WriteRawRC(ModeReg,0 x3D);WriteRawRC(TReloadRegL,30);WriteRawRC(TReloadRegH,0);WriteRawRC(TModeReg,0

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服