STC11F32单片机的射频读卡器设计
引言
无线射频识别技术(RFID)以其高度安全保密性、通信高速性、使用方便性、成本低等特点而得到快速的普及和推广,现已广泛地应用于各类门禁控制系统、公共交通支付系统、医疗保险系统、停车场管理系统、仓储管理、车辆防盗等方面,并带动了读写器和各类应用产品的开发和推广。本文在分析射频识别系统组成和原理的基础上,提出了基于STC11F32高速单片机和MFRC500芯片的射频读写器设计方案;同时,在该读卡器上扩展了点阵图形液晶LCD和串行存储器W25X80,以及USB芯片CH340T等外围设备。LCD可以显示各种图形和汉字;串行存储器用来存储点阵字库、图形库等;USB芯片使得该读卡器省去了串口和电源供电端口,可以通过USB接口和PC管理软件通信。该读卡器使用方便、成本低,电路运行稳定,可以应用到各种场合。
1 射频读写系统的构成和基本原理
最基本的RFID系统由3部分组成:
①电子标签(Tag,或称射频标签),由芯片及内置天线组成。芯片内保存有一定格式的电子数据,作为待识别物品的标识性信息,是射频识别系统真正的数据载体。内置天线用于和射频天线间进行通信。
②阅读器,读写电子标签信息的设备。主要任务是控制射频模块向标签发射读取信号,并接收标签的应答;对标签的对象标识信息进行解码,将对象标识信息连带标签上其他相关信息传输到主机以供处理。
③天线,标签与阅读器之间传输数据的发射、接收装置。
射频读写系统基本原理如下:读写器向卡片发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同。在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷。在这个电容的另一端接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内存储。当所积累的电荷达到2V时,此电容可作为电源为其他电路提供工作电压,将卡内数据发射出去或存取读写器的数据。
2 读卡器硬件设计
STC11F32是宏晶科技公司生产的单时钟/机器周期(1T)的单片机,是高速、低功耗、具有超强抗干扰能力的新一代8051单片机,指令代码完全兼容传统8051,但速度快8~12倍。内部集成高可靠复位电路,可用在高速通信、智能控制、强干扰等场合;内部有32KB的Flash、29KB的EEPROM和1280字节的SRAM;EA、ALE、PSEN和RST引脚可以定义为通用I/O,即4个P4引脚;编程支持ISP下载功能,使用起来比较方便。
MFRC500是Philips公司应用于13.56MHz非接触式通信中高集成读卡IC系列中的一员。该读卡IC系列利用先进的调制解调概念,完全集成了13.56MHz下所有类型的被动非接触式通信方式和协议。MFRC500支持ISO14443A所有的层,内部的发送器部分不需要增加有源电路就能够直接驱动近操作距离的天线(距离可达10cm);与微控制器的接口方式有多种,既可以采用总线扩展方式,也可以采用模拟总线方式。
为了使用STC11F32内部1KB的扩展SRAM,采用模拟总线接口方式,即用单片机的P0口和MFRC500的D0~D7相连,用EA、ALE、WR、RD等作为控制线分别和MFRC500的NCS、ALE、NWR、NRD等相连。由于是模拟总线方式,所以单片机的P0口要加上拉电阻。采用模拟总线方式是一种通用的方法,特别是对于不支持总线扩展的单片机更为重要。该设计中使用模拟总线方式可防止MFRC500和单片机内部的RAM发生总线冲突。图1是读卡器的系统硬件原理图。
CH340T是南京沁恒公司生产的USB总线转接芯片,可以实现USB转串口,用于为计算机扩展异步串行口,或者将普通的串口设备直接升级到USB总线。CH340T是全速USB设备接口,兼容USBV2.0,外围元器件只需要晶体和电容等器件;硬件全双工串口,内置收发缓冲区,支持通信波特率50bps~2Mbps;支持常用的Modem联络信号RTS、DTR、DCD、RI、DSR等。CH340T使得该读卡器省去了串口和电源供电端口,可以通过该USB接口和PC管理软件通信。
LCD采用的是不带字库的点阵图形LCD模块FG12864E。为了使读卡器可以应用在诸如图书馆图书管理等需要汉字显示的场合,采用串行存储器W25X80自行设计了GB2312汉字库和其他图片库。串行存储器以其体积小、密度高、功耗低、价位低、操作简单而备受青睐。Winbond公司生产的W25X80为8Mb串行存储器,分为4096页,每页为256字节的存储单元,且带有256字节的缓冲区,SPI接口方式。使用Flash自行设计汉字库不仅操作十分简单,并且可以灵活地适用于多个设计方案。
{$page$}
3 读卡器软件设计
在软件设计中STC11F32和MFRC500之间的模拟通信是最关键的一步,因为只有打通了底层通信的关键环节,STC11F32才能进一步通过控制MFRC500实现读、写卡的基本操作。为了实现这一步,首先要弄清楚MFRC500的读写时序。本设计采用的是独立读/写选通、复用地址总线的方式,在此方式下MFRC500的读写时序如图2所示。
根据该时序图可以写出STC11F32单片机从MFRC500读、写一个字节的C语言实现代码。
(1)从一个地址读出一个数据
STC11F32主要通过调用这两个最基本的函数来实现对MFRC500进行复杂的读写控制的。采用模拟总线通信方式的最大好处是,用C语言写的代码很容易移植到不支持总线扩展的各种单片机上,增强了软件模块的可复用性和可移植性。打通了底层通信的关键环节之后,就可以编写调试各个软件模块。软件总体流程如图3所示。
系统上电后,首先要初始化STCllF32的I/O引脚和串行口。I/O设置主要是把STC11F32的特殊引脚(如EA、ALE、PSEN等)定义为通用I/O,以便与MFRC500进行模拟通信。之后进行MFRCS00的复位,要延时足够长的时间以使MFRC500得到可靠的复位。在复位过程中,MFRC500的一些寄存器位由硬件预置;复位成功以后,还需要对MFRC500的各个寄存器进行必要的配置。
在LCD初始化完成后,LCD上将显示系统的相关提示信息,然后等待用户从串口或按键输入的命令,根据用户输入的命令进行相应的操作,并把执行操作的结果再返回给用户,同时在LCD上显示出来。
{$page$}
结语
本文采用宏晶科技的高速、低价位单片机STC11F32和Philips公司的MFRC500芯片设计出了非接触式的射频读卡器;按照ISO/IEC14443的标准,完成了系统硬件和软件的设计工作。经实际使用证明,该读卡器工作稳定、抗干扰能力强、性价比高、操作灵活,具有很强的市场竞争力。