试验17—基于RFID的电子钱包应用试验课案_第1页
试验17—基于RFID的电子钱包应用试验课案_第2页
试验17—基于RFID的电子钱包应用试验课案_第3页
试验17—基于RFID的电子钱包应用试验课案_第4页
试验17—基于RFID的电子钱包应用试验课案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验时间:2016.1.4实验题目:实验 17 基于 RFID的电子钱包应用实验实验目的:了解RFID 相关知识。掌握RFID 模块读写IC 卡数据的原理与方法。实验原理及程序分析:1、STM8S处理器概述本实验所使用 RFID 模块由 STM8处理器和 MFRC531高( 集成非接触读写芯片 ) 两片 芯片搭建而成的。STM8是基于 8 位框架结构的微控制器,其 CPU 内核有 6 个内部寄存器,通过这 些寄存器可高效地进行数据处理。 STM8的指令集支持 80条基本语句及 20种寻址模式, 而且 CPU的6 个内部寄存器都拥有可寻址的地址。STM8 内部的 FLASH程序存储器和数据 EE

2、PRO由M一组通用寄存器来控制。用户可 以使用这些寄存器来编程或擦除存储器的内容、设置写保护、或者配置特定的低功 耗模式。用户也可以对器件的选项字节 (Option byte) 进行编程。FLASHSTM8S EEPROM分 为两个存储器阵列: 最多至 128K字节的 FLASH程序存储器,不同的器件容量有所不同。 最多至 2K字节的数据 EEPROM包( 括 option byte 选择字节 ) ,不同的器件容 量有所不同。编程模式 字节编程和自动快速字节编程 ( 没有擦除操作 ) 字编程 块编程和快速块编程 ( 没有擦除操作 ) 在编程 / 擦除操作结束时和发生非法编程操作时产生中断读同时

3、写 (RWW功) 能。该特性并不是所有 STM8S器件都拥有。在应用编程 (IAP) 和在线编程 (ICP) 能力。保护特性 存储器读保护 (ROP) 基于存储器存取安全系统 (MASS 密钥) 的程序存储器写保护 基于存储器存取安全系统 (MASS 密钥) 的数据存储器写保护 可编程的用户启动代码区域 (UBC) 写保护在待机 (Halt) 模式和活跃待机 (Active-halt) 模式下,存储器可配置为运 行状态和掉电状态。数据 EEPROM(DATA区) 域可用于存储用户具体项目所需的数据。默认情况下, DATA 区域是写保护的,这样可以在主程序工作在IAP 模式时防止 DATA 区域

4、被无意地修改。只有使用特定的 MASS密 钥才能对 DATA 区域的写保护解锁。2、MFR531概 述MF RC531 是应用于 13.56MHz 非接触式通信中高集成读写卡芯片系列中的 一员。该读写卡芯片系列利用了先进的调制和解调概念, 完全集成了在 13.56MHz 下所有类型的被动非接触式通信方式和协议。芯片管脚兼容 MFR C500、MF RC530 和SL RC400。MFR C531支持 ISO/IEC14443A/B 的所有层和 MIFARE经典协议,以及与该标 准兼容的标准。支持 ?高速 MIFARE非接触式通信波特率。内部的发送器部分不需 要增加有源电路就能够直接驱动近操作距

5、离 ?的天线(可达 100mm)。接收器部 分提供一个坚固而有效的解调和解码电路, 用于 ISO14443A 兼容的应答器信号。 数字部分处理 ISO14443A 帧和错误检测(奇偶 CRC)。此外,它还支持快速 CRYPTO1加 密算法,用于验证 MIFARE 系列产品。与主机通信模式有 8 位并行和 SPI 模式,用户可根据不同的需求选择不同的模式,这样给读卡器 / 终端的设 计提供了极大的灵活性。图 1.1 MFRC531特性 高集成度的调制解调电路; 采用少量外部器件,即可输出驱动级接至天线; 最大工作距离 100mm;支持ISO/IEC14443 A/B 和MIFARE经典协议; 支

6、持非接触式高速通信模式,波特率可达 424kb/s ; 采用 Crypto1 加密算法并含有安全的非易失性内部密匙存储器; 管脚兼容 MF RC500、MF RC530和SL RC400; 与主机通信的 2 种接口:并行接口和 SPI ,可满足不同用户的需求; 自动检测微处理器并行接口类型;灵活的中断处理; 64字节发送和接收 FIFO 缓冲区; 带低功耗的硬件复位; 可编程定时器; 唯一的序列号;用户可编程初始化配置; 面向位和字节的帧结构; 数字、模拟和发送器部分经独立的引脚分别供电; 内部振荡器缓存器连接 13.56MHz 石英晶体; 数字部分的电源( DVDD) 可选择 3.3V 或

