CC2431的无线定位引擎及其应用改进 |
2008-5-14 11:48:00 宋保业 供稿 |
| 引 言 CC2431是TI公司推出的带硬件定位引擎的片上系统(SoC)解决方案,能满足低功耗ZigBee/IEEE 802.15.4无线传感器网络的应用需要。CC2431定位引擎基于RS-SI(Received Signal Strength Indicator,接收信号强度指示)技术,根据接收信号强度与已知参考节点位置准确计算出有关节点位置,然后将位置信息发送给接收端。相比于集中型定位系统,RSSI功能降低了网络流量与通信延迟,在典型应用中可实现3~5 m定位精度和0.25 m的分辨率。本文在简述基于RSSI定位技术的基础上,详细介绍CC2431无线定位引擎的功能、特点及使用方法,并且针对CC2431无线定位引擎定位范围小和只能进行二维定位的不足之处给出了改进方法。 1、RSSI定位技术 2、CC2431无线定位引擎 2.1 定位引擎 ![]() 2.2 RSSI参数 CC2431包含一个RSSI寄存器,此寄存器保留与上述相同的值,但它并不锁定,因此寄存器值不能用于进一步的计算。只有与接收到的数据相关的被锁定的RSSI值才能认为是接收数据时获得的正确RSSI测量值。 RSSI的理论值可以由式(1)表示: RSSI=-(10n·lgd+A) (1) 射频参数n被定义为路径损失指数,它指出了信号能量随着到收发器距离的增加而衰减的速率。衰减与d-n成比例,这里d是发射器和接收器之间的距离。实际写入定位引擎的参数n是一个通过查表得到的整数索引值n_index,如表2所列。 ![]() 例如,通过测量得到n=2.98,查表得到最接近的有效值为3.00,相应的索引值是13。因此,整数13作为参数n写入定位引擎中。参数n以[0,31]之间的整数索引写入定位引擎,索引用整数表示。如n=7写入为000000111,n的典型值是13。 2.3 参考节点数量 2.4 定位算法 可用于软件操作的算法很多,例如在图1所示的区域中,在X、Y方向上每隔30 m放置一个参考节点,图中白色节点为盲节点,其他节点为参考节点。第1步,确定具有最高RSSI值的一个节点并计算一个补偿值,使之“移动”到64 m×64 m范围的中心。由于已知来自此节点的RSSI值,所以到此节点的距离很容易得到。第2步,确定除“最强”节点之外的其他使用节点,即图中黑色节点。所有节点用第1步中的补偿值进行修正。第3步,所有获得值送人定位引擎最终读出结果位置。最后一步,将补偿值添加到计算位置中。完成这些计算之后,盲节点在全局网格中的位置就确定了。 ![]() 2.5 软件操作 定位引擎运行时需要输入3~8个参考坐标。参考坐标是以m为单位的,它表示各个参考节点的位置,其数值位于0~63.75,最高精度为0.25 m,以最低2位为小数部分,剩余6位为整数部分。参考坐标存放于RF寄存器REFCOORD中。在写入REFCOORD之前,寄存器LOCENG的第1位LOCENG.REFLD必须写入1,用于指示一组参考坐标将要被写入。一旦坐标写入过程开始(LO-CENG.REFLD=1),8对坐标必须一次性写入。当定位引擎使用少于8个参考坐标时,要将未用的参考坐标写入0.0。 RSSI值在[-40 dBm,-95 dBm]之间,精度为0.5dBm,写入值中应去掉负号。如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]顺序写入MEASIARM寄存器,任何未使用的位必须写0。10个参数全部写完之后,LOCENG.PARLD必须写入0。 参数坐标和测量参数写入之后,通过把寄存器LOCENG第0位LOCENG.RUN写入1启动定位估计计算。通常,LOCENG.RUN被置1后的1 200个系统周期之后,LOCENG的第3位LOCENG.DONE被置1。此时,估计坐标可从LOCX和LOCY寄存器读出。定位引擎不产生任何中断请求。在新的结果被计算出来或下一次重新启动之前,估计坐标值在LOCX和LOCY中保持有效。 下面给出一个简单的定位引擎操作函数: ![]() 定位引擎操作流程如图2所示。 ![]() 3、存在问题及改进 结 语 |





