3346|0

3238

帖子

5

TA的资源

五彩晶圆(中级)

楼主
 

Zstack设置发送功率(CC2530) [复制链接]

在mac_radio.c中找到macRadioSetTxPower函数,其具体内容复制如下:

#ifndef HAL_MAC_USE_REGISTER_POWER_VALUES
MAC_INTERNAL_API void macRadioSetTxPower(uint8 txPower)
{
  halIntState_t  s;
#if defined MAC_RUNTIME_CC2591 || defined MAC_RUNTIME_CC2590
  const uint8 CODE *pTable = macRadioDefsTxPwrTables[macRadioDefsRefTableId >> 4];
#elif defined HAL_PA_LNA || defined HAL_PA_LNA_CC2590
  const uint8 CODE *pTable = macRadioDefsTxPwrTables[0];
#else
  const uint8 CODE *pTable = macRadioDefsTxPwrBare;
  //该table中含有txPower的设置值,将该table的首地址赋给指针pTable,
  //macRadioDefsTxPwrBare[]定义在mac_radio_defs.c中
#endif

  if ((int8)txPower > (int8)pTable[MAC_RADIO_DEFS_TBL_TXPWR_FIRST_ENTRY])
  {
   
    txPower = pTable[MAC_RADIO_DEFS_TBL_TXPWR_FIRST_ENTRY];//发送功率上限值
  }
  else if ((int8)txPower < (int8)pTable[MAC_RADIO_DEFS_TBL_TXPWR_LAST_ENTRY])
  {
   
    txPower = pTable[MAC_RADIO_DEFS_TBL_TXPWR_LAST_ENTRY];//发送功率下限值
  }

  HAL_ENTER_CRITICAL_SECTION(s);

  {
    uint8 index = pTable[MAC_RADIO_DEFS_TBL_TXPWR_FIRST_ENTRY] - txPower
      + MAC_RADIO_DEFS_TBL_TXPWR_ENTRIES;
    reqTxPower = pTable[index];
  }
  //通过计算转换查表index,得到发送功率值,将其赋给reqTxPower,
  //函数macRadioUpdateTxPower中用于更新发送功率

  HAL_EXIT_CRITICAL_SECTION(s);

  macRadioUpdateTxPower();
}
#else
MAC_INTERNAL_API void macRadioSetTxPower(uint8 txPower)
{//直接获得reqTxPower
  halIntState_t  s;

  HAL_ENTER_CRITICAL_SECTION(s);
  reqTxPower = txPower;
  HAL_EXIT_CRITICAL_SECTION(s);

  macRadioUpdateTxPower();
}
下面了解一下macRadioUpdateTxPower函数,其函数体如下:

MAC_INTERNAL_API void macRadioUpdateTxPower(void)
{
  halIntState_t  s;

  HAL_ENTER_CRITICAL_SECTION(s);//进入临界区
  if (reqTxPower != macPhyTxPower)//macPhyTxPower即为当前实际的发送功率
  {
   
    if (!macRxOutgoingAckFlag && !MAC_TX_IS_PHYSICALLY_ACTIVE())
    //当有发送任务正在进行时,不能改变发送功率。
    //当前的发送任务完成后,将重新调用该函数进行发送功率设置。
    {
     
      macPhyTxPower = reqTxPower;
      MAC_RADIO_SET_TX_POWER(macPhyTxPower);//设置寄存器TXPOWER为macPhyTxPower,即reqTxPower
    }
  }
  HAL_EXIT_CRITICAL_SECTION(s);//离开临界区
}
通过上面的函数,我们根据自己的需要,适当对发送功率进行设置。
此帖出自无线连接论坛
点赞 关注
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表