USB接口技术应用和RFID应用系统软件_第1页
USB接口技术应用和RFID应用系统软件_第2页
USB接口技术应用和RFID应用系统软件_第3页
USB接口技术应用和RFID应用系统软件_第4页
USB接口技术应用和RFID应用系统软件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

浙江科技学院本科毕业设计(论文) 1-USB接口技术应用摘要:USB是通用串行总线(UniversalSerialBus)的简称,是一种应用在计算机领域的新型接口技术(也越来越多地应用于嵌入式便携设备),是当前最流行的接口技术之一。USB以其卓越的易用性、稳定性、兼容性、扩展性、完备性、网络性和低功耗等诸多优点得到了迅速发展和广泛的应用。本毕业设计在对USB接口技术原理进行深入的理解的基础上,通过对一套教学演示用传感器套件产品的串口接口改进成USB接口的过程,探讨USB接口技术运用到实际设计过程当中的一种普遍方法。采用PIC16F690控制CH372接口芯片实现USB的批量传输和中断传输,编写基于VC的PC端配套软件读写单片机数据并显示来实现产品的各项功能。论文包括USB原理介绍,CH372接口芯片的使用,USB设备的软硬件设计以及PC端程序编写思路。对USB接口开发或者对原有设备进行USB升级有一定的作用。关键词:通用串行总线;USBPIC16F690;接口芯片;CH372Abstract:UniversalSerialBus(USB)isspecifiedtobeanindustry-standardextensiontothePCarchitecturewithafocusonPCperipheralsthatenableconsumerandbusinessapplications.Now,becauseofthearchitectureoftheUSB:Ease-of-use,Low-cost,MultiplePeripheralsandFullbackwardcompatibility,USBisfullusedinthedevelopmentofPCperipherals.ThisgraduationdesigndevelopstheUSBportforakindofteachingproductwhatisusedforshowingsensorsanddoingexperimentforstudentsinstandofCOMport.It’sshowedawidespreadmethodofdevelopingtheUSBport.AfterhavingstudiedtheUniversalSerialBusSpecificationdeeply,Ihavedesignedthisproject.TheMicrochipPIC16F690controlstheUSBdeviceICCH372tobulkandinterruptTransactions.Attheendofdesign,IprogrammedaapplicationsoftwarewithVC++6.0toshowtheresultofsensorsandexperiment.ThisthesisincludesUniversalSerialBusSpecification,methodofCH372,hardwareandfirmwareprogrammerandthewayofdevelopinganapplication.ItisusefulfordesignaUSBdeviceordevelopstheexistencedevicewithUSB.Keywords:UniversalSerialBus;USB;PIC16F690;CH3721前言USB是英文UniversalSerialBus的简称,是一种应用在计算机领域的新型接口技术(也越来越多地应用于嵌入式便携设备),是当前最流行的接口技术之一。USB以其卓越的易用性、稳定性、兼容性、扩展性、完备性、网络性和低功耗等诸多优点得到了迅速发展和广泛的应用。当今的计算机外部设备都在追求高速度和高通用性。为了满足用户的需求,以Intel为首的七家公司Intel、Compaq、Microsoft、IBM、DEC、Northern、Telecom以及日本NEC于1994年11月推出了USB(UniversalSerialBus)通用串行总线协议的第一个草案专用于低中速的计算机外设,USB可把多达127个外设同时连到用户的系统上,所有的外设通过协议来共享USB的带宽,其12Mbps的带宽对于键盘鼠标等低中速外设是完全足够。随着USB技术的应用不断深入,在2000年发布的USB规范版本2.0中已经将USB支持的带宽提升到480Mbps。USB正在不断地占领PC外设的市场,成为了PC外设的主流接口。在自己的产品中使用USB已经成为了一种潮流。如果希望产品被市场接受开发者往往不得不使用USB。现在USB不光成为了微机主板上的标准端口而且还成为了所有微机外设(包括键盘、鼠标、显示器、打印机、数字相机、扫描仪和游戏手柄等等)与主机相连的标准协议之一。这种连接较以往普通并口(Parallelport)和串口(serialport)的连接而言主要的优点是速度高、功耗低、支持即插即用(Plug&Play)和使用维护方便。因此我觉得USB的应用将越来越广泛。特别是在电气专业领域,工业现场控制,便携测试设备等方面。 在对USB协议和实现方法进行了深入的研究之后,在导师的支持下,我有幸得到一外资企业要求设计USB接口的教学演示用传感器套件的机会,让我能够将自己的所学的USB技术应用到实际产品当中去。 该企业现有一套基于串口教学演示用传感器套件产品,用于初高中学校教学过程中利用电脑演示物理量,实验结果等。由于串口越来越不普遍,给用户带来了很大的影响。企业迫切希望推出基于USB接口的升级产品来顺应时代潮流,更好地满足用户需求。2总体设计方案2.1分析用户要求企业已经拥有一套比较完善的传感器产品。该套产品中有温度、湿度、导电率、pH、光密度、光电、空气湿度、磁场等十余种传感器,销往包括俄罗斯在内的东欧国家。使用时,这些传感器接入到一个称为主机的设备上,该设备将传感器的模拟量经过计算后存储并通过串口发送到PC端。PC端有一套配合使用的软件,在软件平台上演示传感器的效果或者实验结果。用户要求所有传感器都独立采用USB接口,即每一个传感器都能够独立接入PC端USB接口。用户允许改变现有传感器的结构,包括测量方法。PC机端程序要求实现原有软件的所有功能。2.2总体设计方案 基于企业已经拥有一套比较完善的传感器产品,我们的工作只是将传感器升级成USB接口,因此首先分析现有传感器的测量原理和电路结构,在此基础上进行硬件升级。由于串口操作和USB操作方法的不同,PC端软件必须重新编写。系统硬件框图图中传感器部分由实际的传感器代替,信号处理部分主要是对传感器信号的放大和过滤。利用PIC单片机中集成的10位AD转换功能将模拟量进行数字化后存储(如有必要进行一定的计算)。利用PIC并口同USB接口芯片进行数据和命令传输,以实现USB传输功能。由于USB的传输一定是主机发起的,所以PC机端的应用软件除了要实现当前物理量的显示功能外,还必须能够实现USB的各项传输。出于稳定性考虑,我基本采用原来的传感器的测量方法和模拟电路,而且现有的产品电路比较成熟。因此,图中传感器和信号处理部分基本上是基于原有电路之上的,我并没有参与过多的设计和改进。因此在本论文中不再涉及此部分设计思路。3USB的基本原理3.1USB协议概述USB是英文UniversalSerialBus的简称。它以其易用性、稳定性、兼容性、扩展性、完备性、网络性和低功耗等优点得到了迅速发展和广泛的应用。学习USB的相关知识是进行USB项目开发的基础。USB系统均有主机和从机两个部分,要注意的是由于USB系统是被动通信系统,从机只能被动的执行主机的命令。主机理论上可以是任何带有CPU的控制器,目前由于PC的强大的处理能力和存储空间,被广泛的应用为主机。USB从机一般就是指USB设备,可以实现一定的功能。这篇认识报告主要整理了三方面内容。第一部分是整理了USB的通信协议,第二部分主要整理了USB项目开发的步骤,第三部分主要介绍了USB接口芯片CH372的功能和接口电路,普通的USB通信的实现。整理的资料对初学USB有一定的参考意义。3.2USB的主要优点USB有自供电(Self-Powered)和总线供电(Bus-Powered)两种供电模式。如果3ms内没有总线操作,设备就自动挂起,降低功耗。能够实现即插即用(PnP,PlayandPlug)。在USB的电气结构上能够判断设备的接入和拔出。3.3USB系统组成USB整体通信模型:也就是USB的星形拓扑结构,以USB主机为核心,建立USB主机与USB设备之间的数据通信,通过USBHub为节点连接主机与设备。USB数据通信协议:以差模串行信号为载体传送二进制代码来传输信号;数据包作为最基本的完整信息单元,包含了一系列数据信息。数据包也可以包括很多称为“域”的层次;以包为基础,构成USB的四种数据传输类型,进而组成不同的传输类型,传输各种类型的数据,实现USB的各种功能。软硬件架构:包括主机,HUB与设备架构;主机与设备通信的流程、步骤;软硬件设计方法等。这是USB系统开发工程师最终的目的,也是学习和掌握USB技术的目的。3.4硬件结构USB采用四线电缆来传输信号与电源如图2.3所示USB电缆定义其中D+和D-是一对差模的信号线使用3.3V的电平而VBus和GND则提供了5V的电源而USB正是在电缆和连接点的设计上做了处理才使得热插拔产生的强电流可以被安全地吸收。主机或Hub的下行端口图左的D+与D-都用15K电阻接地使得在没有设备插入的时候D+与D-上的电平始终为低,全速设备的上行端口的D+通过1.5K电阻接到3.3V而低速设备的上行端口的D-通过1.5K电阻也接到3.3V,使得在设备插入主机或Hub的时候D+或D-上会产生一个上升沿,主机根据那条线上的电平变化得知接入的设备速度。USB设备连接示意图3.5通信协议 “包”是USB最基本的数据单元,分为令牌包、数据包和握手包。包又是由“域”组成,同步序列域、包标识域、地址域、端点域、帧号域、数据域和CRC校验域。 以包为基础,USB定义了4种数据的传输类型:控制传输、中断传输、批量传输和同步传输。每一种类型都由一定的包按照某种特定的格式组成。 按照协议规定:USB总线上首先发送LSB,然后发送临近的下一位。最后发送MSB。3.5.1域同步序列域(SynchronizationSequence,SYNC)用于时钟同步,代表一个包的起始。8位固定为000001;包标识域(PacketIdentifierField,PID)标明包的类型和格式,作为包的错误检测手段的一种。8位,4位标识符和紧跟的4位标识符反码组成。可以知道标识码有16种。令牌包:0x01输出(OUT)启动一个方向为主机到设备的传输,并包含了设备地址和标号0x09输入(IN)启动一个方向为设备到主机的传输,并包含了设备地址和标号0x05帧起始(SOF)表示一个帧的开始,并且包含了相应的帧号0x0d设置(SETUP)启动一个控制传输,用于主机对设备的初始化数据包:0x03偶数据包(DATA0),0x0b奇数据包(DATA1)握手包:0x02确认接收到无误的数据包(ACK)0x0a无效,接收(发送)端正在忙而无法接收(发送)信息0x0e错误,端点被禁止或不支持控制管道请求特殊包0x0C前导,用于启动下行端口的低速设备的数据传输地址域(AddressField,ADDR)存放设备在主机上的地址。7位,地址0000000被命名为零地址,是任何一个设备第一次连接到主机时,在被主机配置、枚举前的默认地址,由此可知USB主机只能接127个设备。端点域(EndpointField,ENDP)4位,可知一个USB设备理论上有的端点数量最大为16个。但USB协议规定,低速设备只能定义两个端点。帧号域(FrameField,FRAM)11位,每一个帧都有一个特定的帧号,帧号域最大容量0x800,,只能在起始包中传递,对于同步传输有重要意义。数据域(DataField,DATA)长度为0~1023字节,在不同的传输类型中,数据域的长度各不相同,但必须为整数个字节的长度。循环冗余校验域(CyclicRedundancyChecks,CRC)对令牌包和数据包(对于包的分类请看下面)中非PID域进行校验的一种方法,令牌包采用CRC5,数据包采用CRC16。3.5.2包令牌包(TokenPacket)分为输入包IN,输出包OUT,设备包SETUP和帧起始包SOF。输入包、输出包和设置包的格式都是一样的:SYNC+PID+ADDR+ENDP+CRC5(五位的校验码)帧起始包的格式:SYNC+PID+11位FRAM+CRC5(五位的校验码)数据包(DataPacket)分为DATA0包和DATA1包,当USB发送数据的时候,当一次发送的数据长度大于相应端点的容量时,就需要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即如果第一个数据包是DATA0,那第二个数据包就是DATA1。但也有例外情况,在同步传输中(四类传输类型中之一),所有的数据包都是为DATA0,格式如下:SYNC+PID+0~1023字节+CRC16握手包(HandshakePacket)结构最为简单的包,分为三种类型:确认包ACK,无效包NAK和错误包STALL。格式如下:SYNC+PID3.5.3数据传输类型中断传输(InterruptTransfer)由OUT事务和IN事务构成,用于键盘、鼠标等HID设备的数据传输中。该传输不包括SETUP事务。批量传输(BulkTransfer)由OUT事务和IN事务构成,用于大容量数据传输,没有固定的传输速率,也不占用带宽,当总线忙时,USB会优先进行其他类型的数据传输,而暂时停止批量转输。同步传输(IsochronousTransfer,ISO)由OUT事务和IN事务构成,有两个特殊地方,第一,在同步传输的IN和OUT事务中是没有返回包阶段的;第二,在数据包阶段所有的数据包都为DATA0控制传输(ControlTransfer)最重要的也是最复杂的传输,控制传输由三个阶段构成(初始设置阶段、可选数据阶段、状态信息步骤),每一个阶段可以看成一个的传输,也就是说控制传输其实是由三个传输构成的,用来于USB设备初次加接到主机之后,主机通过控制传输来交换信息,设备地址和读取设备的描述符,使得主机识别设备,并安装相应的驱动程序,这是每一个USB开发者都要关心的问题。控制传输在所有的USB设备中都需要使用,因为主机对USB设备的配置命令都需要通过控制传输来发送而设备的描述信息也需要通过控制传输传递给主机至于同步传输适用于实时性要求较高而准确性要求较低的场合,比如音频或视频设备要求语音或图象不能有明显的滞后而如果传输的某些字节出错耳和人眼也无法察觉,就使用同步传输来传输音频和视频。数据流中断传输和批量传输都属于异步传输方式,它们的主要区别在于传输数据的速度不一样一般来说批量传输比中断传输传输数据要快得多。3.5.4USB设备类 USB对一些具有相似特点并提供相似功能的USB设备进行抽象,定义它们所特有的属性和使用方法,这些被称为设备类。设备类是对USB各种设备进行分类的方法,使USB总线能够有效地控制和设备管理各种设备,也使得各种设备的开发变得规范、简便。各类USB设备都有自己的USB设备类协议。目前有18个USB设备类。设备驱动程序通常由操作系统提供,开发人员可以直接使用,不用自己编写。所有设备类都必须支持标准USB描述符和设备请求。

