将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 结 论
本文研制的射频识别系统已成功应用于投币式洗衣机的替代产品,具有较好的实际使用效果。射频卡中存有使用洗衣机的次数,射频识别系统识别到合法卡后,洗衣机开始运转,同时,射频卡中的使用次数相应减少,从而替代了投币。