7、5V; 在短距离应用中,发送器(天线驱动)可以用 3.3V 供电。MF RC531 适用于各种基于 ISO/IEC 14443 标准,并且要求低成本、小尺寸、高 性能以及单电源的非接触式通信的应用场合。公共交通终端; 手持终端; 板上单元; 非接触式 PC终端; 计量; 非接触式公用电话。并行微控制器接口自动检测连接的 8 位并行接口的类型。它包含一个的双向 FIFO 缓冲区和一个可配置的中断输出。这样就为连接各种MCU提 供了很大的灵活性。即使使用非常低成本的器件也能满足高速非接触式通信的要求。带 FIFO 的SPI 从机接口,其串 行时钟 SCK 由主机提供。数据处理部分执行数据的并行串行

8、转换。它支持的帧包括CRC和奇偶校验。它以完全透明的模式进行操作,因而支持 ISO14443A 的所有层。状态和控制部分允许对器件 进行配置以适应环境的影响并使性能调节到最佳状态。当与MIFARES tandard 和MIFARE 产品通信时,使用高速 CRYPTO1流密码单元和一个可靠的非易失性密匙存储器。模拟电路包含了一个具有非常低阻抗桥驱动器输出的发送部分。这使得最大操作距 离可达 100mm。接收器可以检测到并解码非常弱的应答信号。 由于采用了非常先进的技术, 接收器已不再是限制操作距离的因素了。该器件为 32脚SO 封装。器件使用了 3 个独立的电源以实现在 EMC特性和信号解耦方

9、面达到最佳性能。 MFR C531具有出色的 RF性能并且模拟和数字部分可适应不同的操作电 压。非接触式天线使用以下 4 个管脚:为了驱动天线, MF RC531通过 TX1 和TX2 提供13.56MHz 的能量载波。根据寄存 器的设定对发送数据进行调制得到发送的信号。卡采用RF场的负载调制进行响应。天线拾取的信号经过天线匹配电路送到 RX 脚。MF RC531 内部接收器对信号进行检测和 解调并根据寄存器的设定进行处理。然后数据发送到并行接口由微控制器进行读取。MFR C531 支持 MIFARE有源天线的概念。 它可以处理管脚甅 FIN 和MFOU处T的 MIFARE 核心 ?模块的基带

10、信号 NPAUSE和 KOMP。MIFARE接口可采用下列方式与甅 F RC531的模拟或数字部分单独通信: 模拟电路可通过 MIFARE 接口独立使用。 这种情况下, MFIN 连接到外部产生的 NPAUSE 信号。 MFOUT提 供 KOMP信 号。数字电路可通过 MIFARE接口驱动外部信号电路。这种情况下,甅FOUT提供内部产生的 NPAUSE信 号而 MFIN 连接到外部输入的 KOMP信 号。4 线 SPI 接口:代码实现如下/ RC531 初始化,上电后需要延时一段时间500mssigned char MFRC531_Init(void)signed char status =

11、MI_OK;signed char n = 0xFF; unsigned int i = 3000;/ CS - PC4GPIO_Init(MFRC531_CS_PORT, MFRC531_CS_PIN, GPIO_MODE_OUT_PP_HIGH_FAST); MFRC531_SPI_DIS();/ RST - PC3GPIO_Init(MFRC531_RST_PORT, MFRC531_RST_PIN, GPIO_MODE_OUT_PP_HIGH_FAST); / 读寄存器unsigned char MFRC531_ReadReg(unsigned char addr)unsigned c

12、har SndData;unsigned char ReData;/ 处理第一个字节, bit7:MSB=1,bit61:addr,bit0:0SndData = (addr 1);SndData |= 0x80;SndData &= 0xFE;MFRC531_SPI_EN(); SPI_RWByte(SndData);ReData = SPI_RWByte(0x00);MFRC531_SPI_DIS();return ReData;/ 写寄存器void MFRC531_WriteReg(unsigned char addr, unsigned char data)unsigned char

