基于CC2500的2.45GHz RFID系统设计
2009-01-08
作者:刘振文, 邓毅华, 彭友斌
摘 要: 提出了一种基于CC2500射频芯片的低成本2.45GHz RFID系统设计方案。从硬件电路设计和软件实现两方面,解决RFID系统中有源标签的功耗问题,并在CC2500的硬件功能基础之上,利用时分多址(TDMA)与频分多址(FDMA)相结合的方法实现多标签识别的防碰撞算法。
关键词: CC2500; RFID; 有源标签; 防碰撞
射频识别RFID(Radio Frequency Identification)是一项利用射频信号及其空间耦合和传输特性,非接触式地实现对物体自动识别的技术。RFID技术最早在二战期间被美国国防部用于战用物资的管理,2004年6月沃尔玛公司宣布其主要的100家供货商在2005年前必须使用RFID标签[1],推动了RFID的研究热潮,而中国RFID的研究起步较晚,近几年在第二代公民身份证中应用了RFID技术以后,才得到较大发展。
RFID系统主要可分为阅读器与标签两部分,而标签则可分为有源标签与无源标签。无源标签体积小,成本低,但它只能靠阅读器的磁场提供能量工作,识别距离受到很大限制。有源标签有较大识别距离,但体积较大,成本也较高,而且对标签功耗有非常苛刻的要求。有源标签在运输行业对物品跟踪方面有很好的应用。RFID系统软件实现的关键技术是要解决多标签同时识别时的防碰撞问题。
1 芯片选型
本设计所用的控制器为TI公司生产的MSP430系列16位单片机,它集成了定时器、LCD控制器、硬件乘法器、ADC、DAC、DMA等多种功能模块,而且价格低,具有很高的性价比。其处理功耗(1.8~3.6V,0.1~400μA,250μA/MIPS)和口线输入漏电流(最大50nA)在业界都是最低的,适合用于功耗要求严格的有源标签设计。
射频模块采用TI公司生产的CC2500芯片,它是一款超低功耗、低成本的无线收发模块,其载频范围在2.400GHz~2.483GHz内可调,可用来实现多信道通信。它支持多种调制方式,包括FSK、GFSK、OOK和MSK,数据传输速率最高可达500kb/s。CC2500还为信息包处理、数据缓冲、脉冲传送、空闲信道评估、连接品质指示和电磁唤醒等功能提供了额外的硬件支持。它有四种主要的状态:接收(RX)、发送(TX)、空闲(IDLE)和休眠(SLEEP)。
空闲信道评估CCA(Clear Channel Assessment)功能是指当CC2500处于RX状态时,可以检测自身所处信道的电磁场的强弱以判断该信道是否空闲。本设计中利用该功能来避免多个标签同时响应阅读器查询时发生的碰撞。当一个标签收到阅读器的查询时,让它先进行CCA检测,若检测到该信道忙,表明已经有其他标签响应了,自身不再响应,等待下一次查询命令到来,否则正常响应。
有源标签设计的关键问题之一是功耗,解决这一问题一般靠两种途径,一是选择功耗低的元器件,CC2500在250kb/s的速率时,接收的电流消耗为13.3mA,在业界来说已经是非常低。另一种改善功耗的方法是利用科学的软件实现,利用CC2500的电磁唤醒功能WOR(Wake on Radio)可设计一种很好的解决方案。当CC2500处于WOR运行下的SLEEP状态时,除了内部实现唤醒功能的计数器工作,其他功能都已停止,此时CC2500的功耗仅为900nA。当计数器到达可编程的指定时间时,自动从SLEEP状态切换到IDEL状态,再进入RX状态,如果此时收到数据,就退出WOR进入正常模式;如果处于RX状态在指定时间内收不到数据,则自动回到SLEEP状态。因此只要保证在一个完整的WOR周期内,标签绝大部分时间都处于SLEEP状态,就可以大大降低标签的功耗。
2 系统框架
系统框图如图1所示,阅读器控制器采用的是MSP430F2274单片机,具有32KB的Flash与1KB的RAM,标签控制器采用MSP430F2013单片机,具有2KB的Flash 与128B的RAM,阅读器与标签都是利用单片机的P1口模拟SPI口与CC2500射频模块的数字接口进行通信。作为阅读器部分的MSP430F2274则用其专用的TXD与RXD引脚通过MAX3232实现电平转换后与PC机的串口相连,以完成阅读器读取数据的显示。
CC2500的外围器件比较简单,天线采用Rainsun公司的2.45GHz贴片天线,标签采用纽扣电池供电。CC2500的RF_N与RF_P是差分射频信号输出引脚,输出阻抗为(80+j74)Ω,而天线是50?赘的单端输入,因此之间需要搭建一个差分到单端的阻抗匹配网络。CC2500射频模块的电路原理图如图2所示。
如图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校验不正确而将其舍弃,并在该信道上重新发送查询命令。
4 系统软件实现流程
阅读器软件实现过程中有以下几个主要命令:
(1)Query命令:阅读器对标签进行查询的命令。
(2)QueryAck命令:标签响应阅读器查询的命令,其中含有标签ID等信息。
(3)Kill命令:阅读器识读完标签后,使其处于沉默状态,不再响应同一阅读器查询的命令。
(4)Active命令:阅读器用于软件复位在识别场内所有标签的命令。
阅读器开机复位后,在主信道上持续地发送Query命令,一旦收到标签回复的QueryAck命令,阅读器都默认为有多个标签存在,则首先识别该回复的标签,并在主信道上发送Kill命令将其灭活,其后,循环查询64个子信道。遍查子信道时,在第一个子信道上发送一个Query命令,若在指定时间内没收到标签回复,则直接到下一个子信道查询;若收到标签回复,识别后发送Kill命令将其灭活,然后在该子信道上再发送一个Query命令,重复以上过程,直到在指定时间内收不到标签回复为止,表明该子信道上的所有标签都已读出,继续下一个子信道的查询。当64个子信道都查完,即所有标签都已识别,回到主信道上持续发送Query命令等待标签回复。阅读器软件流程如图4所示。
标签软件流程如图5所示,标签平时处于“激活的WOR”模式(是指接收到Query命令马上响应的WOR模式,区别于下面的“灭活的WOR”,它是指接收到Query命令但不响应的WOR模式),在主信道上侦听阅读器的查询。当标签进入阅读器磁场,被定时唤醒处于RX状态时(设定RX的持续时间是两倍的Query查询周期),肯定能接收到一个完整的Query命令,随机延时后进行CCA检测,若信道空闲,则发送一个QueryAck命令,然后等待阅读器返回的Kill命令。标签收到Kill命令表示识读成功,则进入灭活的WOR状态;若收不到,表示由于标签回复碰撞或其他原因识读不成功,则在原来的信道上进入RX状态侦听阅读器重发的Query命令。
如果标签在平时收到阅读器的Query命令,随机延时后的CCA检测结果是信道忙,表明有多个标签需要识别,因此随机跳到64个子信道其中之一,进入RX状态侦听阅读器的Query命令。在子信道上与阅读器的通信过程和在主信道上的过程几乎一样,唯一差别是当标签的CCA检测表明信道忙时,不再随机选择信道,而是在原来的子信道上处于RX状态侦听阅读器重发的Query命令。
无论标签处于哪种状态,收到Kill命令后,表示标签被阅读器成功读取,回到主信道上进入灭活的WOR模式,在标签控制器中启动一个专用的计时器用来标示标签是否离开了阅读器的磁场。只要标签还在同一阅读器的识别范围内,在被唤醒时还是能收到Query命令,此时标签已被该阅读器读取过,不再作出响应,清零专用计时器,重新计时。如果计时器超过一定时间都没收到Query命令,则表明标签已经离开该阅读器的识别范围,关闭计时器,标签进入激活的WOR模式,等待下一个阅读器的查询。
RFID应用越来越广泛,本文提出一种体积小、成本低、简单易行的2.45GHz频段的RFID系统设计方案,重点阐述了如何降低有源标签功耗与防碰撞算法的实现,论证其现实可行性,具有较高实用价值。
参考文献
[1] 丁军. RFID技术及其应用[J].工业仪表与自动化装置,2006,(5):74-75.
[2] KALINOWSKI R, LATTEUX M, SIMPWT D. An adaptive anti- collision protocol for smart labels[EB/OL]. 2001. http://www2.lifl.fr/~simplot/recherche/articles/KLS_adaptive_acpsl.pdf.
[3] 崔沂峰,陈平.射频识别技术防碰撞算法的研究[J].科技信息(学术版),2007,(11).
[4] FINKENZELLER K.射频识别技术(第3版)[M]. 吴晓峰, 陈大才,译. 北京:电子工业出版社, 2006.
[5] 宁焕生,张彦. RFID产品研发及生产关键技术[M].北京:电子工业出版社.2007.
[6] CC2500.pdf. Chipcon Products from Texas Instruments. 2006.