分类: 嵌入式
2011-07-20 15:57:54
ZSTACK 中发射功率设置问题
2010-11-4
一:
发现 ZSTACK 里 2530 RF 发射功率 其实并未
被设置成最大 ,而是 0xd5 (1 dbm )
最大可以设置 TXPOWER=0XF5,(4.5dbm) ,设置 位置 在main 函数启动后,
osal_start_system(); // No Return from here 之前
二 :
背景资料:
摘自: http://nt1985.blog.163.com/blog/static/1232562702009629102438544/
发射功率:
传送范围的大小是和发射功率还有信道环境有关, 传送速率和传送范围之间没有直接联系。所以呢,适当的增大发射功率可增大传送范围。但也是有一定的限制的。具体详见datasheet。
在mac_radio_def.h里有可以设置:
#define MAC_RADIO_CHANNEL_DEFAULT 11
#define MAC_RADIO_TX_POWER_DEFAULT 0x1F
#define MAC_RADIO_TX_POWER_MAX_MINUS_DBM 25
这些只是举例说明一下,这些参数的意义,以及在z-stack里的什么地方修改。还有很多其它的参数,可以查看相关的源文件。
[mac_radio_def.h]
#define MAC_RADIO_SET_CHANNEL(x) st( FSCTRLL = FREQ_2405MHZ + 5 * ((x) - 11); )
#define MAC_RADIO_SET_TX_POWER(x) st( TXCTRLL = x; )
#define MAC_RADIO_SET_PAN_ID(x) st( PANIDL = (x) & 0xFF; PANIDH = (x) >> 8; )
mac_radio_def.h 文件位置:
mac_radio.c 位置
mac_radio.c
MAC_INTERNAL_API void macRadioSetTxPower(uint8 txPower)
{
。。。。。。。。。。
reqTxPower = pTable[index];
/* update the radio power setting */
macRadioUpdateTxPower();
}
MAC_INTERNAL_API void macRadioUpdateTxPower(void)
{
macPhyTxPower = reqTxPower;
MAC_RADIO_SET_TX_POWER(macPhyTxPower);
}
mac_radio_defs.h
#define MAC_RADIO_SET_TX_POWER(x) st( TXPOWER = x; )
三
并且通过给程序设置断点 运行发现,ZSTACK 里发射 功率也没有设定成 默认值
默认值在mac_radio_def.h里定义:
#define MAC_RADIO_TX_POWER_DEFAULT 0x1F
而是 0xd5 (1 dbm ),那这是在 哪里 设置的呢?
研究发现
发射功率 由mac_radio.c 里macRadioSetTxPower函数参数txPower 决定
由于我们
无法看到到底是 那里调用了函数macRadioSetTxPower
,所以对 ZSTACK 里发射
功率的设定情况并不清楚。不知道是哪里把
TXPOWER 设置成了0xd5。
所以 最后的解决方案是:
在在main 函数启动后,
osal_start_system(); // No Return from here 之前
设置 TXPOWER=自己想要的值,参见 CC2530 数据手册 第21页