微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 带定位引擎的射频芯片CC2431

带定位引擎的射频芯片CC2431

时间:03-11 来源:互联网 点击:

定为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;iLOC_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;iLOC_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解决方案。在未来几年内,其应用必将扩展到更多领域。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top