图2 系统软件结构图

SLRC400应用程序算法

二进制搜索算法由一个阅读器和多个射频卡之间规定的一组命令和应答规则构成。目的在于从多卡中选出任意一张实现数据通信。为了从一组射频卡中选择其一,阅读器发出一个读卡命令,有意识地将射频卡序列号传输时的数据碰撞引导到阅读器上,即通过阅读器判断是否有碰撞发生。该算法有三个关键要素:选用易于识别碰撞的基带编码;利用射频卡序列号唯一的特性;设计一组有效的指令规则,高效、迅速地实现选卡。

本系统所用到的指令规则为:Inventory Request--请求(序列号):向阅读器请求响应;Select(SNR)--选择(序列号):用某个(事先确定的)序列号作为参数发送给射频卡。如果场中某一射频卡的序列号和此参数相同,则此射频卡被选中,对其他的指令进行响应,而其他序列号的射频卡只对Inventory Request指令应答;Stay quiet--安静状态:取消一个事先选中的射频卡,射频卡进入安静状态(非激活),对收到的Inventory Request命令不做应答。为了重新激活射频卡,可以先将射频卡移出阅读器天线的作用范围再进入,以实现复位,或者收到select及Reset to Ready命令。

对二进制搜索算法系统功能的可靠性起决定作用的是所有射频卡需要准确的同步,这样才能按位判断碰撞的发生。为了使众多射频卡不发生碰撞,需要重复操作Inventory Request指令。

SLRC400应用编程

读写芯片SLRC400的行为通过执行特定的9条命令的内部状态来决定。执行命令时所需的声明或数据通过FIFO缓冲器交换。Start up 命令进行复位和初始化;IDLE将SLRC400切换到非激活状态;Transmit从FIFO缓冲器传输数据到射频卡;Receive命令激活接收电路;Transceive从FIFO缓冲器传输数据到射频卡;WriteE2命令把从缓冲器获得的数据写到EEPROM;ReadE2把从EEPROM读到的数据置于FIFO缓冲器;LoadConfig从EEPROM读数据并初始化寄存器;CalcCRC激活协处理器。在执行前对所有寄存器进行初始化,然后阅读器以一定的时间间隔循环发送Inventory Request命令,监测阅读距离内是否有射频卡存在。如果有,则射频卡响应Inventory Request命令,向阅读器发送卡号和CRC校验值。如果有通信错误或无碰撞,则利用Transmit和WriteE2通过数据总线发送给微处理器,然后发送Stay quiet命令,使刚才的射频卡进入安静状态。如果有碰撞,就调用防碰撞程序,以二进制搜索的算法缩小搜索范围,直到剩下一个射频响应。