




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录 1、绪论2 2、现状分析2 3、射频卡(IC 卡)的识别系统 1 射频识别系统的工作原理4 2 S50 非接触式 IC 卡性能简介 (1)主要指标5 (2)结构6 (3)工作原理7 (4)M1 射频卡与读卡器的通讯8 4、射频读卡模块 RC522 (1)RC522 简介.9 (2)RC522 引脚图.10 (3)管脚描述11 (4)芯片相关功能介绍12 (5)I*I 总线接口.12 5、STC8989C52 芯片介绍 (1)芯片特点.13 (2)引脚图.14 (3)STC8989C52 单片机的相关引脚介绍.15 6、LCD1602 芯片.17 7、软件部分.18 8、心得.50 9、参考文献.50 10、仿真图.51 一、 绪论 射频识别(Radio Frequency Identification,简称 RFID)技术是 20 世纪 90 年代开 始兴起的一种天线的,非接触方式的自动识别技术,是近几年来发展的前沿科技项目。该 技术主要是利用无线射频方式进行非接触式的通信,实现对被识别物体的自动识别。射频 识别技术的显著优点在于非接触性,因此完成识别工作时无需人工干预,能够实现识别自 动化且不易损坏;可识别高速运动物体并可同时识别多个射频标签,操作快捷方便;射频 标签不怕油渍、灰尘污染等恶劣的环境,且可以穿透非金属物体进行识别,抗干扰能力强。 RFID 技术与互联网、通讯等技术相结合,可实现全球范围内物品跟踪与信息共享。研究 RFID 产业对提升社会信息化水平、促进经济可持续发展、提高人民生活质量、增强公共安 全与国防安全等方面产生深远影响,具有战略性的重大意义。 射频卡又叫非接触式 IC 卡,诞生于 90 年代初,是世界上最近几年发展起来的一项新 技术,它成功地将射频识技术和 IC 卡技术结合起来,解决了无源(卡中无电源)和免接触这 一难题,是电子器件领域 的一大突破。由于存在着磁卡和接触式 IC 卡不可比拟的优点, 使之一经问世,便立即引起广泛的关注,并以惊人的速度得到推广应用。射频卡与接触式 IC 卡相比较,非接触式卡具有以下优点:可靠性高,操作方便,快速,防冲突非接触式 卡中有快速防冲突机制,能防止卡片之间出现数据干扰 ,可以适合于多种应用加密性能好。 随着社会的不断向前推移,人们生活水平的不断提高,也就意味着人们的消费水平也 有了很大的提高,商家的收费系统也有很大的改进,应用于生活中许多消费控制系统中, 如汽车消毒收费系统,公交刷卡,售饭收费系统,门禁,电梯刷卡系统,交通收费,停车 收费等。 二 、现状分析 在国外,美国加州技术创新博物馆正使用射频卡识别技术来拓展和增强参观者的参 观体验。他们给前来参观的访问者每人一个RFID(射频识别技术 )标签,使其能够在 今后其个人网页上浏览此项展会的相关信息;这种标签还可用来确定博物馆的参观者所 访问的目录列表中的语言类别。该博物馆成立于1990 年。自成立以来,就成为了硅 谷有名又受欢迎的参观地,并吸引了很多家庭和科技爱好者前来参观访问。每年大约能 接待 40 万参观者。从参观者所做出的积极良好的反应看来,使用RFID 标签是成功 的。在未来的某一天,美国的技术创新博物馆可能会开发出一种展示品,用来探测 RFID 技术对于整个世界的影响,他们正在努力地研究着。 国内,已经广泛应用于银行、电信、交通、公共安全等社会各领域,得到了快速的发 展。国内智能卡市场销售量近 12.8 亿张,同比增长 26.8%;销售额达 53.7 亿元,同比增 长 15.3%。智能卡市场销量出现大幅增长的主要原因在于,一是移动通信卡市场的增长拉 动了整体市场的增长;二是城市一卡通、居住证、社保卡等领域市场快速发展,也推动了 整体市场的增长。 作为最大应用领域的移动通信卡市场在亚太市场快速增长的带动下实现了销售量的增长, 此外金融服务领域在全球 EMV 迁移的拉动下实现了 10%以上的增长。在身份识别领域,全 球电子护照的发行及中国居住证制度的实施也保证了该领域的增长空间。整体来看,智能 卡的传统应用领域仍左右全球智能卡市场的发展。 以城市一卡通、社保卡、银行 IC 卡为代表的中国智能卡新兴应用领域发展势头强劲其 中城市一卡通目前广泛应用于城市公共交通、高速公路自动收费、智能大厦、各种公共收 费、智能小区物业管理、考勤门禁管理、校园和厂区一卡通系统中,这些应用中门禁一卡 通近年来得到较快的增长。 产品性价比不断提高近年来,智能卡“一卡多用”渐成市场发展趋势,智能卡功能不 断提升。与此同时,智能卡生产规模的扩大又促使其价格不断下降,产品性价比不断提高。 以移动通信 SIM 卡为例,虽然产品性能不断提高,但价格呈理性的下降趋势,可以说,目 前 SIM 卡是国内最具性价比的智能卡应用领域。 从中国智能卡市场竞争格局来看,目前市场前十位中除金雅拓、金邦达、捷德属外资 企业以外,其余均为本土厂商,其中东信和平、握奇数据、大唐微电子等企业在国际市场 中也具有一定的竞争实力。从智能卡芯片市场的竞争格局来看,随着中国本土集成电路设 计企业的迅速成长,智能卡芯片市场已经摆脱了原来严重依赖国外半导体厂商的局面,有 些国内厂商已经可以设计、生产具有与国外产品相同功能的智能卡芯片,而一些国外芯片 企业也因为成本和盈利因素放弃了部分领域智能卡芯片的开发。 如今中国智能卡芯片厂商已经形成了中外两种竞争格局,其中国外企业以三星、意法、 英飞凌、NXP、瑞萨等为代表,国内则以大唐微电子、华虹设计、复旦微电子、中电华大、 同方微电子等为代表。在智能卡模块封装环节则有中电、上海伊诺尔、山东山铝、上海长 丰等知名企业,如今中国智能卡产业已经形成芯片设计、芯片制造、模块封装、智能卡制 作开发的完整产业链。 三 、射频卡(IC 卡)的识别系统 1 射频识别系统的工作原理 射频识别(RFID)系统为无源系统,即射频卡内不含电池,射频卡的能量是由读写器 发出的射频脉冲提供。非接触式射频卡系统是基于射频法的系统。射频法是运用 L-C 振荡 回路工作的 RFID 系统工作过程如下: (1)读写器在一个区域内发射能量形成电磁场,区域大小取决于发射功率、工作频率和 天线尺寸。 (2)射频卡进入这个区域时,接收到读写器的射频脉冲,经过桥式整流后给电容充电。 电容电压经过稳压后作为工作电压。 (3)数据解调部分从接收到的射频脉冲中解调出命令和数据并送到控制逻辑,控制逻辑 接受指令完成存储、发送数据或其他操作。 (4)如需要发送数据,则将数据调制后从收发模块发送出去。 (5)读写器接收到返回的数据后,解码并进行错误校验来决定数据的有效性,然后进行 处理,读写器发送的射频信号除提供能量外,通常还提供时钟信号,使数据保持同步。 2、 芯片:Philips MIFARE 1 S50 S50 非接触式 IC 卡性能简介(M1) (1)主要指标 容量为8K位EEPROM 分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位 每个扇区有独立的一组密码及访问控制 每张卡有唯一序列号,为32位 具有防冲突机制,支持多卡操作 无电源,自带天线,内含加密控制逻辑和通讯逻辑电路 数据保存期为10年,可改写10万次,读无限次 工作温度:-2050(湿度为90%) 工作频率:13.56MHZ 通信速率:106 KBPS 读写距离:10 cm以内(与读写器有关) (2) 结构 M1 卡片的存储容量为 8192 bit X 1 位字长(即 1KX8 位字长),采用 EEPROM 作为存储 介质,整个结构划分为 16 个扇区,编为扇区 015。每个扇区有 4 个块(Block),分别为块 0,块 1,块 2 和块 3。每个块有 16 个字节。一个扇区共有 16 Byte X4=64 Byte。每个扇区 的块 3(即第四块)包含了该扇区的密码 A(6 个字节)、存取控制(4 个字节)、密码 B(6 个字节), 是一个特殊的块,称为控制块, 。其余三个块是一般的数据块。数据块有两种应用方法,一 种是用作一般的数据保存用,直接读写。另一种用法是用作数值块,可以进行初始化值、 加值、减值、读值的运算。系统配用相应的函数完成相应的功能。但扇区 0 的块 0 是特殊 的,是厂商代码,已固化,不可改写。 扇区存储结构 M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成, (我们也将16个 扇区的64个块按绝对地址编号为063,存贮结构如下图所示: 表1 存储结构 绝对地址 存放厂商代码 已固化 密码 A 存取控制 密码 B 密码 A 存取控制 密码 B 块 0 数据块 0 扇区 0 块 1 数据块 1 块 2 数据块 2 块 3 控制块 3 块 0 数据块 4 扇区 1 块 1 数据块 5 块 2 数据块 6 块 3 控制块 7 块 0 数据块 60 扇区 15 块 1 数据块 61 块 2 数据块 62 块 3 控制块 63 数据块可作两种应用: 用作一般的数据保存,可以进行读、写操作。 用作数据值,可以进行初始化值、加值、减值、读值操作。 每个扇区的块3为控制块,包括了密码A(6字节)、存取控制(4字节) 、密码B(6字节) 具体结构如下: A0 A1 A2 A3 A4 A5(密码 A) FF 07 80 69 (存取控制) B0 B1 B2 B3 B4 B5(密码 B) 每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控 制。存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是 由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下: 密码 A 存取控制 密码 B 块0: C10C20C30 块1: C11C21C31 块2: C12C22C32 表2控制位定义 三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如 进行减值操作必须验证 KEY A,进行加值操作必须验证 KEY B,等等) 。 * 块 0、1、2 的存取控制与块 3 的存取控制不同 (a)数据块(块 0、块 1、块 2)的存取控制如下: 表 3 控制位(X=0,1,2)访问条件(对数据块 0,1,2) C1XC2XC3XReadWriteIncrementDecrement,transfer, Restore 000KeyABKeyABKeyABKeyAB 010KeyABNeverNeverNever 100KeyABKeyBNeverNever 110KeyABKeyBKeyBKeyAB 001KeyABNeverNeverKeyAB 011KeyBKeyBNeverNever 101KeyBNeverNeverNever 111NeverNeverNeverNever (b)控制块块 3 的存取控制与数据块(块 0、1、2)不同,它的存取控制如下 表 4 密码 A存取控制密码 B C13C23C33ReadWriteReadWriteReadWrite 000NeverKeyABKeyABNeverKeyABKeyAB 010NeverNeverKeyABNeverKeyABNever 100NeverKeyBKeyABNeverNeverKeyB 块3: C13C23C33 110NeverNeverKeyABNeverNeverNever 001NeverKeyABKeyABKeyABKeyABKeyAB 011NeverKeyBKeyABKeyBNeverKeyB 101NeverNeverKeyABKeyBNeverNever 111NeverNeverKeyABNeverNeverNever (3)工作原理 卡片的电气部分只由一个天线和ASIC组成。 天线:卡片的天线是只有几组绕线的线圈,很适于封装到IS0卡片中。 ASIC:卡片的ASIC由一个高速(106KB波特率)的RF接口,一个控制单元和一 个 8K位EEPROM组成。 工作原理: 读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振 电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振, 从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容 内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其 它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。 (4) M1射频卡与读写器的通讯 复位答应Request Request Request 防冲突机制Anti collision Loop Anti collision Loop 选择卡片Select Tag Select Tag 选择卡片 三次相互验证Authentication Authentication 读块 Read 读块 Read 写块 Write Write 块 Write Write Write Write 块 Write 加值 increme nt incremen t incremen t 减值 decrement ent decrement 中止 Halt 图 1 复位应答(Answer to request) M1 射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读 写器以特定的协议与它通讯,从而确定该卡是否为 M1 射频卡,即验证卡片的卡型 防冲突机制 (Anticollision Loop) 当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则 处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。 选择卡片(Select Tag) 选择被选中的卡的序列号,并同时返回卡的容量代码。 三次次互相确认(3 Pass Authentication) 选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校 验,在三次相互认证之后就可以通过加密流进行通讯。 (在选择另一扇区时,则必须进行另 一扇区密码校验。 ) 对数据块的操作 读 (Read):读一个块; 写 (Write):写一个块; 加(Increment):对数值块进行加值; 减(Decrement):对数值块进行减值; 存储(Restore):将块中的内容存到数据寄存器中; 传输(Transfer):将数据寄存器中的内容写入块中; 中止(Halt):将卡置于暂停工作状态; 四 射频读卡模块RC522 (1)射频读卡模块RC522简介 MF RC522 是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的 一员。是NXP公司针对“三表”应用 推出的一款低 电压、低成本、体积小的非 接触式读写卡芯片,是智能仪表和便携 式手持设备研发的较好选择。 MF RC522 利用了先进的调制和解调概念,完全集成了在 13.56MHz 下所有 类型的被动非接触式通信方式和协议。支持 ISO14443A 的多层应用。其内部发 送器部分可驱动读写器天线与 ISO 14443A/MIFARE 卡和应答机的通信,无需其 它的电路。接收器部分提供一个坚固而有效的解调和解码电路,用于处理 ISO14443A 兼容的应答器信号。数字部分处理 ISO14443A 帧和错误检测(奇偶 unsigned char code DefaultKey6 = 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF;/校验密码 unsigned char g_ucTempbuf20; unsigned char idata MLastSelectedSnr4; unsigned char idata RevBuffer30; unsigned char data SerBuffer20; unsigned char data money20=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50;/最后的 50 就是卡上的金额可 以修改 void com(unsigned char com); void dat(unsigned char dat); void delay(unsigned char x); bit CmdValid; unsigned char status; / /系统初始化 / void InitializeSystem() P0 = 0xFF; P1 = 0xFF; P3 = 0xFF; ET2 = 0; /80c52 比 80C51 多一个定时器 T2 ET2 为定时计数器 2 的溢出中断允许位 T2CON = 0x04;/外部中断 1 的中断触发方式控制位 边沿触发方式 下降沿有效触发 PCON = 0x80; /电源控制寄存器波特率的选择位 SOMD ,波特率在原来的基 础上加倍 SCON = 0x70; /串行口控制寄存器 SM0 SM1=01 工作与方式 1 10 位异步收发 TMOD = 0x21; /TMOD = 0x22;定时器工作于方式 2 ,波特率发生方式 TH1 = BAUD_9600; /波特率为 9600 位每秒 方式 2 的波特率为定值 TL1 = TH1;/自动重装 TH1=TL1 TR1 = 1; / 波特率发生器 TH0 = 0x60; TL0 = 0x60;/通过初值设定可知初值 TR0 = 0; /定时器运行控制位 ET0=0; /中断允许位 ET1=0; EA=1; /中断允许总控制位 EX0=1; /外部中断 0 中断允许位 IT0 = 1; /外部中断 0 触发方式控制位 边沿触发方式 下降沿有效触发 TR2=0;/定时器 2 起停控制位 ES = 1; /串行口中断允许位 CmdValid=0; LED_GREEN = 1; /设置 LED 的显示初值 L PcdReset(); PcdAntennaOff(); PcdAntennaOn(); M500PcdConfigISOType( A ); / /用 T2 做延时子程序 / /*/ void main( ) unsigned char baud,t=0,flag=5; InitializeSystem( ); LCDinit(); xs(); while (1) status= PcdRequest(0x26,/寻卡 if(status=MI_OK) status = PcdAnticoll(/防冲撞 memcpy(MLastSelectedSnr, if(status=MI_OK) status = PcdSelect(/选定卡片 if(status=MI_OK) status = PcdAuthState(0x60, 1, DefaultKey, MLastSelectedSnr);/ 校验 卡密码 if(status=MI_OK) status =PcdRead(0x01, /读卡 if (status = MI_OK) status =PcdWrite(0x01,money); /写卡 if (status = MI_OK) com(0x85); dat(money15/10+0); dat(money15%10+0); if(t=0) bell=0; t=1; money15-; com(0xc5); dat(money15/10+0); dat(money15%10+0); else status= PcdRequest(0x26,/寻卡 if(status!=MI_OK) t=0; flag-; if(flag=0) bell=1; flag=5; 子程序 RC522.C #include #include “reg52.h“ #include “main.h“ #include “mfrc522.h“ #include #define MAXRLEN 18 void com(unsigned char com); void dat(unsigned char dat); void delay(unsigned char x); / /功 能:寻卡 /参数说明: req_codeIN:寻卡方式 / 0x52 = 寻感应区内所有符合 14443A 标准的卡 / 0x26 = 寻未进入休眠状态的卡 / pTagTypeOUT:卡片类型代码 / 0x4400 = Mifare_UltraLight / 0x0400 = Mifare_One(S50) / 0x0200 = Mifare_One(S70) / 0x0800 = Mifare_Pro(X) / 0x4403 = Mifare_DESFire /返 回: 成功返回 MI_OK / char PcdRequest(unsigned char req_code,unsigned char *pTagType) char status; unsigned int unLen; unsigned char ucComMF522BufMAXRLEN; / unsigned char xTest ; ClearBitMask(Status2Reg,0x08); WriteRawRC(BitFramingReg,0x07); / xTest = ReadRawRC(BitFramingReg); / if(xTest = 0x07 ) / LED_GREEN =0 ; / else LED_GREEN =1 ;while(1) SetBitMask(TxControlReg,0x03); ucComMF522Buf0 = req_code; status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf, / if(status = MI_OK ) / LED_GREEN =0 ; / else LED_GREEN =1 ; if (status = MI_OK) *(pTagType+1) = ucComMF522Buf1; else status = MI_ERR; return status; / /功 能:防冲撞 /参数说明: pSnrOUT:卡片序列号,4 字节 /返 回: 成功返回 MI_OK / char PcdAnticoll(unsigned char *pSnr) char status; unsigned char i,snr_check=0; unsigned int unLen; unsigned char ucComMF522BufMAXRLEN; ClearBitMask(Status2Reg,0x08); WriteRawRC(BitFramingReg,0x00); ClearBitMask(CollReg,0x80); ucComMF522Buf0 = PICC_ANTICOLL1; ucComMF522Buf1 = 0x20; status= PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf, if (status = MI_OK) for (i=0; i4; i+) *(pSnr+i) = ucComMF522Bufi; snr_check = ucComMF522Bufi; if (snr_check != ucComMF522Bufi) status = MI_ERR; SetBitMask(CollReg,0x80); return status; / /功 能:选定卡片 /参数说明: pSnrIN:卡片序列号,4 字节 /返 回: 成功返回 MI_OK / char PcdSelect(unsigned char *pSnr) char status; unsigned char i; unsigned int unLen; unsigned char ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_ANTICOLL1; ucComMF522Buf1 = 0x70; ucComMF522Buf6 = 0; for (i=0; i4; i+) ucComMF522Bufi+2 = *(pSnr+i); ucComMF522Buf6 = *(pSnr+i); / CalulateCRC(ucComMF522Buf,7, ClearBitMask(Status2Reg,0x08); status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf, if (status = MI_OK) else status = MI_ERR; return status; / /功 能:验证卡片密码 /参数说明: auth_modeIN: 密码验证模式 / 0x60 = 验证 A 密钥 / 0x61 = 验证 B 密钥 / addrIN:块地址 / pKeyIN:密码 / pSnrIN:卡片序列号,4 字节 /返 回: 成功返回 MI_OK / char PcdAuthState(unsigned char auth_mode,unsigned char addr,unsigned char *pKey,unsigned char *pSnr) 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); / / memcpy( / memcpy( status = PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf, if (status != MI_OK) | (!(ReadRawRC(Status2Reg) return status; / /功 能:读取 M1 卡一块数据 /参数说明: addrIN:块地址 / pDataOUT:读出的数据,16 字节 /返 回: 成功返回 MI_OK / char PcdRead(unsigned char addr,unsigned char *pData) char status; unsigned int unLen; unsigned char i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_READ; ucComMF522Buf1 = addr; CalulateCRC(ucComMF522Buf,2, status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf, if (status = MI_OK) for (i=0; i16; i+) *(pData+i) = ucComMF522Bufi; else status = MI_ERR; return status; / /功 能:写数据到 M1 卡一块 /参数说明: addrIN:块地址 / pDataIN:写入的数据,16 字节 /返 回: 成功返回 MI_OK / char PcdWrite(unsigned char addr,unsigned char *pData) char status; unsigned int unLen; unsigned char i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_WRITE; ucComMF522Buf1 = addr; CalulateCRC(ucComMF522Buf,2, status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf, if (status != MI_OK) | (unLen != 4) | (ucComMF522Buf0 if (status = MI_OK) /memcpy(ucComMF522Buf, pData, 16); for (i=0; i16; i+) ucComMF522Bufi = *(pData+i); CalulateCRC(ucComMF522Buf,16, status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,18,ucComMF522Buf, if (status != MI_OK) | (unLen != 4) | (ucComMF522Buf0 return status; / /功 能:命令卡片进入休眠状态 /返 回: 成功返回 MI_OK / char PcdHalt(void) char status; unsigned int unLen; unsigned char ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_HALT; ucComMF522Buf1 = 0; CalulateCRC(ucComMF522Buf,2, status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf, return MI_OK; / /用 MF522 计算 CRC16 函数 / void CalulateCRC(unsigned char *pIndata,unsigned char len,unsigned char *pOutData) unsigned char i,n; ClearBitMask(DivIrqReg,0x04); WriteRawRC(CommandReg,PCD_IDLE); SetBitMask(FIFOLevelReg,0x80); for (i=0; ilen; i+) WriteRawRC(FIFODataReg, *(pIndata+i); WriteRawRC(CommandReg, PCD_CALCCRC); i = 0xFF; do n = ReadRawRC(DivIrqReg); i-; while (i!=0) pOutData0 = ReadRawRC(CRCResultRegL); pOutData1 = ReadRawRC(CRCResultRegM); / /功 能:复位 RC522 /返 回: 成功返回 MI_OK / char PcdReset(void) MF522_RST=1; _nop_(); MF522_RST=0; _nop_(); MF522_RST=1; _nop_(); WriteRawRC(CommandReg,PCD_RESETPHASE); _nop_(); WriteRawRC(ModeReg,0x3D); /和 Mifare 卡通讯,CRC 初始值 0x6363 WriteRawRC(TReloadRegL,30); WriteRawRC(TReloadRegH,0); WriteRawRC(TModeReg,0x8D); WriteRawRC(TPrescalerReg,0x3E); WriteRawRC(TxAutoReg,0x40); return MI_OK; / /设置 RC632 的工作方式 / char M500PcdConfigISOType(unsigned char type) if (type = A) /ISO14443_A ClearBitMask(Status2Reg,0x08); /* WriteRawRC(CommandReg,0x20); /as default WriteRawRC(ComIEnReg,0x80); /as default WriteRawRC(DivlEnReg,0x0); /as default WriteRawRC(ComIrqReg,0x04); /as default WriteRawRC(DivIrqReg,0x0); /as default WriteRawRC(Status2Reg,0x0);/80 /trun off temperature sensor WriteRawRC(WaterLevelReg,0x08); /as default WriteRawRC(ControlReg,0x20); /as default WriteRawRC(CollReg,0x80); /as default */ WriteRawRC(ModeReg,0x3D);/3F /* WriteRawRC(TxModeReg,0x0); /as default? WriteRawRC(RxModeReg,0x0); /as default? WriteRawRC(TxControlReg,0x80); /as default? WriteRawRC(TxSelReg,0x10); /as default? */ WriteRawRC(RxSelReg,0x86);/84 / WriteRawRC(RxThresholdReg,0x84);/as default / WriteRawRC(DemodReg,0x4D); /as default / WriteRawRC(ModWidthReg,0x13);/26 WriteRawRC(RFCfgReg,0x7F); /4F /* WriteRawRC(GsNReg,0x88); /as default? WriteRawRC(CWGsCfgReg,0x20); /as default? WriteRawRC(ModGsCfgReg,0x20); /as default? */ WriteRawRC(TReloadRegL,30);/tmoLength);/ TReloadVal = h6a =tmoLength(dec) WriteRawRC(TReloadRegH,0); WriteRawRC(TModeReg,0x8D); WriteRawRC(TPrescalerReg,0x3E); / PcdSetTmo(106); delay_10ms(1); PcdAntennaOn(); else return -1; return MI_OK; / /功 能:读 RC632 寄存器 /参数说明:AddressIN:寄存器地址 /返 回:读出的值 / unsigned char ReadRawRC(unsigned char Address) unsigned char i, ucAddr; unsigned char ucResult=0; MF522_SCK = 0; MF522_NSS = 0; ucAddr = (Address0;i-) MF522_SI = (ucAddr MF522_SCK = 1; ucAddr 0;i-) MF522_SCK = 1; ucResult = 1; ucResult|=(bit)MF522_SO; MF522_SCK = 0; MF522_NSS = 1; MF522_SCK = 1; return ucResult; / /功 能:写 RC632 寄存器 /参数说明:AddressIN:寄存器地址 / valueIN:写入的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金秋奖学金管理办法
- 安全培训考核结果签字课件
- 通信费补贴管理办法
- 社区棋牌室节假日顾客满意度调查方案
- 贵州丰收奖管理办法
- 纪律审查组管理办法
- 资产建账管理暂行办法
- 个性化医疗设备制造2025年3D打印技术应用前景深度剖析
- 工业企业安全培训讲义课件
- 光伏电站逆变器选型与配置方案
- Unit1Developingideaslittlewhitelies课件-高中英语外研版必修第三册
- 培训反馈意见表
- 四年级上册心理健康教育课件-健康的情绪表达 全国通用(共16张PPT)
- 商业银行资产管理与负债管理
- 电力系统分析孙淑琴案例吉玲power程序实验指导书
- 集成电路版图设计(适合微电子专业)
- 高标准农田建设项目施工组织设计 (5)
- 发动机装调工技师考试资料
- 轻型动力触探试验记录表
- ASME_B36.10M美标钢管外径壁厚对照表
- 桌牌桌签模板正反桌牌会议室三字两字桌牌word版
评论
0/150
提交评论