[csharp] view plain copy
  1. 1.关于MAC_RADIO_TX_POWER_DEFAULT的值和功率的对应关系
[csharp] view plain copy
[csharp] view plain copy
  1. mac_radio_defs.c
[csharp] view plain copy
  1. const uint8 CODE macRadioDefsTxPwrBare[] =
  2. {
  3. 3,  /* tramsmit power level of the first entry */
  4. (uint8)(int8)-22, /* transmit power level of the last entry */
  5. /*   3 dBm */   0xF5,   /* characterized as  4.5 dBm in datasheet */
  6. /*   2 dBm */   0xE5,   /* characterized as  2.5 dBm in datasheet */
  7. /*   1 dBm */   0xD5,   /* characterized as  1   dBm in datasheet */
  8. /*   0 dBm */   0xD5,   /* characterized as  1   dBm in datasheet */
  9. /*  -1 dBm */   0xC5,   /* characterized as -0.5 dBm in datasheet */
  10. /*  -2 dBm */   0xB5,   /* characterized as -1.5 dBm in datasheet */
  11. /*  -3 dBm */   0xA5,   /* characterized as -3   dBm in datasheet */
  12. /*  -4 dBm */   0x95,   /* characterized as -4   dBm in datasheet */
  13. /*  -5 dBm */   0x95,
  14. /*  -6 dBm */   0x85,   /* characterized as -6   dBm in datasheet */
  15. /*  -7 dBm */   0x85,
  16. /*  -8 dBm */   0x75,   /* characterized as -8   dBm in datasheet */
  17. /*  -9 dBm */   0x75,
  18. /* -10 dBm */   0x65,   /* characterized as -10  dBm in datasheet */
  19. /* -11 dBm */   0x65,
  20. /* -12 dBm */   0x55,   /* characterized as -12  dBm in datasheet */
  21. /* -13 dBm */   0x55,
  22. /* -14 dBm */   0x45,   /* characterized as -14  dBm in datasheet */
  23. /* -15 dBm */   0x45,
  24. /* -16 dBm */   0x35,   /* characterized as -16  dBm in datasheet */
  25. /* -17 dBm */   0x35,
  26. /* -18 dBm */   0x25,   /* characterized as -18  dBm in datasheet */
  27. /* -19 dBm */   0x25,
  28. /* -20 dBm */   0x15,   /* characterized as -20  dBm in datasheet */
  29. /* -21 dBm */   0x15,
  30. /* -22 dBm */   0x05    /* characterized as -22  dBm in datasheet */
  31. };
  32. #endif

2.在mac_radio.c中找到macRadioSetTxPower函数(设置功率函数),其具体内容复制如下:

