RFID读写器设计ppt课件.ppt_第1页
RFID读写器设计ppt课件.ppt_第2页
RFID读写器设计ppt课件.ppt_第3页
RFID读写器设计ppt课件.ppt_第4页
RFID读写器设计ppt课件.ppt_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

RFID读写器原理与设计 1 目录 1 RFID读写器硬件电路设计2 RFID读写器通讯设计3 RFID读写器固件设计 2 目录 1 RFID读写器硬件电路设计2 RFID读写器通讯设计3 RFID读写器固件设计 3 1 RFID读写器硬件电路设计 1 RFID读写器介绍 2 RFID阅读器整体结构 3 RFID阅读器硬件设计 4 1 RFID读写器介绍 射频识别技术可利用射频信号识别对象 利用电磁耦合原理交换信息 与传统的识别技术相比 RFID技术具有读卡器和射频标签无接触的特点 本课程介绍一款高频RFID读写器的硬件电路设计 采用STM32F103RBT6嵌入式处理器作为主控芯片 RC500作为射频读卡芯片 可以读写工作在13 56MHz的多种射频标签 采用USB通信协议与上位机进行通信 5 2 RFID阅读器整体结构 RFID阅读器系统由微控制器 射频读卡 声 光指示 通讯接口等部分组 RFID阅读器的结构框图如下图所示 6 3 RFID阅读器硬件设计 主控器电路射频电路天线设计电源转换电路指示电路设计USB接口设计总电路图扩展应用 7 主控芯片及其最小系统设计 主控芯片 主控芯片采用了ST公司生产的基于ARMCortex M3内核的嵌入式处理器STM32F103RBT6 该处理器的工作频率为72MHz 128K字节的闪存程序存储器 高达20K字节的SRAM 支持多种通信总线 其中包括2个I2C总线接口 3个USART串行接口 2个SPI总线接口 CAN总线和USB总线 8 主控芯片及其最小系统设计 最小系统设计1拉高复位引脚NRST脚串联一个10K的电阻再接到3 3V电源 2外部晶振输入外接一个12M Hz 的晶振 晶振的匹配电容为27pF 9 主控芯片及其最小系统设计 最小系统原理图 拉高主控器复位脚 加外部晶振输入 给主控器供电即可以正常工作 10 射频读卡芯片电路设计 本RFID读写器使用NXP公司生产的MFRC500作为射频读卡芯片 该芯片是一种应用于13 56MHz的非接触式射频标签的芯片 支持符合ISO IEC14443标准的射频标签 该芯片支持10cm的最大操作距离 与NXP公司的其他射频读卡芯片CLRC63 MFRC530 MFRC531 SLRC400引脚兼容 该芯片可以用8位并行接口或SPI总线方式与微控制器进行通信 11 射频读卡芯片电路设计 MFRC500芯片主要引脚说明 13 56M晶振输入 1 3 射频信号发射 5 7 8位双向并行数据口 13to20 SPI串行通讯 13 21 22 24 天线信号输入脚 29 内部参考电压 30 重置 复位 31 VCC 6 25 26 GND 8 12 28 12 射频读卡芯片电路设计 本RFID读写器的MFRC500射频读卡芯片和主控器间的通讯采用串行通讯 其硬件原理图如下 13 天线网络的设计 对于MFRC500 可以使用两种方法将天线连接到读写器 直接匹配天线和50 匹配天线 本文中采用直接匹配的方式将MFRC500与天线连接 包括了EMC低通滤波器 天线匹配电路与接收电路 其电路分别如下图所示 14 天线网络的设计 RFID读写器采用PCB环形天线 其电感量由如上公式进行估算 式中长度单位为cm 电感值单位为nH l1为一圈导线的长度 取值20cm D1为导线的直径 取值0 1cm K为天线形状常数 本读写器是矩形天线 取值K 1 47 N为导线的圈数 取值2 代入公式 计算得L1 1857nH 对照芯片厂家提供的表格进行计算 得到与天线并联的电容容值为132 3pF 与天线串联的电容容值为17 5pF 在实际电路设计中 与天线并联的电容采100pF与22pF电容并联得到 与天线串联的电容采用18pF 接收电路使用了MFRC500内部产牛的VMID引脚作为输入电压 在VMID和地线之间连接了一个0 1 F电容 起到了减少干扰的作用 天线及其匹配电路原理图如图 15 电源转换电路 本RFID读写器才用USB接口的5V供电 读写器上有部分元器件使用的是3 3V电压 采用AMSIII7 3 3芯片提供3 3V电压 AMSIII7系列芯片可以输出1A的电流 输入电压调节率小于0 2 负载调节率小于0 4 输出电压稳定 16 声光指示设计 1蜂鸣器控制读写器用一个蜂鸣器出声音 操作读写器或者刷卡时会发出正确或错误的提示声 2红绿双色LED灯提示读写器的运行状态 17 USB接口设计 读写器通过USB与电脑端上位机通讯 同时也采用USB接口给整个系统供电 按照USB协议 全速设备在D 线路上拉1 5K到Vcc 上拉引脚加PNP三极管进行USB的开关控制 18 总电路图 19 扩展应用 门禁 考勤读头 会员管理发卡器 物联网终端 金融POS机机 仓储盘点机 智能水电表 20 目录 1 RFID读写器硬件电路设计2 RFID读写器通讯设计3 RFID读写器固件设计 21 2 RFID读写器通讯设计 1 HID概述 2 开发环境介绍 3 指定HID设备查找 4 HID设备通讯 22 1 HID概述 HID HumanInterfaceDevice 人机接口设备是Windows最早支持的USB类别 由其名称可以了解HID设备是计算机直接与人交互的设备 例如键盘 鼠标和游戏杆等 不过HID设备不一定要有人机接口 只要符合HID类别规范 就都是HID设备 23 通过设备管理器了解USBHID设备通过USBLyzer了解 24 1 HID概述 链接知识 USB速度低速 1 5Mbps全速 12Mbps高速 480Mbps USB1 1 USB2 0 USB3 0 5 0Gbps 25 1 HID概述 HID数据传输能力每一笔事务 USB事务是指主机和USB设备间数据传输的基本单位 可以携带小量或中量的数据 低速设备每一笔事务最大是8个字节 全速设备每一笔事务最大是64个字节 高速设备每一笔事务最大是1024个字节 最大的传输速度有限 特别是低速与全速的时候 主机可以保证低速的中断端点 每10ms内不会有超过1笔事务 每一秒最多800个字节 主机可以保证全速的中断端点 每1ms内不会有超过1笔事务 每一秒最多是64000个字节 主机可以保证高速的中断端点 每125us内不会有超过1笔事务 每一秒最多24 576M个字节 26 1 HID概述 链接知识 API ApplicationProgrammingInterface 应用程序编程接口 是一些预先定义的函数 目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力 而又无需访问源码 或理解内部工作机制的细节 API函数包含在Windows系统目录下的动态连接库文件中 如USBHID的API就封装在hid dll setupapi dll kernal32 dll里面 27 1 HID概述 使用HID设备进行开发的优点作为Windows操作系统最先支持的USB设备 在Windows98以及后来的版本中内置有HID设备的驱动程序 API 应用程序可以直接使用这些驱动程序来与设备通信 在设计一个USB接口的计算机外部设备时 如果HID类型的设备可以满足需要 可以将其设计为HID类型设备 这样可以省去比较复杂的USB驱动程序的编写 直接利用Windows操作系统对标准的HID类型USB设备的支持 28 2 开发环境介绍 编译环境 VisualC 6 0参考资料 MSDN开发语言 C 29 2 开发环境介绍 作为Windows默认支持的HID设备 开发人员可以直接调用Win32API函数进行HID设备通信应用程序的开发 开发HID设备用到的动态链接库有Hid dll 用于设置获取HID设备属性信息 Setupapi dll 用于查找识别设备 Kernal32 dll 用于打开关闭设备 实现数据传输 30 2 开发环境介绍 搭建开发环境新建工程 31 2 开发环境介绍 搭建开发环境添加API函数库 静态调用 32 2 开发环境介绍 链接知识 USBHID调试工具介绍USBLyzerBusHoundUsbView 33 3 指定HID设备查找 设计思路 根据HID设备厂商提供的VID和PID 在已枚举的所有HID设备中进行筛选 找到目标设备 34 3 指定HID设备查找 链接知识 GUID在计算机领域有很多东西需要不重复的唯一标识的东西 例如设备的类型 类 接口标识 目录名等等 需要GUID的时候 可以完全由算法自动生成 不需要一个权威机构来管理 GUID理论上能产生全球唯一的值 对于以后的数据导入很方便 GUID的格式为 xxxxxxxx xxxx xxxx xxxx xxxxxxxxxxxx 其中每个x是0 9或a f范围内的一个十六进制的数字 例如 4D1E55B2 F16F 11CF 88CB 001111000030 即为HID类的GUID值 Hidclass h HID设备的GUID也可以用API函数HidD GetHidGuid获得 35 3 指定HID设备查找 软件流程 调用函数HidD GetHidGuid获得USBHID类设备的GUID 调用函数SetupDiGetClassDevs 传入上一步取得的HID类的GUID 返回一个包含全部HID信息的结构数组的指针 调用函数SetupDiEnumDeviceInterfaces 传入上一步获得的指向所有HID类的指针 获取SP DEVICE INTERFACE DATA结构的设备接口数据 该数据用于识别一个HID设备接口 调用函数SetupDiGetDeviceInterfaceDetail 传入上一步的接口 获得一个指向该设备接口详细信息 里面包含设备的路径 调用函数CreateFile 传入上一部的设备路径 获得设备句柄 调用函数HidD GetAttributes 传入上一步的设备句柄 获得HIDD ATTRIBUTES结构的数据项 该结构包含设备的厂商ID 产品ID和产品序列号 比照这些数值确定该设备是否是查找的设备 36 3 指定HID设备查找 37 3 指定HID设备查找 4D1E55B2 F16F 11CF 88CB 001111000030 typedefstruct GUID sizeis16DWORDData1 4D1E55B2WORDData2 F16FWORDData3 11CFBYTEData4 8 88CB 001111000030 GUID 38 3 指定HID设备查找 void stdcallHidD GetHidGuid OUTLPGUIDHidGuid 39 3 指定HID设备查找 Definetypeforreferencetodeviceinformationset typedefPVOIDHDEVINFO 40 3 指定HID设备查找 Flagscontrollingwhatisincludedinthedeviceinformationsetbuilt bySetupDiGetClassDevs defineDIGCF DEFAULT0 x00000001 只返回与系统默认设备相关的设备 defineDIGCF PRESENT0 x00000002 只返回当前存在的设备 defineDIGCF ALLCLASSES0 x00000004 返回所有已安装的设备 如果这个标志设置了 ClassGuid参数将被忽略 defineDIGCF PROFILE0 x00000008 只返回当前硬件配置文件中的设备 defineDIGCF DEVICEINTERFACE0 x00000010 返回所有支持的设备 41 3 指定HID设备查找 关键代码分析 获取HID类的GUIDGUIDGuid HidD GetHidGuid 没有找到HID类设备 退出 42 3 指定HID设备查找 typedefstruct SP DEVICE INTERFACE DATA DWORDcbSize GUIDInterfaceClassGuid DWORDFlags DWORDReserved SP DEVICE INTERFACE DATA PSP DEVICE INTERFACE DATA 43 3 指定HID设备查找 WINSETUPAPIBOOLWINAPISetupDiEnumDeviceInterfaces INHDEVINFODeviceInfoSet INPSP DEVINFO DATADeviceInfoData OPTIONALINLPGUIDInterfaceClassGuid INDWORDMemberIndex 逐一枚举的设备集中的索引号 如果该值超出设备集范围 改函数将返回FALSE 并通过GetLastError返回错误值 ERROR NO MORE ITEMSOUTPSP DEVICE INTERFACE DATADeviceInterfaceData 44 3 指定HID设备查找 关键代码分析 枚举所有HID类设备 逐一查找指定设备SP INTERFACE DEVICE DATAifData ifData cbSize sizeof ifData for inti 0 SetupDiEnumDeviceInterfaces info NULL i 获取接口详细信息 45 3 指定HID设备查找 WINSETUPAPIBOOLWINAPISetupDiGetDeviceInterfaceDetailA INHDEVINFODeviceInfoSet 目标设备集指针INPSP DEVICE INTERFACE DATADeviceInterfaceData OUTPSP DEVICE INTERFACE DETAIL DATA ADeviceInterfaceDetailData OPTIONALINDWORDDeviceInterfaceDetailDataSize OUTPDWORDRequiredSize OPTIONALOUTPSP DEVINFO DATADeviceInfoDataOPTIONAL 46 3 指定HID设备查找 typedefstruct SP DEVICE INTERFACE DETAIL DATA A DWORDcbSize CHARDevicePath ANYSIZE ARRAY SP DEVICE INTERFACE DETAIL DATA A PSP DEVICE INTERFACE DETAIL DATA A 47 3 指定HID设备查找 获取接口详细信息DWORDneeded SetupDiGetDeviceInterfaceDetail info 设备路径 48 3 指定HID设备查找 typedefstruct SECURITY ATTRIBUTES DWORDnLength 结构体的大小 可用SIZEOF取得LPVOIDlpSecurityDescriptor 安全描述符 安全描述符包含和被保护对象相关联的安全信息的数据结构 安全描述符包括谁拥有对象 以何种方式访问以及何种审查访问类型等信息 BOOLbInheritHandle 安全描述的对象能否被新创建的进程继承 SECURITY ATTRIBUTES PSECURITY ATTRIBUTES LPSECURITY ATTRIBUTES 49 3 指定HID设备查找 WINBASEAPIHANDLEWINAPICreateFileA LPCSTRlpFileName 要打开的文件的名或设备名DWORDdwDesiredAccess 指定类型的访问对象 如 GENERIC READ GENERIC WRITEDWORDdwShareMode 共享方式LPSECURITY ATTRIBUTESlpSecurityAttributes 安全特性DWORDdwCreationDisposition 建立方式 如 CREATE NEW OPEN EXISTING OPEN ALWAYSDWORDdwFlagsAndAttributes 属性 如 FILE ATTRIBUTE HIDDEN FILE ATTRIBUTE READONLYHANDLEhTemplateFile 模板文件句柄 可为空 50 3 指定HID设备查找 获取设备句柄DeviceHandle CreateFile detail DevicePath 0 FILE SHARE READ FILE SHARE WRITE LPSECURITY ATTRIBUTES NULL OPEN EXISTING 0NULL 51 3 指定HID设备查找 typedefstruct HIDD ATTRIBUTES ULONGSize sizeof struct HIDD ATTRIBUTES USHORTVendorID USHORTProductID USHORTVersionNumber HIDD ATTRIBUTES PHIDD ATTRIBUTES 52 3 指定HID设备查找 BOOLEAN stdcallHidD GetAttributes INHANDLEHidDeviceObject OUTPHIDD ATTRIBUTESAttributes 53 3 指定HID设备查找 HIDD ATTRIBUTESAttributes Attributes Size sizeof Attributes Result HidD GetAttributes DeviceHandle If Attributes VendorID VendorID Attributes ProductID ProductID 根据VID和PID找到指定HID设备 54 3 指定HID设备查找 WINSETUPAPIBOOLWINAPISetupDiDestroyDeviceInfoList INHDEVINFODeviceInfoSet 55 3 指定HID设备查找 关键代码分析 记得释放资源SetupDiDestroyDeviceInfoList info 56 4 HID设备通讯 设计思路 1 查找指定HID设备2 调用CreateFile 获取设备句柄 用于获取设备属性 写句柄 用于向设备发送数据 读句柄 用于从设备接收数据 3 调用WriteFile ReadFile进行数据传输 57 4 HID设备通讯 Windows驱动采用File 文件 方式进行数据交互 58 4 HID设备通讯 关键代码分析 发送USB数据 写文件 Result WriteFile WriteHandle 写文件句柄 在查找HID时建立DataSendBuff 将要发送的数据填入此数组Capabilities OutputReportByteLength 输出长度 在查找HID时建立 59 4 HID设备通讯 外链知识 OVERLAPPED是一个包含了用于异步输入输出的信息的结构体 I O设备处理必然让主程序停下来干等I O的完成 解决这个问题 可以使用OVERLAPPED OVERLAPPEDI O是WIN32的一项技术 你可以要求操作系统为你传送数据 并且在传送完毕时通知你 这项技术使你的程序在I O进行过程中仍然能够继续处理事务 事实上 操作系统内部正是以线程来I O完成OVERLAPPEDI O 你可以获得线程的所有利益 而不需付出什么痛苦的代价 也就是说 OVERLAPPED主要是设置异步I O操作 异步I O操作是指应用程序可以在后台读或者写数据 而在前台做其他事情 60 4 HID设备通讯 WINBASEAPIBOOLWINAPIReadFile HANDLEhFile LPVOIDlpBuffer DWORDnNumberOfBytesToRead LPDWORDlpNumberOfBytesRead LPOVERLAPPEDlpOverlapped 61 4 HID设备通讯 关键代码分析Result ReadFile ReadHandle 读文件句柄 在查找HID设备时返回InputReport 用来接收HID数据的缓冲区Capabilities InputReportByteLength 输入长度 62 USBHID通讯程序例程 ZD100系列读写器服务终端双界面读卡器 63 目录 1 RFID读写器硬件电路设计2 RFID读写器通讯设计3 RFID读写器固件设计 64 RFID读写器概述 本RFID读写器是基于STM32开发 采用USB和电脑端通讯 RFID射频芯片是恩智浦的MFRC500 所以读写器的驱动代码是基于STM32F103RBT6单片机对MFRC500射频芯片操作的编写 编写本读写器用到的软件工具和关键技术 KeilMDK代码编译工具STM32F103RBT6单片机使用MFRC500射频芯片关键寄存器介绍与配置SPI接口介绍STM32单片机代码烧录STM32单片机控制MFRC500对M1卡的简单操作 65 STM32开发工具keilMDK介绍 Keil是德国知名软件公司Keil 现已并入ARM公司 开发的微控制器软件开发平台 是目前ARM内核单片机开发的主流工具 Keil提供了包括C编译器 宏汇编 连接器 库管理和一个功能强大的仿真调试器在内的完整开发方案 通过一个集成开发环境 uVision 将这些功能组合在一起 它的界面和常用的微软VC 的界面相似 界面友好 易学易用 在调试程序 软件仿真方面也有很强大的功能 使用Keil来开发嵌入式软件 开发周期和其他的平台软件开发周期是差不多的 大致有以下几个步骤 1 创建一个工程 选择一块目标芯片 并且做一些必要的工程配置 2 编写C或者汇编源文件 3 编译应用程序 4 修改源程序中的错误 5 联机调试 66 STM32开发工具keilMDK介绍 MDK具有良好的界面风格 下图是主界面窗口 67 STM32F103RBT6单片机使用 本RFID读写器的主控单片机是STM32 固件代码用C语言编写 STM32系列是基于ARMCortex M内核专为要求高性能 低成本 低功耗的嵌入式应用而设计 使用STM32外设功能时可用以直接操作寄存器方法或调用ARM微控制器固件函数库 寄存器 STM32和其他单片机原理一样 也是有自己的寄存器 作为一款ARM内核的芯片 功能非常丰富 寄存器自然也很多 STM32的手册有一千多页 操作配置某个外设的时都要去查阅数据手册才能驱动起来 STM32中文参考手册 固件函数库 该函数库是一个固件函数包 它由程序 数据结构和宏组成 包括了微控制器所有外设的性能特征 该函数库还包括每一个外设的驱动描述和应用实例 通过使用本固件函数库 无需深入掌握细节 用户也可以轻松应用每一个外设 因此 使用本固态函数库可以大大减少用户的程序编写时间 进而降低开发成本 STM32固件库使用手册 68 STM32F103RBT6单片机使用 STM32配置GPIO口操作寄存器版本和调用固件函数库版本C代码举例如下 寄存器 固件函数库 69 MFRC500关键寄存器介绍与配置 MFRC500的控制主要是通过读写MFRC500的寄存器来实现的 RC500共有64个寄存器 单简单应用的话只用到其中的几个 用的最多的是FIFODATA 数据堆栈 COMMAND 命令 FIFOLENGTH 堆栈长度 PRIMARYSTATU 标记 等 MFRC500主要是通过写通讯命令 参数 数据到FIFODATA 再通过写命令到COMMAND实现与M1卡的通讯 MFRC500通讯主要分为4步一 寻卡 写通讯命令26H或52H到FIFODATA 成功后得到卡类型 二 选择 写通讯命令93H到FIFODATA 成功后得到卡号 三 认证 密码校验 通过LOADKEY写KEY到KEY缓存 写参数命令60 认证A密码 或61H 认证B密码 块地址 卡号到FIFODATA 写命令0CH到COMMAND 此操作卡不返回数据 通过读取标记判断是否成功四 直接对卡进行读写增减值操作 也就是通过在FIFODATA上写入命令参数及数据 70 SPI接口介绍 SPI SerialPeripheralInterface 串行外设接口 总线系统是一种同步串行外设接口 它可以使MCU与各种外围设备以串行方式进行通信以交换信息 SPI是一种高速的 全双工 同步的通信总线 并且在芯片的管脚上只占用四根线 节约了芯片的管脚 同时为PCB的布局上节省空间 提供方便 正是出于这种简单易用的特性 现在越来越多的芯片集成了这种通信协议 SPI接口一般使用4条线 MISO主设备数据输入 从设备数据输出 MOSI主设备数据输出 从设备数据输入 SCLK时钟信号 由主设备产生 CS从设备片选信号 由主设备控制 其中CS是控制芯片是否被选中的 只有片选信号为使能信号时对此芯片的操作才有效 这就允许在同一总线上可以连接多个SPI设备 71 SPI接口介绍 SPI总线四种工作方式SPI模块为了和外设进行数据交换 根据外设工作要求 其输出串行同步时钟极性和相位

温馨提示

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

评论

0/150

提交评论