4USB接口芯片4.1接口芯片的选择Cypress公司是生产USB接口芯片的专业厂家,它拥有很多种类USB芯片,包括全速,高速,低速,无线USB,OTG等。由于这类芯片开发需要较昂贵的开发设备,资料比较有限,大部分芯片带有CPU,应用不灵活。因为USB接口芯片功能的相似性,我项目中选择了相对比较简单和基础的CH372芯片。CH372芯片是一款由南京沁恒出品的国产芯片,但在已知的USB设备中也有着一定的应用。4.2CH372介绍CH372是一个USB总线的通用设备接口芯片,是CH371的升级产品,是CH375芯片的功能简化版。在本地端,CH372具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上;在计算机系统中,CH372的配套软件提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写文件。CH372内置了USB通讯中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。在内置固件模式下,CH372自动处理默认端点0的所有事务,本地端单片机只要负责数据交换,所以单片机程序非常简洁。在外置固件模式下,由外部单片机根据需要自行处理各种USB请求,从而可以实现符合各种USB类规范的设备。CH372的引脚图如下,采用超小型20引脚贴片封装。CH372引脚定义20个引脚功能如下:引脚号引脚名称类型引脚说明20VCC电源正电源输入端,需要外接0.1uF电源退耦电容18GND电源公共接地端,需要连接USB总线的地线5V3电源在3.3V电源电压时连接VCC输入外部电源,在5V电源电压时外接容量为0.01uF退耦电容8XI输入晶体振荡的输入端,需要外接晶体及振荡电容9XO输出晶体振荡的反相输出端,需要外接晶体及振荡电容6UD+双向三态USB总线的D+数据线,内置可控的上拉电阻7UD-双向三态USB总线的D-数据线17~10D7~D0双向三态8位双向数据总线,内置上拉电阻3RD#输入读选通输入,低电平有效,内置上拉电阻2WR#输入写选通输入,低电平有效,内置上拉电阻19CS#输入片选控制输入,低电平有效,内置上拉电阻1INT#输出中断请求输出,低电平有效4A0输入地址线输入,区分命令口与数据口,内置上拉电阻,当A0=1时可以写命令,当A0=0时可以读写数据CH372引脚定义4.3CH372硬件电路CH372芯片正常工作时需要外部为其提供12MHz的时钟信号。一般情况下,时钟信号内置的反相器通过晶体稳频振荡产生。外围电路只需要在XI和XO引脚之间连接一个标称频率为12MHz的晶体,并且分别为XI和XO引脚对地连接一个高频振荡电容。如果从外部直接输入12MHz时钟信号,那么应该从XI引脚输入,而XO引脚悬空。通用的被动并行接口与控制器进行数据读写。8位双向数据总线D7~D0、读选通输入引脚RD#、写选通输入引脚WR#、片选输入引脚CS#、中断输出引脚INT#以及地址输入引脚A0。通过被动并行接口,CH372芯片可以很方便地挂接到各种8位单片机、DSP、MCU的系统总线上,并且可以与多个外围器件共存。 CH372芯片支持5V电源电压或者3.3V电源电压。当使用5V工作电压时,CH372芯片的VCC引脚输入外部5V电源,并且V3引脚应该外接容量为0.01uF左右的电源退耦电容。当使用3.3V工作电压时,CH372芯片的V3引脚应该与VCC引脚相连接,同时输入外部的3.3V电源,并且与CH372芯片相连接的其它电路的工作电压不能超过3.3V。5单片机及系统实现5.1单片机的选择 由于CH372芯片本身不带CPU,因此我们需要另外选择一块主控芯片来实现对CH372芯片的控制从而实现USB传输。现在主流的MCU都能实现对CH372的控制,我经过综合考虑之后最终选择了MicroChip的PIC16F690单片机,因为该芯片具备PIC单片机运行速度快、功耗低、驱动能力强、外接电路简洁、开发方便等优势,且价格适中,具备这个项目必须的AD转换和电平变换中断功能。其引脚数量少,体积小能够最大限度的减小产品的体积。5.2PIC实现CH372控制5.2.1硬件部分设计由于PIC16F690单片机只支持被动PSP功能,故采用了非总线的方式与CH372芯片进行接口通讯,单片机通过普通I/O端口模拟并口时序操作CH372芯片。外围电路设计如图所示:CH372外围电路原理图PIC16F690外围电路原理图如图所示,PIC16F690利用RA0和RA1分别模拟WR和RD端口功能,RB6模拟A0端口。通过程序产生符合CH372要求的读写时序,以控制USB正常传输。外部中断INT与CH372的中断引脚相连,以此来响应CH372的USB中断,以便处理。5.2.2软件部分设计 基于硬件设计,PIC16F690的固件中USB通讯部分的程序设计是通过程序模拟时序来完成的。CH372芯片并口时序根据CH372芯片并口操作时序图,我以PICC语言子函数的形式来进行读写操作。部分读写函数如下:对CH372芯片写命令操作时序C语言实现方式如下:voidCH375_WR_CMD(ucharcmd){A0=1;//选择命令地址口RD=1;//读选通输入关闭WR=0;//写选通输入开启Data_Bus=cmd;//单片机将数据放入输出缓冲区Data_Dir=OUT;//单片机端口切换成输出状态,将输出缓冲区中的数据送到端口上DelayNOP(0);//delay14usWR=1;//写选通输入关闭A0=0;//选择数据地址口Data_Dir=IN;//单片机端口切换成输入状态}对CH372芯片写数据操作时序C语言实现方式如下:voidCH375_WR_DAT(uchardat){A0=1;//选择数据地址口RD=1;//读选通输入关闭WR=0;//写选通输入开启Data_Bus=dat;//单片机将数据放入输出缓冲区Data_Dir=OUT;//单片机端口切换成输出状态,将输出缓冲区中的数据送到端口上DelayNOP(0);//delay14usWR=1;//写选通输入关闭Data_Dir=IN;//单片机端口切换成输入状态}对CH372芯片读数据操作时序C语言实现方式如下:ucharCH375_RD_DAT(void){ucharCH375_DAT_PORT;//定义一个无符号字节变量WR=1;//写选通输入关闭RD=0;//读选通输入开启Data_Dir=IN;//单片机端口切换成输入状态DelayNOP(0);//delay14usCH375_DAT_PORT=Data_Bus;//读取单片机端口数据RD=1;//读选通输入关闭return(CH375_DAT_PORT);//返回单片机端口数据}5.3综合功能实现PIC16F690除了要处理USB通讯以外,还需要完成传感器信号的采集和转换等。由于这一部分不是本论文讨论的重点,这里以温度传感器为例。简单介绍基本的软硬件设计思路。热敏电阻采集原理图通过不同的传感器和测量电路得到物理量的值(一般为模拟量),通过PIC的10位AD转换后存储并在寄存器中。当有CH372产生的中断要求得到数据则将数据通过CH372传输给PC。整体基本流程图如下(图中主循环省去):程序结构流程框图

