Z-Stack功率设置相关




问:我在测试Z-stack时发现,如果不加NV_RESTORE这个编译选项的话,那么节点必须靠得比较近才能组网成功。
如果离得较远,就无法组网。请问这是为什么呢?

答:有两项原因限制了zigbee节点的加入网络的距离,一个是默认发射功率为0dbm,另一个是节点加入是要求信号强度-84dbm以上,修改这两个条件可以使用zigbee节点可以在较远的地方加入网络。如果打开NV_Restore并且成功加入过网络,节点可以在小于-84dbm信号强度下通讯,这就是为什么打开nv_restore,可以有较远的距离的原因。


问:如何修改-84dbm这个值?

答:修改mac_spec.h中的MAC_SPEC_ED_MIN_DBM_ABOVE_RECEIVER_SENSITIVITY,将其改为1

/* Threshold above receiver sensitivity for minimum energy detect in dBm (see 6.9.7) */
#define MAC_SPEC_ED_MIN_DBM_ABOVE_RECEIVER_SENSITIVITY 10

另外还要把MAC_SPEC_MIN_RECEIVER_SENSITIVITY,改成-94

/* minimum receiver sensitivity in dBm (see 6.5.3.3) */
#define MAC_SPEC_MIN_RECEIVER_SENSITIVITY -85




 

CC2530 控制输出功率的寄存器是 TXPOWER:Zigbee协议栈(CC2530开发板) 修改发射功率 - 江淮一士 - baly_bao 的博客

推荐功率设置:

Zigbee协议栈(CC2530开发板) 修改发射功率 - 江淮一士 - baly_bao 的博客

协议栈默认的设置是 0xd5,为了扩展信号传输的距离,我把TXPOWER寄存器值改为0xf5, 此时输出功率为4.5dBm.在mac_radio.c文件,做了如下修改:

void macRadioSetTxPower(uint8 txPower)
{
halIntState_t s;

/* if the selected dBm is out of range, use the closest available */
if (txPower > MAC_RADIO_TX_POWER_MAX_DBM)
{
txPower = MAC_RADIO_TX_POWER_MAX_DBM;
}

/*
* Set the global variable reqTxPower. This variable is referenced
* by the function macRadioupdateTxPower() to write the radio register.
*
* A lookup table is used to translate the power level to the register
* value.
*/
HAL_ENTER_CRITICAL_SECTION(s);
reqTxPower = macRadioDefsTxPowerTable[txPower];
HAL_EXIT_CRITICAL_SECTION(s);

/* update the radio power setting */
//************** 自己修改 ******* 
reqTxPower = 0xF5;
//******************************* 
macRadioUpdateTxPower();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值