《基于ARM的嵌入式RFID读写器设计.docx》由会员分享,可在线阅读,更多相关《基于ARM的嵌入式RFID读写器设计.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于ARM的嵌入式RFID读写器设计引言RFID利用了电磁波空间耦合、传播进行通信,以达到自动识别被标识对象,获取对象信息的目的。同其他一些识别技术相比,射频识别技术具有高效快捷、非接触、无污染、识别率高等突出优点。识别过程无需人工干预,可在恶劣环境下工作,能够应用到很多行业。1.RIFD读写器的硬件总体设计图1读写器的硬件总体设计RFID系统主要由射频卡、读写器以及计算机系统组成。系统的工作原理如下:读写器通过天线发送出13.56MHz的射频信号,当射频卡进入读写器工作场时,天线产生感应电流,从而射频卡获得能量被激活并向读写器发送出自身编码等信息,读写器接收到来自射频卡的载波信号,对接收的信
2、号进行解调和解码后发送至PC机进行处理,PC机根据逻辑运算判断该射频卡的合法性,针对不同的设定做出相应的处理和控制,发出指令信号,射频卡的数据解调部分从接收到的射频脉冲中解调出数据并送到控制逻辑,控制逻辑接受指令完成存储、发送数据或其他操作。2.硬件选型在整个系统中,RFID收发模块的功能是当接收到来自射频卡的载波信号时,对该信号进行解调和解码,并且将信息进行编码和调制后发送到射频卡中,要实现上述功能就需要一款内部封装有发送调制器和接收调制器的射频芯片,选用了射频芯片S6700。S6700芯片的时序是通过控制产生的,因此选用了单片机P89C58,利用它的I/O口进行控制。因为系统中使用的射频卡
3、是疏耦合IC卡,所以它与S6700芯片之间的协议标准采用了ISO15693,C语言进行编程。3.RFID收发模块硬件电路设计RFID收发模块的主芯片是TI公司的射频芯片S6700,该芯片的通信接口主要使用三条线:SCLOCK、DIN和DOUT。除了通信线外,还有一条M_ERR线,用来表征通信是否正常;应用电路如图2所示:图2RFID收发模块硬件电路S6700的SCLOCK、DIN、DOUT分别由P89C58的P1.3、P1.5和P1.6进行控制,由于单片机P89C52应用比较广泛。R2为调制深度选择电阻,当R2为12欧姆时,调制深度为10%;当R2为18欧姆时,调制深度为20%。SCLOCK为
4、双向时钟线,分别由单片机P89C58和S6700芯片在不同的情况下进行控制:发送数据时由P89C58控制,接收数据时由S6700控制。在收发数据时,每个数据位在SCLOCK的上升沿被锁存,当SCLOCK为高时,数据位必须固定且保持不变,只有当SCLOCK为低时,传送的数据才能被改变;DIN为数据输入线,S6700芯片通过该线接收来自P89C58的命令和数据;DOUT为数据输出线,S6700芯片通过该线将回应数据发送给P89C58,同时该线还可用于监测S6700芯片内部数据缓冲区的情况。M_ERR线用来表征在同时读多张卡时数据的冲突情况。该线由于内部下拉,平时为低电平,一旦发生多卡冲突,此线会升
5、为高电平。在每一次通信过程中,远端控制器必须通过发送命令来实现任务,典型命令格式为:起始位S1、8位命令字、传输数据和结束位ES1。4.嵌入式控制模块硬件电路设计S3C44B0X微处理器是低功耗的,采用了应用于实时环境的ARM7TDMI32位核,所以选为控制模块的主芯片,负责完成PC机和RFID读写器之间数据的传送和控制。4.1晶振电路晶振电路用于向CPU及其他电路提供工作时钟。S3C44B0X芯片通过管脚OM3:2确定选择何种时钟源,在本系统中,将两个管脚下拉,选择晶体时钟模式,选用该模式时,外部采用10MHz的晶振,可以利用公式设计出各种所需的输出频率,也就是说时钟频率可以通过软件进行设定
6、,公式如下:Fpllo=(mFin)/(p2s)其中设置m=0x48,p=0x03,s=0x02,这样就可以得到40MHz的输出频率,满足系统的要求。4.2电源电路在该系统中,需要使用2.5V和3.3V的直流稳压电源,其中S3C44B0X的内核需2.5V电源,S3C44B0X的I/O口和其它部分电路需要3.3V电源。为简化系统电源电路的设计,要求整个系统的输入电压为高质量的5V的直流稳压电源,这样就需要用DC-DC转换器来完成5V2.5V、5V3.3V的转换,在该系统电路中选用了BayLinear公司的B1117电压转换芯片系列:B1117-2.5和B1117-3.3,器件输出电流为1.0A。
7、系统电源电路如图4所示。图3系统电源电路图4.3SDRAM接口电路在本系统中,采用了HY57V641620SDRAM芯片,存储容量为4组16M位(8M字节),工作电压为3.3V,支持自动刷新和自刷新,16位数据宽度。该芯片是通过行、列地址来定义存储器地址空间的,A11-A0是列地址,A7-A0是行地址,芯片管脚BA0、BA1用于片内4个存储器组的选择,将它与ADDR21和ADDR22相连,利用地址高端进行相应的选择。在本系统中,采用该JTAG接口对程序进行调试和下载。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。5读写器的软
8、件设计根据RFID读写器的需要,移植了UC/OS-。嵌入式系统通信程序循环发送命令,检测是否有卡待读,如果接收到从RFID模块传来的卡号信息,则将卡号从信息中提取出来发送至PC机上的应用程序,由应用程序对它进行辨识。无论是与RFID模块的通信还是与PC机的通信,都采用了串口通信方式,所以首先应对串口进行设置。当嵌入式控制程序向RFID模块发送完读卡的相关命令后,就需要等待接收传回的卡号数据信息,由于系统串口采用的是查询方式,一旦发送端存在数据遗失,一直未能有数据传送回来,则程序将进入死循环,所以在程序中设计了自动终止功能。在系统设计中该部分子内容只接收来自RFID模块的数据,故只考虑串口2。读
9、卡程序如下:charrecv_rfid()charlm;intm,l;if(whichUart=1)/串口2,接收从RFID模块传来的数据wh:for(;(!(rUTRSTAT1&0x1);)m=m+1;/等待的同时对变量m计数if(m=500)/判断m是否已累计到500还未接收到有效数据err_flag=1;/若是,则将标志err_flag置1gotowh1;/跳转到标记为wh1的程序处lm=RdURXH1();/若接收到有效数据,则将串口数据赋给变量lmreturn(lm);/返回lm的值wh1:l=0;/标记wh1处程序,实为跳出子程序写卡的过程只需要将从应用程序处获取持卡人的相关信息然后发送至RFID收发模块,由RFID模块写入射频卡中,因为要验证写入信息是否正确,所以该程序还需要实现读取射频卡中的信息并返回给应用程序,由应用程序来判断写入信息的正误。持卡人的相关信息包括姓名、性别、年龄、工作单位、身份证号、发卡日期和发卡时间。6结束语本文创新点:基于S6700的嵌入式的RIFD读写器具有成本低廉,稳定性好等特点,完全支持ISO/IEC15693协议的全部命令,并且实现了同时识别,若设计出功率放大器,读写距离可以达到1m左右,可满足门禁、校园一卡通等非高速识别应用场合的需要,在低成本应用领域有较广阔的应用空间。1