6PC端软件的实现6.1USB设备驱动 为了使自定义的USB设备能够被PC操作系统识别并枚举,PC端必须安装设备驱动。通常我们需要自己编写与自定义设备相适应的驱动程序,但这涉及到了操作系统认识和设备驱动的编写,对我们专业来说是相对比较陌生的知识。好在CH372提供了一个可以直接用的设备驱动程序,只要进行安装就可以用来驱动CH372设备。6.2CH372的动态链接库 有了驱动程序的支持之后,我们必须能够在应用软件中操作CH372。CH372为我们提供了基于它自带的驱动的一个DLL(动态链接库)文件。通过这个库文件我们能够轻松的操作CH372实现USB功能。使用时只要将CH375DLL.h(CH372同样可以使用)添加到工程当中,在需要用到的CPP文件中包含后即可使用。下面例举了一些比较常用的函数和用法:HANDLE WINAPI CH375OpenDevice(ULONGiIndex);用来打开CH372设备,iIndex指定CH375设备序号,0对应第一个设备,设备打开后才能对其进行读写操作;―――――――――VOID WINAPI CH375CloseDevice(ULONGiIndex);关闭CH375设备,结束对设备操作后进行关闭操作;―――――――――BOOL WINAPI CH375ReadData(ULONGiIndex,PVOIDoBuffer,PULONGioLength);读取数据块操作;―――――――――BOOL WINAPI CH375WriteData(ULONGiIndex,PVOIDiBuffer,PULONGioLength);写出数据块操作;―――――――――BOOL WINAPI CH375SetIntRoutine(ULONGiIndex, mPCH375_INT_ROUTINEiIntRoutine);设定中断服务程序,指定中断服务程序,为NULL则取消中断服务,否则在中断时调用该程序;―――――――――BOOL WINAPI CH375ReadInter(ULONGiIndex, PVOIDoBuffer,PULONGioLength);读取中断数据;在熟练掌握上述函数的用法和功能后就可以在编程环境中轻松操作CH372的传输。CH372程序上可以实现批量传输和中断传输两种类型。 因为CH372的驱动程序已经处理的底层的协议,在应用层我们只需要通过建立回调函数来实现即可,基本流程如下:CH372实现中断传输的程序流程批量传输可以快速传输大批量数据,在USB传输中是比较常用的一种传输方式。基本的批量传输读写操作流程如下:CH372实现BULK(批量)传输的程序流程6.3应用层协议 PC端软件编程环境选用MicrosoftVisualC++6.0,在该环境下实现API函数的调用即可以实现USB传输。在此基础上为了完成软件功能的设计,PC机和单片机之间必须定义一套应用层协议才能完成单片机和PC之间的真正通信。协议的制定时实现软件功能的基础,我进行了多次修改和完善,最终确定了一套仅仅应用于该系统的自定义应用层协议。 首先,由于传感器类型多样,为了能够让PC根据不同的传感器进行不同处理,我对传感器进行了编码:编码英文名称中文名称0x01Temperaturesensor温度传感器0x02Conductivitysensor电导率传感器0x03pHsensorPH传感器0x04Opticaldensitysensor光电传感器0x05Gasvolumesensor气体体积传感器0x06Optoelectricsensor通光率传感器0x07Frequencyrotationsensor转速传感器0x08Anglerotationsensor角度传感器0x09Pressuresensor压力传感器0x0AAirhumiditysensor空气湿度传感器0x0BMagnetfieldsensor磁场传感器0x0CVoltagemeasurement电压计传感器代码编码有了如上的编码,PC端可以通过询问传感器代码得到传感器类型,针对不同的传感器采用不同的USB传输方式和数据处理方法。 针对具体的传感器,我又制定了各自的传输协议,以温度传感器为例:主机功能代码数据值备注查询传感器类型01查询当前值02查询批量数据03在批量情况下有效批量开始07批量结束08设备返回传感器类型01TemperaturesensorCODE返回当前值02uc_AD_H,uc_AD_Luc_AD_H:AD转换值高8位uc_AD_L:AD转换值低8位当前热敏电阻值为:R=47*(256*uc_AD_H+uc_AD_L)/(1023-(256*uc_AD_H+uc_AD_L));返回批量数据03uc_AD_Hi,uc_AD_Li,uc_T_Hi,uc_T_Li,uc_AD_Hi:第i个AD转换值高8位uc_AD_Li:第i个AD转换值低8位uc_T_Hi:第i个时基高8位uc_T_Li:第i个时基低8位第i个时基为:T=(uc_T_Hi*256+uc_T_Li)*100ms批量开始070x00成功0xff失败批量结束080x00成功0xff失败应用层协议(以温度传感器为例)如上协议定义,由于PC端应用程序必须完成瞬时数值显示,也要完成一段时间内的数值变化,所以定义了两类传输,一类是当前值查询,单片机只需发送当前物理量的值。一类是批量数据查询。当开始批量后,单片机要存储一定时间内的数据,当PC端需要批量数据时将一段时间内的数据发送给PC,由PC端来处理。6.4软件功能的实现利用VC6.0强大的MFC应用程序框架可以满足本次软件的设计要求。我建立了一个基于FormView的单文档应用程序。在此基础上进行了开发,建立了若干CDialogBar类和CHtmlView类,设计完成了软件的各项功能。程序主界面:软件主界面6.4.1传感器演示功能 传感器演示功能是用于用户测试传感器状况,演示传感器物理量当前值功能的界面。我采用软件定时论询的方式,定时请求单片机传送传感器当前值,通过对当前值的计算和显示,完成这项功能,该功能程序界面如下:传感器演示功能界面6.4.2实验模拟功能 模拟实验功能是用于用户基于这套传感器产品进行实验演示的。这个功能可以让用户将物理量的变化以图形地形式直观地反映在计算机上,并且记录地数据还必须能够用于精确计算。 我在这个功能的软件设计上,采用传感器批量传输的方法实现。当用户开始测量时启用单片机批量,应用程序定时询问批量数据,根据批量数据进行一段时间内的绘图过程。该功能程序界面如下:实验模拟功能界面7总结在工程技术实习期间,我基本了解了USB的基本原理和通讯协议,认识了USB主从机的系统组成。在毕业设计期间又有机会参与实际的USB项目的开发过程,加深了我对USB原理和实现方法的进一步理解,熟悉了USB接口的软硬件开发流程。这是一个进步的过程,更是一个学习的过程。在实验室同学的大力支持,经过自己的不断努力和导师的悉心指点,我最终完成了这套传感器产品USB部分的软件硬件部分的设计,编写了PC端应用程序,经过初步调试,基本实现了各项功能。这些进一步提高了我发现问题、解决问题的能力。虽然毕业设计结束了,但在毕业设计过程中遇到的困难让我感触很深:首先,模拟电路基础不扎实。原有的传感器产品很大程度上是模拟电路的知识,运算方大电路更是常见,由于模拟电路知识不扎实,在分析传感器测量电路的过程中遇到了极大的阻碍。最终,在实验室同学和导师的帮助下,才得以完成模拟部分电路的分析和设计。这点让我更加感觉到学好专业基础课的重要性。其次,英语水平不足。在USB的认识过程当中,要翻阅大量的USB技术文档,这些文档都是英文原版,虽然有一小部分网络上有国内的热心网友自发的翻译,但是难免存在纰漏和错误。所以,英语学习对专业研究非常重要。因此,我觉得这次毕业设计对我来说是具有十分重要的意义,将是我走上社会岗位前的一次大锻炼。我一定会将毕业设计中学习到的知识和方法运用到以后的研究和生活当中去,因为我相信它将受用一生。致谢深深感谢我的指导老师项小东老师,是他指引了我学好专业的方法,培养了我对专业的兴趣。不管是在工程实习期间还是后来的毕业设计期间,他都给了我很大的支持和鼓励,让我更加努力的学习专业知识。在平时生活中他更是时刻向我们灌输一种做人哲学的思想,让我们能够有更完善的人格。这一切都是我受用终生的。还有感谢一起在615实验室度过大四生活的同学们。他们的勤奋好学,无私奉献都让我非常感动。在我的毕业设计过程中,同学们经常和我一起论证解决方案,帮助我解决了很多遇到的困难,让我能够顺利的完成毕业设计。在此,同样要感谢各科的老师在四年来的学习生活中给予我的精心指导、照顾和鼓励。衷心感谢所有那些给过我帮助的老师、同学和朋友。参考文献:王成儒李英伟.USB2.0原理与工程开发[M].国防工业出版社,2004年.钱峰.EZ-USBFX2单片机原理、编程及应用[M].北京航空航天大学出版社,2006年.李学海.PIC单片机实用教程基础篇[M].北京航空航天大学出版社,2002年8月.陈国先.PIC单片机原理与接口技术[M].电子工业出版社,2004年8月.康华光.电子技术基础(模拟部分)[M].高等教育出版社,1999年3月.朱战立.面向对象程序设计与C++语言[M].西安电子科技大学出版社,2002年4月.孙鑫余安萍.VC++深入详解[M],电子工业出版社,2006年06月.王云飞.USB系统研究[D].清华大学,2001年.USB-IF.UniversalSerialBusSpecification[PDF].,April27,2000MicroChip.PIC16F631/677/685/687/689/690DataSheet[PDF].,2007RFID应用系统软件摘要:近年来,随着射频识别技术(RFID)的进步和成熟,这项技术的应用领域日益扩大,现已涉及到人们日常生活的各个方面,并将成为未来信息社会建设的一项基础技术。RFID在城市交通的应用也是一个重要的方面。城市公共交通在我国城市交通中占有重要的地位,是同我国城市居民生产、生活等活动密切相关的系统.如今在城市交通中,很多城市已经用IC卡代替了原有的纸制月票,杜绝了公交月票的假冒行为,缓解了高峰客流,提高了服务水平,为公司运营提供了科学的管理手段,社会反映良好。另一方面,通过公交IC卡可使城市公共交通实现智能化。城市公共交通实行智能化能够把握客流数据的变化规律,随着公交采用IC卡进行公交收费的普及,使得我们有了新的客流数据采集方式。本次探讨、设计的公交IC卡充值系统将具有售卡、充值等一系列功能。以单片机为控制器的IC卡读写器可以实现制卡、售卡、自动收费等功能,具有安全、实用、方便、快捷、可靠性高的特点,解决了城市公共交通服务行业既频繁又琐碎的收费管理问题。关键词:RFID;城市公交;读卡器Abstract:Inrecentyears,withtheprogressandmatureoftheradiofrequencyidentification(RFID)Technology,theapplicationofthistechnologyinthefieldareexpanding.Peoplehavebeeninvolvedinallaspectsofdailylife,andwillbecomeatechnicalbasisofthefuturebuildingoftheinformationsociety.Theapplicationintheurbanpublictransportisalsooneoftheimportantaspects.UrbanpublictransportincitytrafficoccupyanimportantpositionofChina'surbanresidentsisthesameproduction,lifeactivitiescloselyrelatedtothesystem.Nowinurbantraffic,ManycitiesalreadyuseICcardsinsteadoftheoriginalpaperpass,stopthetransitofcounterfeittickets,easingthepeakpassengerflow,improvethelevelofservice,theoperationofthecompanyandprovidesascientificmeansofmanagement,reflectthesocialgood.Ontheotherhand,urbanpublictransportcanintelligentbybusICcard.Theintelligenturbanpublictransportimplementcangraspthelawofthechangesdataflow.WiththeuniversaluseintheurbanpublictransportICcardssystem,wehaveanewacquisitionmodeofthedataflow.ThisdesignofpublictransportICcardrechargingsystemhasaseriesfunction.MicroprocessorcontrollerICCardReadercardsystemcanbeachieved,automaticcharges,andotherfunctions,issafe,practicalandconvenient,fast,highreliability.Itsolvestheproblemofthefrequentlytrivialurbanpublictransportchargesmanagement.Keywords:RFID;Urbanpublictransport;reader1绪论近年来,随着射频识别技术的进步和成熟,这项技术的应用领域日益扩大,现已涉及到人们日常生活的各个方面,并将成为未来信息社会建设的一项基础技术。RFID典型应用包括:在物流领域用于仓库管理、生产线自动化、日用品销售;在交通运输领域用于集装箱与包裹管理、高速公路收费与停车收费;在农牧渔业用于羊群、鱼类、水果等的管理以及宠物、野生动物跟踪;在医疗行业用于药品生产、病人看护、医疗垃圾跟踪;在制造业用于零部件与库存的可视化管理;RFID还可以应用于图书与文档管理、门禁管理、定位与物体跟踪、环境感知和支票防伪等多种应用领域。城市公共交通在我国城市交通中占有重要的地位,是同我国城市居民生产、生活等活动密切相关的系统.如今在城市交通中,很多城市已经用IC卡代替了原有的纸制月票,杜绝了公交月票的假冒行为,缓解了高峰客流,提高了服务水平,为公司运营提供了科学的管理手段,社会反映良好。以单片机为控制器的IC卡读写器可以实现制卡、售卡、自动收费等功能,具有安全、实用、方便、快捷、可靠性高的特点,解决了城市公共交通服务行业既频繁又琐碎的收费管理问题。另一方面,通过公交IC卡使城市公共交通实现智能化。城市公共交通实行智能化能够把握客流数据的变化规律,随着公交采用IC卡进行公交收费的普及,使得我们有了新的客流数据采集方式。与人工调查相比,利用IC卡收费系统进行客流数据采集的投入小得多,几乎不需要额外成本,并且可以提供大量详细、准确的动态数据,对数据进行进一步挖掘也更容易。因此公交IC卡系统对城市公交以及公交的智能化调度、线路的开辟、优化、站点的设置等都具有极其重要的意义。基于上述原因,设计一款以射频识别为核心技术的公交收费系统将给城市公交带来长期的效益。本次探讨、设计的应用系统将具有售卡、充值等一系列功能。2系统总体设计介绍2.1系统功能介绍将RFID技术应用到公交充值系统中,实现公交充值系统的以下功能。制卡制卡功能专门用于对卡片进行初始化,卡片在正式投入使用前必须经过初始化,初始化的工作就是对卡片内的空间按照规定进行化分,然后将密钥、存取权限写入卡内。[1]售卡充值乘客可到车站的售卡充值系统中办理购卡、充值手续。该系统现场为用户的IC卡写入充值金额,并将用户信息输入管理系统数据库中保存。退卡、挂失、解挂退卡:删除数据库中该用户的记录,收回旧卡。旧卡经过数据清理可实现再利用。挂失:将原卡进行备注,列入黑名单。用户可重新办理新卡,并将旧卡中的余额写入新卡中,减少用户损失。解挂:可重新使卡有效。信息管理通过上位机软件可查看数据库中的信息,获息用户相关信息。2.2RFID简介2.2.1RFID系统组成最基本的RFID系统由三部分组成:标签(Tag,即非接触式IC卡):由耦合元件及芯片组成,标签含有内置天线,用于和射频天线间进行通信。读卡器:读取(在读写卡中还可以写入)标签信息的设备。天线:在标签和读取器间传递射频信号。[2]2.2.2RFID通讯原理系统的基本工作流程是:读卡器通过发射天线发送一定频率的射频信号,卡片内有一个LC串联谐振电路,其频率与读卡器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压。因此当射频卡进入发射天线工作区域时产生感应电流,射频卡获得能量被激活;射频卡将自身编码等信息通过卡内置发送天线发送出去;系统接收天线接收到从射频卡发送来的载波信号,经天线调节器传送到读写器,读卡器对接收的信号进行解调和解码然后送到后台主系统进行相关处理;主系统根据逻辑运算判断该卡的合法性,针对不同的设定做出相应的处理和控制,发出指令信号控制执行机构动作。2.2.3非接触式IC卡的优点与接触式IC卡相比较,非接触式IC卡具有以下优点:可靠性高非接触式IC卡与读写器之间无机械接触,避免了由于接触读写而产生的各种故障。例如:

