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的主要特点如下:
◇ 定位引擎能精确计算网络中节点位置;
◇ 具有高性能、低功耗的8051控制器核;
◇ 集成符合IEEE 802.15.4标准的2.4 GHz RF无线收发机(具有工业领先的CC2420射频内核);
◇ 优良的无线接收灵敏度和强大的抗干扰能力;
◇ 128 KB可编程闪存,8 KB RAM,4 KB带全部功耗模式数据保持功能;
◇ 强大的DMA功能;
◇ 极少的外部元器件;
◇ 低电流损耗(微控制器运行于32 MHz时,接收和发射分别为27 mA和25 mA);
◇ 休眠模式时仅0.9 μA电流损耗,外部中断或RTC能唤醒系统;
◇ 待机模式下小于0.6 μA电流损耗,外部中断能唤醒系统;
◇ 低功耗模式与主动模式之间的快速切换;
◇ 硬件支持CSMA/CA功能;
◇ 较宽的电压范围(2.0~3.6 V);
◇ 数字化的RSSI/LQI支持;
◇ 具有电池监测和温度传感器;
◇ 多达8路输入的8~14位模/数转换;
◇ 集成AES128安全协处理器;
◇ 带有2个功能强大的支持多组协议的USART;
◇ 集成看门狗定时器;
◇ 具有1个符合IEEE 802.15.4规范的MAC计时器,1个常规的16位计时器和2个8位计时器;
◇ 21个普通I/O引脚,其中2个具有20 mA的驱动能力;
◇ 支持硬件调试,具有强大灵活的开发工具。
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所示。
图1 定位引擎操作流程
2.4 软件编程
下面介绍定位引擎操作的源代码。
void CalcultePostition(LOC_REF_NODE refNodes[LOC_ENGINE_NODE_CAPA],uint a_val,uint n_index,uint *locX,uint *locY) {
uint i;
//启动定位引擎
LOC_DISABLE();
LOC_ENABLE();
//使能LOC_REFERENCE_LOAD,准备写入参考坐标
LOC_REFERENCE_LOAD(TRUE);
//写入参考坐标
for(i=0;i<LOC_ENGINE_NODE_CAPACITY;i++) {
REFCOORD=refNodes[i].x;
RERCOORD=refNodes[i].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=refNodes[i].rssi;
}
//测量参数写入完成
LOC_PARAMETER_LOAD(FALSE);
//启动定位估计计算
LOC_RUN();
//等待完成后读出坐标值
while(!LOC_DONE());
*locX=LOCX;
*locY=LOCY;
//关闭定位引擎
LOC_DISABLE();
}
结语
本文主要介绍了带定位引擎的射频芯片CC2431,重点介绍了其定位引擎的使用方法。CC2431是一款真正的片上系统(SoC)解决方案,它针对无线传感器网络ZigBee/IEEE 802.15.4,具有定位检测引擎,可以实现3 m左右或更高的定位精度,有效降低了ZigBee节点成本;并且结合了市场领先的ZStack ZigBee协议软件,提供了市场上最具竞争力的ZigBee解决方案。在未来几年内,其应用必将扩展到更多领域。