带定位引擎的射频芯片CC2431
CC2431是TI公司推出的带硬件定位引擎的片上系统(SoC)解决方案,能够满足低功耗ZigBee/IEEE 802.15.4无线传感器网络的应用需要。CC2431定位引擎基于RSSI技术,根据接收信号强度与已知参考节点位置准确计算出有关节点位置,然后将位置信息发送给接收端。相比于集中型定位系统,RSSI功能减小了网络流量与通信延迟,在典型应用中可实现3~5 m定位精度和0.25 m的分辨率。 1 CC2431的主要特点 CC2431片上系统(SoC)由CC2430加上Motorola公司基于IEEE 802.15.4标准的无线定位引擎组成,具有2.4 GHz DSSS(直接序列扩频)射频收发器核心和高效的8051控制器。其中,MCU包括存储器及其外围,其他模块提供电源管理、时钟分配和测试等重要功能。 CC2431的设计结合了8 KB的RAM及强大的外围模块,并且有3种不同的版本。它们根据不同的闪存空间32 KB、64 KB和128 KB来优化复杂度与成本。CC2431的尺寸只有7 mm×7 mm的48脚封装,采用具有内嵌闪存的0.18 μm CMOS标准技术。针对协议栈、网络和应用软件执行时对MCU处理能力的要求,CC2431包含一个增强型工业标准的8位8051微控制器内核,运行时钟为32 MHz。CC2431还包含一个DMA控制器,可以减少8051微控制器内核对数据的传送操作,因此提高了芯片整体的性能。 在CC2431 8 KB静态RAM中的4 KB是超低功耗SRAM。32 KB、64 KB或128 KB的片内Flash块提供在线可编程非易失性存储器。CC2431集成了4个振荡器用于系统时钟和定时操作,以及用于用户自定义应用的外设;具有4个定时器,此外,还集成了实时时钟、上电复位、8通道8~14位ADC等其他外设,并带有语音和定位跟踪引擎。CC2431的主要特点如下: ◇ 定位引擎能精确计算网络中节点位置; 2 CC2431的定位引擎操作 CC2431和CC2430是引脚兼容的,除定位引擎之外,CC2430的MCU和RF部分与CC2431完全相同。为避免重复,本文重点介绍CC2431的定位引擎。 定位引擎用于估算无线网络中节点的位置。通常参考节点坐标已知,其他需要估计坐标的节点为“盲节点”。进行定位估计时,定位引擎需要获得3~8 个参考节点的坐标值以及其他测量参数,定位引擎计算后的输出是一个节点的估计坐标。在定位引擎运行之前,必须使能定位引擎寄存器LOCENG的第4位 LOCENG.EN。当要停止定位引擎运行时,应往LOCENG.EN写入0关断引擎的时钟信号,从而降低CC2431的功耗。对定位引擎的操作主要就是对与定位引擎有关的寄存器的操作。下面详细说明各部分的操作。 2.1 参考坐标 定位引擎运行时需要3~8个参考坐标输入。参考坐标以m为单位表示各个参考节点的位置,其数值位于0~63.75,最高精度为0.25 m,以最低2位为小数部分,剩余6位为整数部分。参考坐标存放于RF寄存器REFCOORD中。在写入REFCOORD之前,寄存器LOCENG的第1位 LOCENG.REFLD必须写入1,用于指示一组参考坐标将要被写入。一旦坐标写入过程开始(LOCENG.REFLD=1),8对坐标必须一次性写入。当定位引擎使用少于8个参考坐标时,要将未用的参考坐标写入0.0。 2.2 测量参数 定位引擎除了需要参考坐标外,还需要一组测量参数。这组参数由2个射频参数和8个RSSI值组成。射频参数是数值A和n,用于描述网络操作环境。在全向模式下,射频参数A被定义为用dBm表示的距发射器1 m接收到的平均能量绝对值。若平均接收能量为-40 dBm,那么参数A被定为40。定位引擎期望参数A为30.0~50.0,精度为0.5。参数A用无符号定点数值给出,最低位为小数位,而其余各位为整数位,一个典型值为40.0。 射频参数n被定义为路径损失指数,它指出了信号能量随着到收发器距离的增加而衰减的速率。衰减与d-n成比例,这里,d是发射器和接收器之间的距离。实际写入定位引擎的参数n是一个可通过查表得到的整数索引值,如表1所列。 例如,通过测量得到n=2.98,查表得到最接近的有效值为3.000,相应的索引值是13。因此,整数13作为参数n写入到定位引擎中。参数 n以[0,31]之间的整数索引写入定位引擎,索引用整数表示。如n=7,即写入000000111。n的典型值是13。RSSI值是相应于一组参考坐标的RSSI测量值。 RSSI值为[-40 dBm,-95 dBm],精度为0.5 dBm,写入值中应去掉负号。如RSSI的值为-50.35 dB,则写入到定位引擎中为50.5。注意,未用的参考坐标必须用0.0作为RSSI值写入。如果仅有部分参数写入,则定位引擎不能正确工作。 所有的测量参数应写入RF寄存器MEASPARM中,在写入MEASPARM之前寄存器LOCENG的第2位LOCENG.PARLD必须写入 1,表示一组测量参数将被写入。一旦参数写入开始(LOCENG.PARLD=1),所有10个参数必须一次性全部写入。测量参数必须按[A,n, rssi0,rssi1,…,rssi7]顺序写入MEASPARM寄存器,任何未使用的位必须写0。10个参数全部写完之后,LOCENG.PARLD 必须写入0。 2.3 定位估计 参数坐标和测量参数写入之后,通过将寄存器LOCENG第0位LOCENG.RUN写入1,启动定位估计计算。通常,LOCENG.RUN被置 1后的1 200个系统周期之后,LOCENG的第3位LOCENG.DONE被置1。此时,估计坐标可从LOCX和LOCY寄存器读出。定位引擎不产生任何中断请求。在新的结果被计算出来或下一次重新启动之前,估计坐标值在LOCX和LOCY中保持有效。CC2431定位引擎操作流程如图1所示。 2.4 软件编程 下面介绍定位引擎操作的源代码。 void CalcultePostition(LOC_REF_NODE refNodes[LOC_ENGINE_NODE_CAPA],uint a_val,uint n_index,uint *locX,uint *locY) { 结语 本文主要介绍了带定位引擎的射频芯片CC2431,重点介绍了其定位引擎的使用方法。CC2431是一款真正的片上系统(SoC)解决方案,它针对无线传感器网络ZigBee/IEEE 802.15.4,具有定位检测引擎,可以实现3 m左右或更高的定位精度,有效降低了ZigBee节点成本;并且结合了市场领先的ZStack ZigBee协议软件,提供了市场上最具竞争力的ZigBee解决方案。在未来几年内,其应用必将扩展到更多领域。 参考文献 [1] CC2430 PRELIMINARY Data Sheet . Rev.1.03,2005. |