由于粗暴插卡,非卡外物插入,灰尘或油污导致接触不良造成的故障。此外,非接触式卡表面无裸露芯片,无须担心芯片脱落,静电击穿,弯曲损坏等问题,既便于卡片印刷,又提高了卡片的使用可靠性。操作方便由于非接触通讯,读写器在10CM范围内就可以对卡片操作,所以不必插拨卡,非常方便用户使用。非接触式卡使用时没有方向性,卡片可以在任意方向掠过读写器表面,既可完成操作,这大大提高了每次使用的速度。防冲突非接触式卡中有快速防冲突机制,能防止卡片之间出现数据干扰,因此,读写器可以"同时"处理多张非接触式IC卡。这提高了应用的并行性,无形中提高系统工作速度。可以适合于多种应用非接触式卡的序列号是唯一的,制造厂家在产品出厂前已将此序列号固化,不可再更改。非接触式卡与读写器之间采用双向验证机制,即读写器验证IC卡的合法性,同时IC卡也验证读写器的合法性。

非接触式卡在处理前要与读写器之间进行三次相互认证,而且在通讯过程中所有的数据都加密。此外,卡中各个扇区都有自己的操作密码和访问条件。

接触式卡的存储器结构特点使它一卡多用,能运用于不同系统,用户可根据不同的应用设定不同的密码和访问条件。加密性能好非接触式IC卡由IC芯片,感应天线组成,并完全密封在一个标准PVC卡片中,无外露部分。非接触式IC卡的读写过程,通常由非接触型IC卡与读写器之间通过无线电波来完成读写操作。

