如图2所示,射频模块通过由6个引脚组成的数字交互界面与控制器进行通信。MSP430系列单片机的端口功能强大,每一个位都可以独立地配置成为输入、输出、中断等功能引脚。阅读器与标签的控制器都可将单片机的P1脚中的6位,分别与CC2500的SI、CLK、SO、GDO2、GDO0、CS相连接,其中由CS、CLK、SI、SO组成SPI口,负责控制器与CC2500之间收发数据的传送。GDO0与GDO2是CC2500可配置的多功能引脚,当CC2500收到数据包时,令GDO0触发控制器引起中断,读取CC2500缓存里的数据。通过配置GDO2则可提供CC2500的CCA检测结果。
阅读器与标签之间以射频模块规定的数据包格式通信,CC2500规定的数据通信格式如图3所示。
导言、同步字与CRC校验在发送数据时是由CC2500硬件自动添加,在接收时由硬件自动去除,在信道特性较好的场合,为提高识别速度,可设定16位的导言与16位的同步字。CC2500在固定长度通信模式下,可删去长度域;在可变长度通信模式下,需要8位的长度域给出除去导言与同步字外所有数据负载的字节数。本设计中要用到多种不同长度的通信命令,因此采用了后一种模式。地址域用于CC2500多设备识别,本设计没用到,删去。最后两个字节的CRC校验是长度域、地址域与数据负载的校验和。
3 防碰撞算法
RFID系统软件实现的重点是防碰撞算法的实现,目前这类算法的实现方法有空分多址(SDMA)、频分多址(FDMA)、码分多址(CDMA)和时分多址(TDMA)等,而应用较广的是时分多址技术中两种主要的算法:二进制搜索算法和Aloha算法。Aloha算法实现简单,便于实际应用,但随着标签数量的扩大,性能将会急剧恶化[2]。二进制搜索算法的实现要比Aloha算法复杂,但算法识别效率较高[3]。
本设计方案中采用FDMA与TDMA相结合的方法。FDMA利用了CC2500的载频在2.400GHz~2.483GHz之间可调的特点,本设计以400KB为间隔,选择了其中的65个信道。其中第1个信道为主信道,用于平时的查询与标签的软件复位,其余64个信道用作FDMA的子信道。当有大量标签同时需要识别时,把标签随机分配到这些子信道中,就可以大大减少碰撞的机会。
由于是随机分配,多个标签被分到同一个子信道上是可能的,此时采用CC2500的CCA功能根据TDMA的思想来解决多个标签的先后响应问题。在标签被分到子信道的同时,以ID号为种子产生一个随机延时,当标签收到阅读器查询后,先度过这一延时,再进行CCA检测与回复。它与Aloha算法中为了让各个标签能在不同的时间段内发送回复以求不碰撞的延时是有区别的,相比之下,此设计中的延时要小得多,只是让延时最小的标签首先发送回复,使延时较大的标签有足够的时间通过CCA检测知道信道已经被占用。这样就可以避免在同一个子信道上多个标签同时回复的情况。在最坏的情况下,标签的延时偶然地出现了一致,同时在信道上做出了响应,这时阅读器会因收到的回复CRC校验不正确而将其舍弃,并在该信道上重新发送查询命令。