摘 要:使用TMS3705射频基站芯片,建立以单片微型机为核心的射频识别系统,该射频识别系统具有广泛的应用,尤其是在非接触式IC卡上前景广阔。对于IC卡而言,数据传输的正确性是很重要的,因此提出了一种用于数据校验的CRC校验实现算法。
关键词:射频识别(RFID);基站芯片;基站模块;射频卡
0 前 言
射频识别(即 Radio Frequency Identification,以下简称RFID)技术是从九十年代兴起的一项自动识别技术。它利用无线射频方式进行非接触双向通信,以达到识别目的并交换数据。与磁卡、IC卡等接触式识别技术不同,RFID系统的电子标签和读写器之间无须物理接触就可完成识别,因此它可实现多目标识别、运动目标识别,可在更广泛的场合中应用。本文研制的射频识别系统和相应的数据校验算法是对射频识别技术的一次成功尝试。
1 射频识别原理
典型的RFID 系统由电子标签(Tag),读写器(Read/Write Device)以及数据交换、管理系统等组成。电子标签也称射频卡,它具有智能读写及加密通信的能力。读写器由无线收发模块、天线、控制模块及接口电路等组成。射频识别是无源系统,即电子标签内不含电池,电子标签工作的能量是由读写器发出的射频脉冲提供。电子标签接收射频脉冲,整流并给电容充电。电容电压经过稳压后作为工作电压。数据解调部分从接收到的射频脉冲中解调出数据并送到控制逻辑。控制逻辑接受指令完成存储、发送数据或其它操作。EEPROM用来存储电子标签的ID号及其它用户数据。
2 射频识别系统设计
目前各大芯片厂商都开发了用于射频识别的ASIC(数字模拟逻辑混合型专用电路),本文研制的射频识别系统是基于德州仪器公司的TMS3705[1]基站芯片,由基站芯片设计基站发射和接收电路,同时设计基站天线。基于TMS3705基站芯片搭建射频基站,*联阳电子提供了基于TMS3705的射频基站模块RFM001.
图1 基站芯片及射频基站模块
射频卡发射数据后由射频基站天线接收,由基站处理后经基站的输出脚把得到的数据流发给微处理器的输入口。基站只完成信号的接收和整流工作,而信号的解调解码的工作由微处理器来完成。微处理器要根据输入信号在高电平、低电平的持续时间来模拟时序进行解码操作。现在比较流行的编码方法有Mancheester编码,Biphase编码。
本系统是基于TMS3705基站芯片的射频识别系统,所采用的射频卡是RFM001读写卡,要想正确的完成射频识别系统的开发,必须了解所使用的射频卡的读写特性。这些特性包括:EEPROM的存储分配、卡的同步信号、发射频率、卡控制逻辑、写卡以及其他卡操作的命令格式等。
2.1 数据在RFM001射频卡中的存储格式
包含Start byte共有14bytes数据
第1个字节 | 起始字节FEH |
第2-11个字节 | 用户数据区 |
第12个字节 | 停止字节FEH |
第13、14个字节 | 第13个byte=第2个byte;第14个byte=3byte |
用户数据区共有10个字节,建议采用对数据进行CRC校验,故建议第2-9 byte为用户数据区,第10、11 byte为CRC校验码。
以下给出基站读取数据的时序(如图2),由射频卡发出的数据采用FSK调制。
图3 1个字节的传输格式
每个Byte的格式如图3,由10 bits组成,第一个bit是START bit 固定为 HI,最后一个bit是Stop bit 固定为LOW,第2-9 bit 实际发送的数据(最先收到的bit为LSB),由于是负逻辑数据需要反相处理 (LOW=1、HI=0).
2.2 RFM001射频卡写入格式
要将用户数据写入RFM001射频卡,必须遵循下列格式。
数据功能 | 数据位置 | 数据值 | 持续时间 |
写操作命令 | 第1 byte | BBH | 16 ms |
写操作密码 | 第2 byte | EBH | 16 ms |
写入数据 | 第3-12 byte | 10 byte用户数据 | 160 ms |
结束标志 | 第13 byte | 00H | 16 ms |
结束标志 | 第14 byte | 03H | 16 ms |
用户数据区的数据可由用户完全决定,但建议采用2 byte校验码的CRC校验来校验数据。所以对于10个byte的用户数据,前面8个字节作为用户数据,后面2个字节作为用户数据的CRC校验码。
对于一位的写入采用的是脉宽调制,根据占空比的不同来确定是写入1还是写入0,具体占空比见图4.
图4 位写入方式
2.3 射频识别系统硬件设计
射频识别系统主要硬件组成是由单片微处理器构成射频信号的解码模块,其主要构成如下框图,其中通过RS232串行通讯将数据交给PC机进行处理。
图5 射频识别系统硬件框图
2.4 射频识别系统软件设计
射频识别系统的软件设计[2],其核心部分是射频卡发出的射频信号的读取和用户数据的写入射频卡。
2.4.1 射频信号的读取
将TXCT置为Low,Delay 50 ms后,再将TXCT恢复成High.
此时约过3 ms,SCIO开始输出数据,第一个Byte即为START Byte,总共输出14 Bytes数据。见图6.
图6 射频信号读取控制
2.4.2 射频信号的写入
根据射频信号的写入格式,按照如下的写入时序,即可将数据写入射频卡内。见图7.
图7 射频卡写入控制
3 CRC数据校验算法
CRC校验是为了检查信息字段是否传送正确而设置的,它是信息字段的函数。建议采用CCITT推荐的16位的循环冗余校验码(CRC-CCITT),其生成多项式为:G(x)=X16+X12+X5+1.CRC 校验码由于其实现简单,验错率高,因而在许多通讯场合广泛采用。本文采用的CRC-CCITT,能检测出所有的双错、奇数位错、突发长度不大于16的突发错以及99.997%的突发长度为17的突发错和99.998%的突发长度大于或等于18的突发错。CRC校验码的数学原理本文在此不作介绍。本文在这里说明怎样实现CRC校验。CRC校验码的运算可以用移位寄存器和半加器来实现。如附图8所示。
图8 CRC校验实现原理
发送端的校验过程:
1)先设定CRC校验码(2个bytes) 的初始值为00H,00H(000000000000000).(图8中0-15表示CRC的bit0-15).
2)CRC校验码全部右移一位,由A处与要进行CRC校验的数据的第1个Bit作XOR运算。
3)步骤2运算后A处的结果为1时,反相MSB(Bit15),检查MSB是否为1,是为1时则反相Bit13和Bit10,不是则转到步骤4.
A处的结果为0时,检查MSB是否为1,是为1时则反相Bit3和Bit10,不是则转到步骤4.
4)检查A处是否已做64次,不是,重复步骤2到4.
5)重复2-4,做CRC运算,所得最后数值就是CRC校验码。
接收端校验的过程,其实就是所有信息码加上CRC校验码作为一个整体,再求一次CRC校验的过程,如果最后结果是全零,则表示CRC校验正确,否则表示错误。由于和发送端实现原理相同,这里就不再重复。
虽然上面是以一种硬件实现的方法为例说明,但按照其中描述的数据流向却可以轻松的由软件实现。由于所讨论的射频识别系统的传输速率不大,建议在这里不用专门硬件而用软件方式实现CRC校验,其计算量是很小的。限于篇幅,未列出源程序。
4 结 论
本文研制的射频识别系统已成功应用于投币式洗衣机的替代产品,具有较好的实际使用效果。射频卡中存有使用洗衣机的次数,射频识别系统识别到合法卡后,洗衣机开始运转,同时,射频卡中的使用次数相应减少,从而替代了投币。
参考文献:
[1] Texas Instruments Technology Group.Integrated TIRIS RF Module TMS3705A Manual[M].U S A:Texas Instruments Company,1999,6-12.
[2] 周航慈.饶运涛.单片机程序设计基础[M].北京:北京航空航天大学出版社,2001.