CC2538-CC2592发射功率设置为最大问题
PA_EN LNA_EN HGM三根线连接无误。
参考了CC2538-CC2592手册,想设置TXPOWER=0xFF,让发射功率是最大的,现在遇到了设置问题,找了deyisupport和google也没看到有类似的问题。
1、很多人都会推荐直接在osal_start_system()前面调用macRadioSetTxPower或者ZMacSetTransmitPower设置。试过了,这样在macRadioUpdateTxPower里面打断点是能看到TXPOWER被设置为了0xFF,但是后面OSAL运行之后,在某个地方会osal偷偷调用macRadioSetTxPower两次,自动给设置成默认的0x42了,具体在哪里调用了这个函数,位置没找到。
当然也可以暴力修改macRadioUpdateTxPower函数,让其永远设置为0xFF,但是似乎不妥当。
2、搜索了所有协议栈源代码文件,也没找到调用的地方,那在哪里能找到调用位置呢?
我测试把源码中macRadioSetTxPower函数都修改为别的名字,再编译发现link错误,是TIMAC-CC2538.a报出的错误,难道是在这个黑匣子里调用了,下载了TIMAC代码,也没找到调用位置,如何破?
不知道这个跟CC2530用的一样不,CC2530里面还有个
uint8 value = 0xF5;
MAC_MlmeSetReq(MAC_PHY_TRANSMIT_POWER_SIGNED, &value);
这种用法。
默认TX Power是在cc2538-rf.h内的 #define CC2538_RF_TX_POWER_RECOMMENDED 0xD5 您可以尝试使用 #ifndef CC2538_RF_CONF_TX_POWER #define CC2538_RF_CONF_TX_POWER 0xFF #endif /* CC2538_RF_CONF_CHANNEL */
这个头文件也没找到,宏也没找到,SuSan 您确定是在Z-Stack 3.0 安装后的文件夹里面吗?
是不是问题出现在RX时候,这个应该是一个有个if函数没有进入,找找吧
最后也不算是最好的解决方法了,但是也算是解决了,两步走:
1、修改mac_radio_defs.c中macRadioDefsTxPwrCC2592数组最后一个元素0x42改成0xFF,很奇怪为什么协议栈会默认调用最后一个?
#if defined HAL_PA_LNA_CC2592 || defined MAC_RUNTIME_CC2592 const uint8 CODE macRadioDefsTxPwrCC2592[] = { 22, /* tramsmit power level of the first entry */ (uint8)(int8)8, /* transmit power level of the last entry */ /* 22 dBm */ 0xFF, /* characterized as 22 dBm in datasheet */ /* 21 dBm */ 0xD5, /* characterized as 20.9 dBm in datasheet */ /* 20 dBm */ 0xC5, /* characterized as 20.1 dBm in datasheet */ /* 19 dBm */ 0xB0, /* characterized as 19 dBm in datasheet */ /* 18 dBm */ 0xA1, /* characterized as 17.8 dBm in datasheet */ /* 17 dBm */ 0xA1, /* 16 dBm */ 0x91, /* characterized as 16.4 dBm in datasheet */ /* 15 dBm */ 0x88, /* characterized as 14.9 dBm in datasheet */ /* 14 dBm */ 0x88, /* 13 dBm */ 0x72, /* characterized as 13 dBm in datasheet */ /* 12 dBm */ 0x72, /* 11 dBm */ 0x62, /* characterized as 11 dBm in datasheet */ /* 10 dBm */ 0x58, /* characterized as 9.5 dBm in datasheet */ /* 9 dBm */ 0x58, /* 22 dBm*/ 0xFF, /* characterized as 22 dBm in datasheet */ }; #endif
2、找到mac_radio_defs.h文件中的如下宏,进行修改(不然设置的时候会判断当前值为0xFF,新的也为0xFF,TXPOWER就会设置不成功)
//#define MAC_RADIO_TX_POWER_INVALID 0xFF #define MAC_RADIO_TX_POWER_INVALID 0x42