非接触型IC卡本身是无源体,当读写器对卡进行读写操作时,读写器发出的信号由两部分叠加组成:一部分是电源信号,该信号由卡接收后,与其本身的L/C产生谐振,产生一个瞬间能量来供给芯片工作。另一部分则是结合数据信号,指挥芯片完成数据、修改、存储等,并返回给读写器。由非接触式IC卡所形成的读写系统,无论是硬件结构,还是操作过程都得到了很大的简化,同时借助于先进的管理软件,可脱机的操作方式,都使数据读写过程更为简单。

2.2.4射频卡的标准及分类目前生产RFID产品的很多公司都采用自己的标准,国际上还没有统一的标准。目前,可供射频卡使用的几种标准有ISO10536、ISO14443、ISO15693和ISO18OOO。应用最多的是ISO14443和ISO15693,这两个标准都由物理特性、射频功率和信号接口、初始化和反碰撞以及传输协议四部分组成。按照不同得方式,射频卡有以下几种分类:按供电方式分为有源卡和无源卡。有源是指卡内有电池提供电源,其作用距离较远,但寿命有限、体积较大、成本高,且不适合在恶劣环境下工作;无源卡内无电池,它利用波束供电技术将接收到的射频能量转化为直流电源为卡内电路供电,其作用距离相对有源卡短,但寿命长且对工作环境要求不高。按载波频率分为低频射频卡、中频射频卡和高频射频卡。低频系统主要用于短距离、低成本的应用中,如多数的门禁控制、校园卡、动物监管、货物跟踪等。中频系统用于门禁控制和需传送大量数据的应用系统;高频系统应用于需要较长的读写距离和高读写速度的场合,其天线波束方向较窄且价格较高,在火车监控、高速公路收费等系统中应用。按调制方式的不同可分为主动式和被动式。主动式射频卡用自身的射频能量主动地发送数据给读写器;被动式射频卡使用调制散射方式发射数据,该类技术适合用在门禁或交通应用中,因为读卡器可以确保只激活一定范围之内的射频卡。按作用距离可分为密耦合卡(作用距离小于1厘米)、近耦合卡(作用距离小于15厘米)、疏耦合卡(作用距离约1米)和远距离卡(作用距离从1米到10米,甚至更远)。按芯片分为只读卡、读写卡和CPU卡。[2]2.2.5RFID技术发展的瓶颈隐私权问题失业问题国际标准的制定与推行成本的降低技术的突破2.3系统硬件结构系统的上位机主要负责传输读写命令给下位机,进行用户数据信息的统一管理,并实现良好的人机交互。系统的下位机主要负责和读卡器之间进行数据传输,再通过读卡器和IC卡进行数据交换,并将响应数据传回给上位机。图1系统硬件结构图图1系统硬件结构图图1为系统的硬件结构图。系统的IC卡采用Mifare标准IC卡MF1ICS50,读卡器采用周立功内置PHILIPS高集成ISO14443A读卡芯片MFRC500的ZLG500AT读卡模块。系统的MCU采用MICROCHIP公司的PIC系列单片机,采用内部的USART模块与读卡器进行通信,通过RC500芯片与IC卡进行无线数据收发,并通过RS485与计算机相连接。另外,下位机还带有显示功能。上位机软件通过ACCESS数据库对用户数据信息进行管理。2.4上位机控制界面设计采用VisualC++编写上位机软件程序,运用MFC中的CRecordSet类与Access数据库相连接,行进数据交换。界面采用树和列表的视图方式,实现良好的人机交互功能。上位机与下位机的通信采用485通信,运用VC中的MSCOMM控件来控制计算机的串口数据的接收和发送。2.5下位机软件流程下位机的工作流程为:PIC单片机通过控制ZLG500AT读卡模块中的MFRC500读卡芯片,与Mifare标准IC卡进行数据通信,并通过RS485与计算机交换数据信息的。首先,单片机上电后对各模块进行初始化,然后接收上位机的指令,根据不同的指令,对卡实行不同的数据操作。下图为软件流程图:图2系统软件流程图图2系统软件流程图3PIC16F877单片机3.1PIC16F877系统硬件概况3.1.1内核及外围模块图3PIC图3PIC16F877内核与外围模块3.1.2内核结构的特点采用哈佛结构程序空间8K字节,共35条指令512字节RAM,使用寄存器文档的概念8层硬件堆栈指令采用流水线机制,指令顺序执行时只需一个指令周期,程序分支跳转需2个字节具有独立看门狗3.1.3存储器寻址方式数据寄存器寻址:直接寻址:由于在指令编码中只有最低7位数据代表了寻址操作数地址,而有512字节RAM,因此需要利用STATUS中的RP1:RP0来实现高2位的寻址,即划分BANK区。间接寻址:利用特殊寄存器FSR和STATUS的第7位IRP来表示9位地址,用INDF寄存器来实现间接寻址。即对INDF的任何操作,操作对象都被转到FSR+IRP构成的9位地址处的寄存器。程序存储器寻址:直接寻址:由于在指令编码中只有11位数据代表了跳转的目的地址,而程序空间有8K字节,因此需要利用PCLATH的3:4位来实现高2位的寻址,即分页的概念。当执行跳转指令时,会自动把两者结合送入PC中,实现程序的正确跳转。间接寻址:由PCLATH的低5位和PCL来表示13位地址。当指令的操作数为PCL时,那么当指令把结果写回PCL的同时,内核会自动把PCLATH的低5位同步写入PCH中,实现程序的正确跳转。[3]3.1.4中断机制PIC系列单片机只有一个中断入口(004H),所有的中断都通过该入口进入中断服务子程序,至于是哪一个中断源,只有在进入中断服务子程序后查询中断标志才能确认。该单片机没规定中断的优先级,也没有用于设定中断优先级的寄存器,中断的优先级是由于中断服务子程序中断查询中断标志的顺序确定的。CPU响应一个中断并进入中断服务程序后,全局中断允许位GIE被自动清零,CPU在此期间不响应其它中断,也不能形成中断嵌套。中断大致可以分为两类:一类是由中断控制器INTCON直接控制的中断,包括外部引脚中断INT的RB口电平变化中断以及定时器TMRO溢出中断,它们的中断允许位和中断标志都在INTCON寄存器中。引脚中断INT和定时器TMRO溢出中断与其它微处理器相同。RB口电平变化中断是PIC单片机特有的中断,当把RB口高4位I/O口线设置为输入时,只要这4位I/O口线上的电平发生变化就会引起中断;另一类是外围接口中断,包括定时器TMR1溢出中断、TMR溢出或匹配中断、同步串行口中断、异步串行口中断、并行从动口中断、A/D转换完成中断和CCP(Capture/Compare/PWM)中断等。这些中断的允许位分别在PIE1和PIE2寄存器,而中断标志则分别在PIR1和PIR2中。图4PIC图4PIC16F877中断逻辑图3.2USART通信模块通用同步异步接收发送模块(USART)是二线制串行通信接口,它可以被定义如下三种工作方式:全双工异步方式、半双工同步主控方式、半双工同步从动方式。USART功能模块含有两个8位可读/写的状态/控制寄存器,它们是发送状态/控制寄存器TXSTA和接收状态/控制寄存器RCSTA。USART带有一个8位波特率发生器BRG(BaudRatoGenerator),这个BRG支持USART的同步和异步工作方式。用SPBRG寄存器控制一个独立的8位定时器的周期。在异步方式下,发送状态/控制寄存器TXSTA的BRGH位也被用来控制波特率。在发送或接收数据时,通过查询发送/接收中断标志位即可判断是否发送完一个数据/接收到一个数据。发送/接收中断标地不需要也不用软件复位。在异步串行发送的过程中,只要TXREG寄存器为空,中断标志TXIF就置位。因此,TXIF为1并不是发送完毕的标志,但仍可以用TXIF标志来判断。因此当TXREG为空时,将数据送入后,数据会保留在TXREG寄存器中,直到前一个数据从发送移位寄存器中移出,即前一个数据发送完。图5USART发送模块图5USART发送模块图6USART接收模块图6USART接收模块本系统中利用USART模块的异步通信功能,通过MAX485芯片实现和上位机的通信。为了把RC6和RC7分别设置成串行通信接口的发送/时钟(TX/CK)线和接收/数据(TX/DT)线,必须首先把SPEN位(TCSTAT的RD7)和方向寄存器TRISC的D7:D6置1。3.3定时器3.3.1定时器0Timer0是一个8位定时器,只要程序在运行,TMR0的递增计数就不会停止,TMR0寄存器用来存放计时值。Timer0的时钟源选择是由0PTl0N_REG寄存器中的T0CS位来决定的,将此位设为0表示使用内部的时钟源,设为1则使用外部时钟。使用内部时钟时,定时器会每一个指令周期增量一次,也就是时钟频率为Fosc/4(在不使用顿分频器的情况下)。Timer0有一个预定标器(也叫预分频器),通过预分频器的使用,可以使得定时器可计算的时间范围增加不少。这个预分频器也可分配给WDT作为后分频器使用,至于预分频器是给WDT还是Timer0使用,则是由0PTION_REG寄存器中的PSA位来决定的。当PSA位为0时,表示作为Timer0的预分频器:当PSA位为1时,表示作为WDT的后分频器。这个预分频器的比例由OPTlON_REG寄存器中PS2、PSl与PS0三个标志位来设置。3.3.2定时器116位计数宽度。可工作在同步定时器方式,同步计数器方式,异步计数器方式。Timer1的外部时钟输入引脚有2个,分别是RC0/T10SO/T1CKI和RCl/T1OSI/CCP2引脚。在单片机内部,这2个引脚之间内置了一个振荡器电路。在进入休眠模式后,振荡器依然会继续输出,因此可以继续Timer1的累计动作。和CCP模块功能结合时,必须工作于同步模式。3.3.3定时器28位计数宽度。有一个前置预分频器和后置预分频器。Timer2另外一个特点就是带有一个PR2寄存器,称之为周期寄存器,这个寄存器可以被填入适当的值。当TMR2寄存器的值增量到与PB2寄存器的值相等时,便会产生Timer2的中断。可于CCP模块结合,产生PWM。4Mifare标准IC卡MF1ICS504.1Mifare标准IC卡MF1ICS50简介4.1.1主要指标容量为8K位EEPROM分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位每个扇区有独立的一组密码及访问控制每张卡有唯一序列号,为32位具有防冲突机制,支持多卡操作无电源,自带天线,内含加密控制逻辑和通讯逻辑电路数据保存期为10年,可改写10万次,读无限次工作频率:13.56MHZ通信速率:106KBPS[4]图7图7MF1ICS50示意图4.1.2结构组成RF接口:调制器解调器,整流器,时钟再生器,上电复位,电压调整器反冲突:在同一区域中的卡可以被顺序选中执行操作确认:确认过程确保只有通过每个段的两个密钥才能对这个段进行任何存储器操作控制和算术逻辑单元:值以特殊的冗余格式保存而且可以增加和减少EEPROM接口Crypto单元:Mifare经典系列经区域验证的CRYPTO1流密码确保数据交换的保密性EEPROM:有1K字节分成16个区每区又分成4段每一段中有16个字节每个区的最后一个段叫尾部它包括两个密钥和这个区中每一个段的访问条件。图8USART接收模块图8USART接收模块4.2EEPROM存储器4.2.1存储结构M1卡分为16个扇区,每个扇区4段(段0、段1、段2、段3),每段16字节。第0扇区的段0,它用于存放厂商代码,已经固化,不可更改。每个扇区的段0、段1、段2为数据段,可用于存贮数据。数据段可作两种应用:一般的数据保存,可以进行读、写操作;数据值,可以进行初始化值、加值、减值、读值操作。每个扇区的段3为控制块,包括了密码A、存取控制、密码B。图9卡捏存储结构图图9卡捏存储结构图4.2.2存储器访问每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。每个数据段和区尾的访问条件由3个位来定义它们以取反和不取反的形式保存在指定区的区尾中。存取控制为4个字节,共32位。扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:块0:C10C20C块1:C11C21C块2:C12C22C块3:C13C23C三个控制位以正和反两种形式存在于存取控制字节中。密钥和访问位的读写访问可分为从不、密钥A、密钥B或密钥A|B。详细的数据段及尾区的访问条件如下表所示。根据系统需要,各访问权限设定为:段3:011,段2-0:110。表1尾区的访问条件列表表1尾区的访问条件列表表2数据段的访问条件列表表2数据段的访问条件列表4.3流程示意图10图10IC卡工作流程图请求标准所有(request): 当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型;若没有则一直处于等待状态。反冲突环(Anticollision):反冲突环可以读出卡的序列号。如果在RWD的工作范围内有几张卡RWD,通过唯一的序列号来区别它们,而且每次选择其中一张卡进行下一步操作,没有被选中的卡会回到准备模式等待新的请求命令。选择卡(SelectTag):RWD使用选择卡命令选中其中一张卡进行确认和存储器相关操作。卡返回AnswerToSelect(ATS)码(=08h),RWD通过ATS可以确定被选中的卡的类型。3轮确认(3PassAuthentication):选中了一张卡之后,RWD指出了接着要访问的存储器位置,然后使用相应的密钥进行3轮确认,在成功确认后所有的存储器操作都是保密的。[4]存储器操作:确认之后可以执行以下的任何操作:读存储器段写存储器段减存储器段的内容并将结果保存在临时的内部数据寄存器中增加存储器段的内容并将结果保存在数据寄存器中恢复将存储器段的内容移到数据寄存器传送将临时内部数据寄存器的内容写到值存储器段中4.4保密性这个卡一个特殊的要点是保密,防止欺骗。需要通过3轮相互询问和响应确认(ISO/IECDIS9798-2),数据保密和报文确认检查防止系统受到任何干扰,RF信道的数据加密,有重放攻击保护,使购票应用更有吸引力。每个设备有唯一的序列号,且该序列号不可修改,保证了每张卡都是唯一的。每个区有两套独立的密钥,支持带密钥层次的多应用,在运输过程中访问EEPROM有传输密钥保护。4.5数据存储地址根据系统需要,将用户账号、卡类、剩余金额、车载机号及最后刷卡时间等数据存储到如下地址:变量长度地址账号3个字节30(0,1,2)卡类1个字节30(3)金额2个字节29(0,1)车载机号2个字节29(2,3)时间5个字节29(4年,5月,6日,7时,8分)表3系统数据存储地址表3系统数据存储地址5ZLG500A读卡模块5.1模块特性概述ZLG500AT读卡模块内置最新PHILIPS高集成ISO14443A读卡芯片MFRC500,能读写RC500内EEPROM。采用三线SPI接口(三线分别为片选SS时钟线SCLK和数据线SDATA),能与任何MCU接口。模块采用四层电路板设计,双面表贴,EMC性能优良。无源蜂鸣器信号输出口能用软件控制输出频率及持续时间。[5]下图为天线一体化的读卡模块:图11图11天线一体化模块5.2MFRC500芯片5.2.1概述MFRC500是应用于13.56MHz非接触式通信中高集成读卡IC系列中的一员。该读卡IC系列利用了先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。MFRC500支持ISO14443A所有的层。内部的发送器部分不需要增加有源电路就能够直接驱动近操作距离的天线可达100mm。接收器部分提供一个坚固而有效的解调和解码电路,用ISO14443A兼容的应答器信号。数字部分处理ISO14443A帧和错误检测(奇偶&CRC)。此外,它还支持快速CRYPTO1加密算法用于验证MIFARE系列产品。方便的并行接口可直接连接到任何8位微处理器,这样给读卡器/终端的设计提供了极大的灵活性。5.2.2内部结构图图12图12RC500内部结构图并行微控制器接口自动检测连接的8位并行接口的类型。它包含一个易用的双向FIFO缓冲区和一个可配置的中断输出。这样就为连接各种MCU提供了很大的灵活性。即使使用非常低成本的器件也能满足高速非接触式通信的要求。数据处理部分执行数据的并行-串行转换。它支持的帧包括CRC和奇偶校验。它以完全透明的模式进行操作,因而支持ISO14443A的所有层。状态和控制部分允许对器件进行配置以适应环境的影响并使性能调节到最佳状态。当与MIFAREStandard和MIFARE产品通信时,使用高速CRYPTO1流密码单元和一个可靠的非易失性密匙存储器。模拟电路包含了一个具有非常低阻抗桥驱动器输出的发送部分。这使得最大操作距离可达100mm。接收器可以检测到并解码非常弱的应答信号。由于采用了非常先进的技术,接收器已不再是限制操作距离的因素了。[6]5.3串行接口5.3.1接口原理图13图13ZLG500AT与PIC16F877的接口图示接口空闲时主机SS=1,SCLK=0,SDATA=0,从机SS=1,SCLK=1,SDATA=0。其中SS和DATA是双向的,而时钟线SCLK是单向的,即时钟只能由主控制器产生,该信号必须严格遵守时序规范,否则将出现通信错误,读卡模块必须释放该线。SS为数据发送使能,若一方有数据要发送给另一方,则该方控制SS线为低,并在发送结束后将该线置高,接收数据方不得控制该线。双方必须遵守通信协议,不得同时控制该线。SDATA为数据线,由数据发送端控制,数据接收端必须释放该线。该线在一次传输开始时还同时作为数据接收端的响应信号。5.3.2时序图图14图14ZLG500AT与PIC16F877的接口图示t1—数据接收器响应至MCU产生第一个SCLK上升沿的时间t2—两个字节传输之间,SCLK低电平的持续时间t3—传输最后一个字节的最后一位的SCLK信号的上升沿至SS上升沿的时间tH—SCLK信号的高电平持续时间tL—SCLK信号的低电平持续时间5.3.3数据读写写数据:除响应信号外,三根线上的信号全由MCU产生。MCU在SS线上产生一个下降沿。发出请求数据传输的信号,等待ZLG500响应后,本次数据传输开始,ZLG500将在SCLK为高时读取SDATA线上的数据。传输完毕后,MCU应在SS线上产生一个上升沿结束本次传输。传输过程中,必须严格遵守以下时间要求:t1>7us,t2>14us,tH>7us,tL>9us,t3=任意。读数据:响应信号、SCLK信号由MCU产生,SS信号和SDATA信号由ZLG500产生。ZLG500会在SS线上产生一个下降沿,发出请求数据传输的信号,等待MCU响应后,本次数据传输开始,MCU将在SCLK为高时读取SDATA线上的数据。传输完毕后,ZLG500将会在SS线上产生一个上升沿结束本次传输。传输过程中必须严格遵守以下时间要求:t1>14us,t2>16us,tH>6us,tL>6us,t3>9us。5.4数据传输协议5.4.1协议描述通信必须先由MCU发送命令和数据给ZLG500,ZLG500执行命令完毕后,将命令执行的状态和响应数据发回MCU。开始通信前,收

温馨提示

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

评论

0/150

提交评论