微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > keyfob demo cc2540发射功率设置与范围问题

keyfob demo cc2540发射功率设置与范围问题

时间:10-02 整理:3721RD 点击:

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

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几乎是没什么差别的.

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就可以?

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 );                                                                // 如果你定义了回调处理函数, 就在这里调用处理
                                  }
                     }

Hi Yan,

    你的解答让我受益匪浅,不过在看程序和CC2540数据手册的时候,仅看到-23dbm、-6dbm、0dbm、4dbm四个级别,

而且也没找到射频发射功率设置相关的寄存器,不知道是我没找到相关的数据手册还是TI对这部分屏蔽了,只是提供库函数调用来设置。

    期待你的解惑

    

    

can,

过奖。

只有这几档可以调节。

Yan,

谢谢你的回答,另外,不知道可否通过寄存器直接设置?

can,

不可以。

254x的BLE模式下没有寄存器可以让你配置发射功率。

Yan,

好的,谢谢你的回答

Yan,

好的,谢谢你的回答

can,

不客气。

你好,我最近在做一个蓝牙定位的项目,用到cc2540

请问一下,有哪些有助开发的软件或者硬件或者文档资料

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top