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.

[参考译文] CC1352P7:如何在不依赖于数据包信息的情况下进行直接 RSSI 测量? (低于1GHz)

Guru**** 2394185 points
Other Parts Discussed in Thread: SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1391199/cc1352p7-how-to-do-a-direct-rssi-measurement-without-relying-on-the-packet-information-subghz

器件型号:CC1352P7
主题中讨论的其他器件:SysConfig

工具与软件:

我正在尝试开发一种能够连续侦听900MHz 频段并注册接收到的 RSSI 的应用。

我知道我可以使用像"RSSIout = rxStatistics.lastRssi;"这样的方法、但(根据我当前对 TI 架构的理解)这种方法的问题是、它只显示通过 CRC 校验的数据包的 RSSI 的值。
我想要找到一种方法来注册原始 RSSI 值、而不管其 CRC 状态如何。

是否可以使用 SysConfig 关闭 CRC?

是否有类似的例子?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    要读取 RSSI、您可以使用  RF_getRssi 函数。 有关详细信息、请参阅射频驱动器文档:

    无线电软件捆绑包(rflib) API (TI.com)

    读取 RSSI、对讲机需要处于 RX 模式、这意味着必须首先发出 RX 命令。

    如果目的只是读取 RSSI、而不必接收任何数据包、则应使用 CMD_RX_TEST 而不是正常的 RX 命令。

    无法在 SysConfig 中关闭 CRC、因此必须在应用程序中设置此项:

    RF_cmdPropRx.pktConf.bUseCrc = 0x0;

    Siri

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答、您能多解释一下我如何发出 CMD_RX_TEST 吗?

    我搜索了 TI 资源、但找不到 API 来发出 CMD_RX_TEST? 您发出这个宏究竟是什么意思?

     我还发现了 宏的定义:

      285 #define CMD_RX_TEST                                             0x0807
      286 struct __RFC_STRUCT rfc_CMD_RX_TEST_s {
      288    uint16_t commandNo;                  
      289    uint16_t status;                     
      290    rfc_radioOp_t *pNextOp;              
      293    ratmr_t startTime;                   
      294    struct {
      295       uint8_t triggerType:4;            
      296       uint8_t bEnaCmd:1;                
      297       uint8_t triggerNo:2;              
      299       uint8_t pastTrig:1;               
      300    } startTrigger;                      
      302    struct {
      303       uint8_t rule:4;                   
      304       uint8_t nSkip:4;                  
      305    } condition;
      306    struct {
      307       uint8_t bEnaFifo:1;               
      308       uint8_t bFsOff:1;                 
      310       uint8_t bNoSync:1;                
      312    } config;
      314    struct {
      315       uint8_t triggerType:4;            
      316       uint8_t bEnaCmd:1;                
      317       uint8_t triggerNo:2;              
      319       uint8_t pastTrig:1;               
      320    } endTrigger;                        
      322    uint32_t syncWord;                   
      323    ratmr_t endTime;                     
      324 };


    不过、我不知道我应该在哪个 API 中调用此结构体。 我只能猜测 它可能 是" rf_runCmd "?

    此外、根据 rfPacketRx.c 示例、我似乎需要调用类似 RF_cmdTestRx 的函数、但我找不到这样的函数。

    您能进一步说明一下吗?

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    要使用该命令、需要将其从 SysConfig 中导出:

    您可以按如下所示使用它:

    rxHandle = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdRxTest, RF_PriorityNormal, NULL, 0);
    
        rssi= RF_GET_RSSI_ERROR_VAL;
        do
        {
            rssi = RF_getRssi(rfHandle);
        } while (rssi == RF_GET_RSSI_ERROR_VAL);
    
        RF_cancelCmd(rfHandle, rxHandle, 0);
    

    Siri

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有些人可能希望开发类似的应用、但他们像我一样对 TI 没有任何经验:


    除上述内容外、您还需要另外两件事:

    1)使用  rfHandle = rf_open (&rfObject、&rf_prop、(RF_RadioSetup*)&rf_cmdPropRadioDivSetup&rfParams)创建 RF 句柄对象;
    2)接下来、使用  RF_postCmd (rfHandle、(RF_Op*)&RF_cmdFs、RF_PriorityNormal、NULL、0)调用频率合成器;


    我希望这至少可以节省你的一些时间,这花了我一段时间去搞清楚。