This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2538-CC2592发射功率设置为最大问题

Other Parts Discussed in Thread: TIMAC, CC2530, Z-STACK

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