[csharp] view plain copy
  1. #ifndef HAL_MAC_USE_REGISTER_POWER_VALUES
  2. MAC_INTERNAL_API void macRadioSetTxPower(uint8 txPower)
  3. {
  4. halIntState_t  s;
  5. #if defined MAC_RUNTIME_CC2591 || defined MAC_RUNTIME_CC2590
  6. const uint8 CODE *pTable = macRadioDefsTxPwrTables[macRadioDefsRefTableId >> 4];
  7. #elif defined HAL_PA_LNA || defined HAL_PA_LNA_CC2590
  8. const uint8 CODE *pTable = macRadioDefsTxPwrTables[0];
  9. #else
  10. const uint8 CODE *pTable = macRadioDefsTxPwrBare;
  11. //该table中含有txPower的设置值,将该table的首地址赋给指针pTable,
  12. //macRadioDefsTxPwrBare[]定义在mac_radio_defs.c中
  13. #endif
  14. if ((int8)txPower > (int8)pTable[MAC_RADIO_DEFS_TBL_TXPWR_FIRST_ENTRY])
  15. {
  16. txPower = pTable[MAC_RADIO_DEFS_TBL_TXPWR_FIRST_ENTRY];//发送功率上限值
  17. }
  18. else if ((int8)txPower < (int8)pTable[MAC_RADIO_DEFS_TBL_TXPWR_LAST_ENTRY])
  19. {
  20. txPower = pTable[MAC_RADIO_DEFS_TBL_TXPWR_LAST_ENTRY];//发送功率下限值
  21. }
  22. HAL_ENTER_CRITICAL_SECTION(s);
  23. {
  24. uint8 index = pTable[MAC_RADIO_DEFS_TBL_TXPWR_FIRST_ENTRY] - txPower
  25. + MAC_RADIO_DEFS_TBL_TXPWR_ENTRIES;
  26. reqTxPower = pTable[index];
  27. }
  28. //通过计算转换查表index,得到发送功率值,将其赋给reqTxPower,
  29. //函数macRadioUpdateTxPower中用于更新发送功率
  30. HAL_EXIT_CRITICAL_SECTION(s);
  31. macRadioUpdateTxPower();
  32. }
  33. #else
  34. MAC_INTERNAL_API void macRadioSetTxPower(uint8 txPower)
  35. {//直接获得reqTxPower
  36. halIntState_t  s;
  37. HAL_ENTER_CRITICAL_SECTION(s);
  38. reqTxPower = txPower;
  39. HAL_EXIT_CRITICAL_SECTION(s);
  40. macRadioUpdateTxPower();
  41. }
  42. 下面了解一下macRadioUpdateTxPower函数,其函数体如下:
  43. MAC_INTERNAL_API void macRadioUpdateTxPower(void)
  44. {
  45. halIntState_t  s;
  46. HAL_ENTER_CRITICAL_SECTION(s);//进入临界区
  47. if (reqTxPower != macPhyTxPower)//macPhyTxPower即为当前实际的发送功率
  48. {
  49. if (!macRxOutgoingAckFlag && !MAC_TX_IS_PHYSICALLY_ACTIVE())
  50. //当有发送任务正在进行时,不能改变发送功率。
  51. //当前的发送任务完成后,将重新调用该函数进行发送功率设置。
  52. {
  53. macPhyTxPower = reqTxPower;
  54. MAC_RADIO_SET_TX_POWER(macPhyTxPower);//设置寄存器TXPOWER为macPhyTxPower,即reqTxPower
  55. }
  56. }
  57. HAL_EXIT_CRITICAL_SECTION(s);//离开临界区
  58. }
[csharp] view plain copy

3.默认的定义(mac_radio_defs.h)

[csharp] view plain copy
  1. #define MAC_RADIO_CHANNEL_DEFAULT               11  //2440HZ
  2. #define MAC_RADIO_TX_POWER_DEFAULT              0x32

4.对默认值的赋值操作(MAC_RADIO.C)

[csharp] view plain copy
  1. MAC_INTERNAL_API void macRadioInit(void)
  2. {
  3. /* variable initialization for this module */
  4. reqChannel    = MAC_RADIO_CHANNEL_DEFAULT;
  5. macPhyChannel = MAC_RADIO_CHANNEL_DEFAULT;
  6. reqTxPower    = MAC_RADIO_TX_POWER_DEFAULT;
  7. macPhyTxPower = MAC_RADIO_TX_POWER_DEFAULT;
  8. }

CC2530Datasheet中TXPOWER的描述

设置过程

#define MAC_RADIO_TX_POWER_DEFAULT              0x32

macPhyTxPower = MAC_RADIO_TX_POWER_DEFAULT;

MAC_RADIO_SET_TX_POWER(macPhyTxPower);

TI员工给的回复:

设置到0xF5就是最大的。(我的理解macRadioDefsTxPwrBare中对应的数据是TI经过测试后得到的经验值,一些特殊的值。取值的范围是7-bit,在0x05~0xF5之间的数据都是有意义的,0x32在-17~-18dbM之间)

最新版本的协议栈已经没有这个变量了。

功率的配置,一般在协议栈初始化的时候会赋值配置,如果程序里面有需要修改发射功率的话,也可以直接调用这个函数

