TI论坛
直播中

王静

7年用户 684经验值
私信 关注
[问答]

请问cc2540的发射功率范围是多少DBM?

目前我们所做的方案,需要能手动设置不同的发射功率,请问cc2540的发射功率范围是多少DBM?还有我们在软件里面设置时,是对txPwrLevel值进行修改就可以呢还是调用其他函数?另外我在软件里看到接口函数HCI_EXT_SetTxPowerCmd,此函数是否就是设置发射功率的,如是,但参数里只定义了4个级别,不够我们调节所用,有无其他函数接口?

回帖(11)

华农武

2020-3-23 08:12:54
Hi Wang wx,
发射功率范围就是-23dBm 到 +4dBm. 默认设置的是0dBm, 这个在代码里面也有体现.
相信你说的是proximity profile里面的"txPwrLevel" 变量, 如果你用的是keyfob, 这个只是用来发nofity告诉比如IOS的APP目前Keyfob的发射功率是多大, 设置这个不会起改变RF发射功率的作用.
你说的没错, HCI_EXT_SetTxPowerCmd()就是用来设置发射功率的. 而且只有这个函数. 但是只有-23dbm, -6dbm, 0 dbm, +4dbm四个级别. 不知道你所要的范围是怎么样的? 不过, 比如说, -6dbm跟-10dbm几乎是没什么差别的.
举报

王静

2020-3-23 08:25:44
引用: 骑猪去天山 发表于 2020-3-23 11:55
Hi Wang wx,
发射功率范围就是-23dBm 到 +4dBm. 默认设置的是0dBm, 这个在代码里面也有体现.
相信你说的是proximity profile里面的"txPwrLevel" 变量, 如果你用的是keyfob, 这个只是用来发nofity告诉比如IOS的APP目前Keyfob的发射功率是多大, 设置这个不会起改变RF发射功率的作用.

Hi Yan,
    谢谢解答,你的回答对我非常有用,另外 在keyfob里面有如下定义:
// GAP Role Callbacks
static gapRolesCBs_t keyFob_PeripheralCBs =
[
  peripheralStateNotificationCB,  // Profile State Change Callbacks
  NULL                // When a valid RSSI is read from controller
];
我想在此添加函数来获得RSSI值,该怎么做?是否在我的函数里直接调用HCI_ReadRssiCmd就可以?
举报

华农武

2020-3-23 08:36:38
引用: linlin10 发表于 2020-3-23 12:08
Hi Yan,
    谢谢解答,你的回答对我非常有用,另外 在keyfob里面有如下定义:
// GAP Role Callbacks

Hi Wang wx,
这个NULL的位置是个回调函数.当你调用HCI_ReadRssiCmd()获取RSSI值的时候, 最终这个如果不是NULL的话就会被调用. 
被调用的位置请看peripheral.c 中的 "gapRole_ProcessOSALMsg() ".
case HCI_GAP_EVENT_EVENT:                                                                                           // 判断是否是HCI event 
     if ( pMsg->status == HCI_COMMAND_COMPLETE_EVENT_CODE )                       // 是否HCI command complete event, 当调用HCI_ReadRssiCmd()
                                                                                                                                                       // 读取RSSI命令, 会有HCI command complete event 从controller返回
              if ( pPkt->cmdOpcode == HCI_READ_RSSI )                                                         // 是否为读取RSSI命令的 command complete event 返回
                     if ( (gapRole_state == GAPROLE_CONNECTED) && (rssi != RSSI_NOT_AVAILABLE) )       // 如果处于连接状态, 而且返回的RSSI值有效
                     [
                                  // Report RSSI to app                                                
                                  if ( pGapRoles_AppCGs && pGapRoles_AppCGs->pfnRssiRead )                              // 这里就判断你所提结构体里面那个回调是否为NULL
                                  [
                                         pGapRoles_AppCGs->pfnRssiRead( rssi );                                                                // 如果你定义了回调处理函数, 就在这里调用处理
                                  ]
                     ]
举报

陈珂瑾

2020-3-23 08:53:00
引用: 骑猪去天山 发表于 2020-3-23 11:55
Hi Wang wx,
发射功率范围就是-23dBm 到 +4dBm. 默认设置的是0dBm, 这个在代码里面也有体现.
相信你说的是proximity profile里面的"txPwrLevel" 变量, 如果你用的是keyfob, 这个只是用来发nofity告诉比如IOS的APP目前Keyfob的发射功率是多大, 设置这个不会起改变RF发射功率的作用.

Hi Yan,
    你的解答让我受益匪浅,不过在看程序和CC2540数据手册的时候,仅看到-23dbm、-6dbm、0dbm、4dbm四个级别,
而且也没找到射频发射功率设置相关的寄存器,不知道是我没找到相关的数据手册还是TI对这部分屏蔽了,只是提供库函数调用来设置。
    期待你的解惑
    
    
举报

更多回帖

发帖
×
20
完善资料,
赚取积分