引言
射频识别(RFID)技术是一种自动识别技术,被广泛应用于动物识别、铁路车皮识别、自动高速公路收费、航空行李处理、资产跟踪、公共交通等。该系统主要包括电子标签和阅读器两部分,两者之间通过电磁波进行通信。通过这种方式阅读器可以远距离、非接触地读出电子编码中的所有信息,并通过串口将数据传输到管理主机中,供工作人员记录读取。
实际应用中,阅读器和主机之间是通过串口或网口进行通信的,这种通信方式会造成射频识别系统布线繁琐、成本高、工程量大。一旦系统安装完成后,就不能随意变动位置,降低了系统的重复利用率。
为了使射频识别系统能够突破位置限制、节省空间、降低成本及减小工程量,对传统的阅读器进行了重新设计,实现了阅读器和主机之间无线方式的信息交互传输。
1 整体设计方案
无线传输射频识别阅读器的系统结构如图1所示,主要包括ZigBee模块、主控模块、RFID射频读写模块、天线模块、USB转串通信模块和电源模块。
使用了一对ZigBee模块,一个设计在阅读器内,另一个独立设计成带USB接口的信息收发器,安装在上位机上。主控模块是以STM32F107VCT6 为核心的微控制系统模块,RFID射频读写模块负责数据的传输和信号的处理工作,以及对电子标签进行读写 *** 作。核心芯片是EM4094(USB转串通信模块),主要作为备用上位机读写通道设计,当无线通信距离超出有效范围或者无线通信发生故障时,可以使用串口通信连接上位机及阅读器。天线模块采用传统设计,这里不做重点介绍。
此外,还设计了音频报警和信号指示,分别用来提醒 *** 作人员读卡是否成功指示阅读器通信或电源的状态。
2 硬件电路设计
2.1 ZigBee模块
EMZ3118模块是基于STM32W108的一款完整的嵌入式ZigBee应用模块,带外部射频功率放大器(PA),发射功率最大为+20 dBm(100 mW)。模块提供了ZigBee/IEEES02.15.4兼容的无线解决方案,可满足低成本、远距离的无线传感网应用需求。
EMZ3118采用先进的系统级芯片STM32W108,拥有稳定可靠的Ember ZigBee Pro协议栈、开发简单便捷、便于集成ZigBee解决方案、通信范围广、网络可靠性高。最大传输距离为1.6 km,具有24个GPIO端口、4个中断端口、支持两个串行接口、6路12位A/D端口。支持点到点、点到多点、P2Pmesh的网络协议,还提供16个直序扩频信道。EMZ3118引脚基本上都对应到STM32W108的引脚上。
设计中使能EMZ3118的外部射频功率放大器(PA),必须进行一些简单的配置。该模块使用4个CPU引脚来控制外部功放,根据他们的功能定义做出相应的配置,如下所示。
PA3:输出控制引脚,用于控制外部功放的供电。设置为0,外部功放电源打开;设置为1,外部功放电源关闭。
PA6:输出控制引脚,外部功放的使能控制。设置为0,外部功放不工作;设置为1,外部功放工作。
PA7:输出控制引脚,用于选择射频信号的输出天线。设置为0,射频信号从UFL天线接口输出;设置为1,射频信号从MMCX天线接口输出。
PC5:外部功放收发切换控制引脚,这个引脚需要设置为特殊功能输出模式。
本设计中EMZ3118直接使用外置天线,无需设计。
2. 2 主控芯片
STM32F107VCT6是意法半导体推出的全新STM32互连型(ConnecTIvity)系列微控制器中一款性能较强的产品。该芯片基于ARM Cortex—M3内核,具有256 KBFlash和64 KB SRAM,工作频率可达72 MHz。其集成了多种高性能工业标准接口:一个全速USB(OTG)接口、两个CAN2.0B控制器、一个硬件支持IEEE1588精确时间协议 (PTP)的以太网接口(由硬件实现该协议可降低CPU开销,提高实时应用和联网设备同步通信的响应速度)。此外,该微控制器还支持以太网、USB OTG和CAN2.0B外设接口同时工作,因此只需一块芯片就能设计整合所有这些外设接口的网关设备。
设计中使用100引脚的STM32F107VCT6,EMZ3118与主控芯片的电路连接原理如图2所示。
图2中,EMZ3118和主控芯片之间进行SPI通信,EMZ3118为主控芯片的从设备。PA6为主控芯片在主动模式下的数据输入端(SDO);PA7 为主控芯片在主动模式下的数据输出端(SDI);PA5为串口时钟(SCK);PA4为从设备选择端(NSS),用来使能ZigBee模块;PA3用来控制EMZ3118的外部Rx/Tx切换逻辑控制端。
2.3 RFID射频读写模块
RFID射频读写模块中的核心器件是EM4094芯片,是一款集成收发器芯片,可用于构成RFID阅读器的模拟前端读写基站模块。EM4094支持所有EM公司频率为13.56 MHz的收发器芯片,支持ISO15693协议、ISO14443协议和Sony Felicia协议。
EM4094三个不同的电源引脚分别是VDDA1、VDDA2和VDD。其中,VDDA1和VDDA2为内部天线驱动器ANT1、ANT2供电,每个驱动器需要独立供电。由于两个驱动器可能产生较大的电流,为了给天线提供足够电能,需要在VDDA1及VDDA2引脚间接入一个3.3 μF电容,再分别并联一个1 nF和100 nF的电容,对电源进行滤波和去耦。VDD用于给其他的内部逻辑电路供电。在这个电源线上同样并联一个1 nF和100nF的电容对电源进行滤波和去耦。这3个电源施加相同的电压(5 V或3.3 V),所有电源线都应当与模拟地相连。
在OSCOUT和OSCIN两端外接13.56 MHz的晶振,用来提供脉冲信号,该信号被送至天线驱动器输出端。为了保证晶振的起振以及稳定性,在晶振两端跨接两个NPO电容。NPO电容的大小由EM4094芯片的可选跨导和晶振参数决定。
为了确保阅读器内部芯片的稳定性及可靠性,分别用100 nF和1 nF的电容对带隙参考输出(AGD)电压进行去耦。
引脚ANT1和ANT2是两个天线驱动器的输出端,它们可同相或反相驱动,如果将阅读器天线与EM4094芯片集成到同一块PCB板上,便可选用直接天线连接的方法。这种情况下,天线线圈和串联的电容形成LC振荡回路,回路的谐振频率设计为阅读器的频率。串联一个电阻可以抑制品质因数,且将天线电流设计在 EM4094额定电流值以下。当工作于其谐振频率时,天线即可获得较高的输出功率。
引脚RFIN1、RFIN2是该芯片接收链上的输入引脚,用来解调芯片收发器发送过来的数据。该引脚上的电压应设计在VDD和GND之间,这两个输入设计必须具有相同性能及相同灵敏度。另外,外接一个阻抗匹配电路,这两个输入端就可用于解调输入相位或幅度来调制信号。没有使用的输入引脚要通过一个10 nF电容接到模拟地,高灵敏度的输入引脚使得读卡器即使在电子标签最小的电源级别上,还能具有较远的读写距离。
引脚EN用于关闭或使能阅读器电子电路,该引脚可由一个外部单片机进行控制。
在SPI串行通信模式下,引脚DIN用于数据输入,引脚DOUT用于数据输出,引脚DCLK用于SPI总线的时钟信号。SPI接口可用来对读写器芯片内部的位寄存器进行设置,并参与不同模块参数的设定。在正常模式下,可通过在DIN引脚上施加逻辑电平来关闭或打开天线驱动器。在DOUT引脚上可直接读取引脚DIN上的应答信息。
RFID射频读写模块电路工作原理图如图3所示。
2.4 天线模块
天线负责发送阅读器对电子标签的读写指令,同时接收标签返回的数据。在射频识别系统中,天线线圈可看作两个相互耦合的电感。两个电感谐振频率必须设计在阅读器工作频率(即13.56 MHz)附近,才能使得电感的耦合程度最高,因此必须先知道天线线圈的电感值,再搭配适当的电容值,根据不同的应用计算出天线的品质因数和电感的电阻值。
本设计中,参考demo板的参数设计,在PCB板上印刷天线线圈、矩形形状。圈数为4圈,线圈外圈长6.8cm、宽5.5 cm、线宽1 mm、线间距0.2 mm、并联一个3.3kΩ的电阻,容性的阻抗匹配网络(8.2 pF+120 pF并联)电容值串联56 pF+680 pF并联后的电容值。
USB转串口通信模块采用常用电路,电源模块相关电路除了给芯片EM4094两个独立供电电源使用了磁珠隔离,其他的也采用了常用电路。
3 软件设计
3.1 上位机软件设计
上位机软件主要实现对远端阅读器的读写 *** 作。上位机软件通过RS485口向EMZ3118发送带有阅读器地址的读写指令,EMZ3118将指令无线传输给远端EMZ3118接收并解析。符合接收阅读器地址的指令会发送给主控芯片,主控芯片进一步解析指令后对阅读器进行相关读写 *** 作,并监测阅读器对指令执行的结果是否正确,同时将相关的结果数据原路径传输给上位机,阅读器的工作状态实时显示在工作状态灯上。本设计中的上位机采用C#开发。
3.2 下位机软件设计
下位机软件包括ZigBee模块本身的收发配置、阅读器驱动及工作程序设计、主控芯片的初始化及网络通信程序设计,以及系统控制、串行 Flash存储、硬件外围模块驱动、EMZ3118为ZigBee模块的Host驱动、其他接口驱动等。本文重点介绍EMZ3118的Host驱动,软件架构如图4所示。
EMZ3118为ZigBee模块的Host驱动,完成STM32F107与EMZ3118模块的SPI通信并提供通用SPI读写能力。代码框架如下所示:
Assemble Command and put it into cmdbuf.
While(get_EMZ3118_int_status());
Spi_send_data(cmdbuf,cmdlen);
Recvlen=spi_rec_data(resbuf);
Handle response buffer.
其中,函数get_EMZ3118_int_status()用于获取模块/INT状态。
结语
经过实际测试,本系统能够通过无线传感网络远程对RFID射频识别阅读器进行读写 *** 作,同时控制RFID射频识别阅读器对电子标签进行读写 *** 作。系统工作稳定可靠、传输数据正确、反应时间短,具有较高实际应用价值。
责任编辑:ct
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)