CC2530发射功率及其设置

前言:朱杰师兄实验中获取的是接收信号强度,发射强度由硬件及程序本身确定,并不在数据包中,实验要求获取发射功率作为事件的初始强度(非事件节点获取的的为该事件受影响强度),另外发射功率决定了传输距离,以后可能会用到,所以搜集了有关CC2530发射功率的资料。

CC2530发射功率可编程范围:4.5dBm~-27.5dBm,Z-Stack可设置范围:-22dBm~+3dBm,发射功率和设置值的对应关系在工程文件mac\low_level下的mac_radio_defs.c中的 const uint8 CODE macRadioDefsTxPwrBare[]中定义,该常量数组并只包含部分建议值,只要取值在最大值0xF5和最小值0x05之间均有效。注意:发射功率与消耗功率不同,消耗功率远大于发射功率(射频输出功率),因为RF发射器(CC2520)本身要消耗能量以产生射频信号,比如输出0dBm的无线信号需要29mA电流,3.3V下约为100mW,而0dBm=1mW。

不同版本的ZStack发射功率设置方式及默认值不同:

1)ZStack-CC2530-2.3.0-1.4.0及以前版本设定方法:在工程文件COMPONENTS\mac\low_level下的mac_radio_defs.h文件中设置初始值

#define MAC_RADIO_CHANNEL_DEFAULT               11  //2440HZ
#define MAC_RADIO_TX_POWER_DEFAULT              0x32 //约为-17dBm

一般在协议栈初始化的时候会按初始值配置发射功率,如果程序里面需要修改发射功率,可按以下方式:

并在工程文件mac\low_level下的mac_radio.c的MAC_INTERNAL_API void macRadioSetTxPower(uint8 txPower) 函数中完成赋值设置,该函数调用被封装屏蔽,函数中在临界区通过语句reqTxPower = txPower;将txPower赋值给reqTxPower,然后调用macRadioUpdateTxPower()函数更新发射功率,操作语句为:

macPhyTxPower = reqTxPower;

MAC_RADIO_SET_TX_POWER(macPhyTxPower);//设置寄存器TXPOWER为macPhyTxPower

所以调整发射功率三种方法:

1.修改初始值#define MAC_RADIO_TX_POWER_DEFAULT              0x32

2.修改macRadioSetTxPower()函数中的 reqTxPower为欲设定值,协议栈会自动调用该函数设定发射功率

3.在应用中自行调用macRadioSetTxPower()函数设置发射功率。

2)ZStack-CC2530-2.3.0-1.4.0以后的高版本增加了对CC2533芯片的支持,其发射功率范围为-21dBm~+4dBm,设定方法为:

新版本中工程文件mac\high_level下多了mac_pib.c文件,用以设置发射功率初始值,并去掉了MAC_RADIO_TX_POWER_DEFAULT变量。mac_pib.c文件中的static CODE const macPib_t macPibDefaults变量有以下 语句:

#if defined (HAL_PA_LNA)
19,                                         /* phyTransmitPower for CC2591 */
#elif defined (HAL_PA_LNA_CC2590)
11,                                         /* phyTransmitPower for CC2590 */
#else
0,

分别19、11、0对应功放CC2591、CC2590、不带功放的默认发射功率,单位为dBm值,可在这里完成初始值的修改。

此外新版本仍可以通过调用macRadioSetTxPower函数来修改发射功率

你可能感兴趣的:(ZigBee)