CC2530设置发射功率相关推荐

  1. cc2540 定频,设置发射功率

    一.定频 1.使用函数 LL_EXT_ModemTestTx( uint8 cwMode, uint8 txFreq ); cwMode - LL_EXT_TX_MODULATED_CARRIER, ...

  2. nrf52832学习笔记(3)设置发射功率

    只要调用下面api就可以设置发射功率 /** @param[in] tx_power Radio transmit power in dBm (accepted values are -40, -30 ...

  3. Zigbee 设置信道,PANID,发射功率

    现对z-stack里几个网络参数的设置以及如何获取总结一下. 信道配置: Zigbee在3个频段定义了27个物理信道:868MHz频段中定义了1个信道,915MHz频段中定义了2个信道,信道间隔为2M ...

  4. ZigBee 设置信道、PANID、发射功率

    现对z-stack里几个网络参数的设置以及如何获取总结一下. 信道配置: Zigbee在3个频段定义了27个物理信道:868MHz频段中定义了1个信道,915MHz频段中定义了10个信道,信道间隔为2 ...

  5. Zigbee 设置信道,PANID,发射功率现对z-stack里几个网络参数的设置以及如何获取总结一下。

    Zigbee 设置信道,PANID,发射功率现对z-stack里几个网络参数的设置以及如何获取总结一下. 信道配置: Zigbee在3个频段定义了27个物理信道:868MHz频段中定义了1个信道,91 ...

  6. IAR建立CC2530工程的设置问题及生成.hex文件

    这篇是转载过来的,其实设置都差不多: 利用IAR建完一个工程后,进行设置如下:这里以CC2430为例子,CC2530设置也差不多. 选择 Project 菜单下的Options 配置与 CC2430 ...

  7. DW1000 TX POWER (发射功率) 解析

    DW1000 TX POWER (发射功率) 解析 寄存器地址0x1E用于设置射频的发射功率. 一般说来,我们会将发射功率设置在最大,因为功率越大,发射的距离越远.但在某些情况下会减少发射功率,例如在 ...

  8. ESP32 BLE 学习:关于 RSSI 与发射功率

    ESP32 BLE 学习:关于 RSSI 与发射功率 文章目录 ESP32 BLE 学习:关于 RSSI 与发射功率 蓝牙发射功率 RSSI(接收的信号强度指示) API 函数设置和获取 发射功率 蓝 ...

  9. NRF52832学习笔记(38)——修改发射功率

    一.背景 蓝牙接收信号强度 RSSI 的直接影响因素就是蓝牙信号的发射功率.发射功率就是你所使用的设备(开发板.手机)所发射出来给主机或从机设备的信号强度.同时在实际应用当中,时常也需要修改蓝牙的发射 ...

最新文章

  1. 使用python对学生表的查询_多表组合查询——Python操作Mysql数据库
  2. APUE学习笔记-11.5线程终止
  3. SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具
  4. php重载,PHP重载基础知识回顾
  5. SAP Cloud Application Programming 介绍(2021 更新版)
  6. springmvc请求返回一个字符_SpringMVC系列之Web利器SpringMVC
  7. VS2010常用快捷键自定义
  8. 视频理解新方向:时域语言定位 综述
  9. Linux 定时任务详解
  10. 学习微服务网关zuul,看这篇就够了
  11. 有监督学习,无监督学习,半监督学习和强化学习
  12. Coherence缓存学习
  13. 含泪整理最优质马壁纸素材,你想要的这里都有
  14. SpringBoot整合(四)整合Ehcache、Redis、Memcached、jetcache、j2cache缓存
  15. 深入理解编译注解(三)依赖关系 apt/annotationProcessor与Provided的区别
  16. [Chrome] 超级好用的网页保存插件
  17. 什么是前端的核心竞争力
  18. 第十三届蓝桥杯大赛软件赛省赛(Java 大学B组)
  19. [Excel] excel随机填充内容/文本/数字
  20. WebCollector下载整站页面(JAVA网络爬虫)

热门文章

  1. 黑匣子解密要多久_专家解如何破译黑匣子 黑匣子不是唯一解密途径
  2. HTTP的认证方式之DIGEST 认证(摘要认证)
  3. 【Unity3d教程】如何让NavMesh上的载具和车辆能像现实一样优雅地掉头和转向
  4. 2.0 ros2常用命令与git指令
  5. svg地球昼夜交替动画js特效
  6. mysql中一些日期函数及用法
  7. redis缓存技术学习 www.iigrowing.cn/redis-huan-cun-ji-shu-xue-xi.html
  8. Jhost免费jsp服务器发布项目简析
  9. 如何找到WordPress 主题开发人员
  10. 不明导弹袭击夏威夷!一场38分钟的惊魂