带定位引擎的射频芯片CC2431.docx
带定位引擎的射频芯片CC2431CC2431是TI公司推出的带硬件定位引擎的片上系统(SoC)解决方案,能够满足低功耗ZigBee/IEEE802.15.4无线传感器网络的应用需要。CC2431定位引擎基于RSSI技术,根据接收信号强度与已知参考节点位置准确计算出有关节点位置,然后将位置信息发送给接收端。相比于集中型定位系统,RSSI功能减小了网络流量与通信延迟,在典型应用中可实现35m定位精度和0.25m的分辨率。1CC2431的主要特点CC2431片上系统(SoC)由CC2430加上Motorola公司基于IEEE802.15.4标准的无线定位引擎组成,具有2.4GHzDSSS(直接序列扩频)射频收发器核心和高效的8051控制器。其中,MCU包括存储器及其外围,其他模块提供电源管理、时钟分配和测试等重要功能。CC2431的设计结合了8KB的RAM及强大的外围模块,并且有3种不同的版本。它们根据不同的闪存空间32KB、64KB和128KB来优化复杂度与成本。CC2431的尺寸只有7mm×7mm的48脚封装,采用具有内嵌闪存的0.18mCMOS标准技术。针对协议栈、网络和应用软件执行时对MCU处理能力的要求,CC2431包含一个增强型工业标准的8位8051微控制器内核,运行时钟为32MHz。CC2431还包含一个DMA控制器,可以减少8051微控制器内核对数据的传送操作,因此提高了芯片整体的性能。在CC24318KB静态RAM中的4KB是超低功耗SRAM。32KB、64KB或128KB的片内Flash块提供在线可编程非易失性存储器。CC2431集成了4个振荡器用于系统时钟和定时操作,以及用于用户自定义应用的外设;具有4个定时器,此外,还集成了实时时钟、上电复位、8通道814位ADC等其他外设,并带有语音和定位跟踪引擎。CC2431的主要特点如下:定位引擎能精确计算网络中节点位置;具有高性能、低功耗的8051控制器核;集成符合IEEE802.15.4标准的2.4GHzRF无线收发机(具有工业领先的CC2420射频内核);优良的无线接收灵敏度和强大的抗干扰能力;128KB可编程闪存,8KBRAM,4KB带全部功耗模式数据保持功能;强大的DMA功能;极少的外部元器件;低电流损耗(微控制器运行于32MHz时,接收和发射分别为27mA和25mA);休眠模式时仅0.9A电流损耗,外部中断或RTC能唤醒系统;待机模式下小于0.6A电流损耗,外部中断能唤醒系统;低功耗模式与主动模式之间的快速切换;硬件支持CSMA/CA功能;较宽的电压范围(2.03.6V);数字化的RSSI/LQI支持;具有电池监测和温度传感器;多达8路输入的814位模/数转换;集成AES128安全协处理器;带有2个功能强大的支持多组协议的USART;集成看门狗定时器;具有1个符合IEEE802.15.4规范的MAC计时器,1个常规的16位计时器和2个8位计时器;21个普通I/O引脚,其中2个具有20mA的驱动能力;支持硬件调试,具有强大灵活的开发工具。2CC2431的定位引擎操作CC2431和CC2430是引脚兼容的,除定位引擎之外,CC2430的MCU和RF部分与CC2431完全相同。为避免重复,本文重点介绍CC2431的定位引擎。定位引擎用于估算无线网络中节点的位置。通常参考节点坐标已知,其他需要估计坐标的节点为“盲节点。进行定位估计时,定位引擎需要获得38个参考节点的坐标值以及其他测量参数,定位引擎计算后的输出是一个节点的估计坐标。在定位引擎运行之前,必须使能定位引擎寄存器LOCENG的第4位LOCENG.EN。当要停止定位引擎运行时,应往LOCENG.EN写入0关断引擎的时钟信号,从而降低CC2431的功耗。对定位引擎的操作主要就是对与定位引擎有关的寄存器的操作。下面详细说明各部分的操作。2.1参考坐标定位引擎运行时需要38个参考坐标输入。参考坐标以m为单位表示各个参考节点的位置,其数值位于063.75,最高精度为0.25m,以最低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表示的距发射器1m接收到的平均能量绝对值。若平均接收能量为-40dBm,那么参数A被定为40。定位引擎期望参数A为30.050.0,精度为0.5。参数A用无符号定点数值给出,最低位为小数位,而其余各位为整数位,一个典型值为40.0。射频参数n被定义为路径损失指数,它指出了信号能量随着到收发器距离的增加而衰减的速率。衰减与d-n成比例,这里,d是发射器和接收器之间的距离。实际写入定位引擎的参数n是一个可通过查表得到的整数索引值,如表1所列。表1参数n查询表500)this.width=500"border=0>例如,通过测量得到n=2.98,查表得到最接近的有效值为3.000,相应的索引值是13。因此,整数13作为参数n写入到定位引擎中。参数n以0,31之间的整数索引写入定位引擎,索引用整数表示。如n=7,即写入000000111。n的典型值是13。RSSI值是相应于一组参考坐标的RSSI测量值。RSSI值为-40dBm,-95dBm,精度为0.5dBm,写入值中应去掉负号。如RSSI的值为-50.35dB,则写入到定位引擎中为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后的1200个系统周期之后,LOCENG的第3位LOCENG.DONE被置1。此时,估计坐标可从LOCX和LOCY寄存器读出。定位引擎不产生任何中断请求。在新的结果被计算出来或下一次重新启动之前,估计坐标值在LOCX和LOCY中保持有效。CC2431定位引擎操作流程如图1所示。500)this.width=500"border=0>图1定位引擎操作流程2.4软件编程下面介绍定位引擎操作的源代码。voidCalcultePostition(LOC_REF_NODErefNodesLOC_ENGINE_NODE_CAPA,uinta_val,uintn_index,uint*locX,uint*locY)uinti;/启动定位引擎LOC_DISABLE();LOC_ENABLE();/使能LOC_REFERENCE_LOAD,准备写入参考坐标LOC_REFERENCE_LOAD(TRUE);/写入参考坐标for(i=0;i<LOC_ENGINE_NODE_CAPACITY;i+)REFCOORD=refNodesi.x;RERCOORD=refNodesi.y;/参考坐标写入完成LOC_REFERENCE_LOAD(FALSE);/使能LOC_PARAMETER_LOAD,准备写入测量参数LOC_PARAMETER_LOAD(TRUE);MEASPARM=a_val;MEASPARM=n_index;for(i=0;i<LOC_ENGINE_NODE_CAPACITY;i+)MEASPARM=refNodesi.rssi;/测量参数写入完成LOC_PARAMETER_LOAD(FALSE);/启动定位估计计算LOC_RUN();/等待完成后读出坐标值while(!LOC_DONE();*locX=LOCX;*locY=LOCY;/关闭定位引擎LOC_DISABLE();结语本文主要介绍了带定位引擎的射频芯片CC2431,重点介绍了其定位引擎的使用方法。CC2431是一款真正的片上系统(SoC)解决方案,它针对无线传感器网络ZigBee/IEEE802.15.4,具有定位检测引擎,可以实现3m左右或更高的定位精度,有效降低了ZigBee节点成本;并且结合了市场领先的ZStackZigBee协议软件,提供了市场上最具竞争力的ZigBee解决方案。在未来几年内,其应用必将扩展到更多领域。参考文献1CC2430PRELIMINARYDataSheet.Rev.1.03,2005.2CC2431PRELIMINARYDataSheet.Rev.1.0,2007.1