13、SndData;/ 处理第一个字节, bit7:MSB=0,bit61:addr,bit0:0SndData = (addr 1);SndData &= 0x7E;MFRC531_SPI_EN(); SPI_RWByte(SndData);SPI_RWByte(data); MFRC531_SPI_DIS();/ 置 RC531寄存器位void MFRC531_SetBitMask(unsigned char addr,unsigned char mask) unsigned char temp;temp = MFRC531_ReadReg(addr);MFRC531_WriteReg(add

14、r, temp | mask);/ 清 RC531寄存器位void MFRC531_ClearBitMask(unsigned char addr,unsigned char mask) unsigned char temp;temp = MFRC531_ReadReg(addr);MFRC531_WriteReg(addr, temp & mask);/ 清空缓冲区unsigned char MFRC531_ClearFIFO(void)unsigned char i;MFRC531_SetBitMask(RegControl, 0x01); delay_us(100);/ 判断 FIFO

15、是否被清楚i = MFRC531_ReadReg(RegFIFOLength);if(i = 0)return 1;else return 0;/ 读缓冲区unsigned char MFRC531_ReadFIFO(unsigned char *Send_Buf)unsigned char len, i;len = MFRC531_ReadReg(RegFIFOLength); for(i = 0;i len; i+)Send_Bufi = MFRC531_ReadReg(RegFIFOData); return len;/ 写缓冲区void MFRC531_WriteFIFO(unsign

16、ed char *Send_Buf,unsigned char Length) unsigned char i;for(i = 0; i Length; i+)MFRC531_WriteReg(RegFIFOData, Send_Bufi);MFRC531底 层驱动*/extern signed char MFRC531_Init(void); / RC531初始化,上电后需要延时一段时间extern unsigned char MFRC531_ReadReg(unsigned char addr); /读 RC531寄存器extern void MFRC531_WriteReg(unsign

17、ed char addr, unsigned char data);/写RC531寄存器extern void MFRC531_SetBitMask(unsigned char addr,unsigned char mask);/ 置 RC531寄存器位 extern void MFRC531_ClearBitMask(unsigned char addr,unsigned char mask);/ 清RC531寄存器位extern unsigned char MFRC531_ClearFIFO(void); / 清空缓冲区extern unsigned char MFRC531_ReadFI

18、FO(unsigned char *Send_Buf); /读缓冲区extern void MFRC531_WriteFIFO(unsigned char *Send_Buf,unsigned char Length); / 写缓冲区extern signed char MFRC531_CfgISOType(unsigned char type); /设置 RC531工作方式extern signed char MFRC531_ReadE2(unsigned int startaddr, unsigned char length,unsigned char *readdata); /读 RC5

19、31 EEPRO数M据extern signed char MFRC531_WriteE2(unsigned int startaddr, unsigned char length,unsigned char *writedata); /写数据到 RC531 EEPROMextern signed char MFRC531_OpenAnt(void); / 开启天线发射 extern signed char MFRC531_CloseAnt(void); / 关闭天线发射 extern void MFRC531_SetTimer(unsigned char TimerLength); /设置

20、RC531定时器/ /ISO14443通讯函数/ extern signed char MFRC531_ISO14443_Transceive(struct TransceiveBuffer *pi);/ 指定 PCD接收缓冲值#ifndef FSDI#define FSDI 4#endif/ 硬件版本号const unsigned char hardmodel12 = SL601F-0512;unsigned char g_bReceOk; /正确接收到上位机指令标志unsigned char g_bReceAA; /接收到上位机发送的 AA 字节标志unsigned char g_bRc5

21、31Ok; /RC531复位正常标志unsigned int g cReceNum; /接收到上位机的字节数unsigned int g_cCommand; / unsigned char g_cSNR4; /M1 unsigned char g_cIcdevH; / unsigned char g_cIcdevL; /接收到的命令码卡序列号设备标记设备标记unsigned char g_cFWI; / unsigned char g_cCidNad; /和上位机通讯时的缓冲区unsigned char g_cReceBuf64; / / / 响应上位机发送的设置波特率命令/ void Com

22、SetBaudrate(void) / / 响应上位机发送的读取硬件版本号命令 / void ComGetHardModel(void) / 响应上位机发送的设置 RC531协议命令, ISO14443A/B / void ComPcdConfigISOType(void) / 响应上位机发送的天线命令 / void ComPcdAntenna(void) / 响应上位机发送的寻 A卡命令 / void ComRequestA(void) / / 响应上位机发送的 A卡防冲撞命令 / void ComAnticoll(void)/ / 响应上位机发送的 A卡锁定命令 / void ComSelect(void) / / 响应上位机发送的 A卡休眠命令 / void ComHlta(void)/ / 响应上位机发送的 A卡验证密钥命令 / void ComAuthentication(void)/ / 响应上位机初始化钱包命令/void ComM1Initval(void) / 正确执行完上位机指令,应答(有返回数据)/input : answerdata = 应答数据/ answ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论