主题中讨论的其他器件:SysConfig
工具与软件:
我正在尝试开发一种能够连续侦听900MHz 频段并注册接收到的 RSSI 的应用。
我知道我可以使用像"RSSIout = rxStatistics.lastRssi;"这样的方法、但(根据我当前对 TI 架构的理解)这种方法的问题是、它只显示通过 CRC 校验的数据包的 RSSI 的值。
我想要找到一种方法来注册原始 RSSI 值、而不管其 CRC 状态如何。
是否可以使用 SysConfig 关闭 CRC?
是否有类似的例子?
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.
工具与软件:
我正在尝试开发一种能够连续侦听900MHz 频段并注册接收到的 RSSI 的应用。
我知道我可以使用像"RSSIout = rxStatistics.lastRssi;"这样的方法、但(根据我当前对 TI 架构的理解)这种方法的问题是、它只显示通过 CRC 校验的数据包的 RSSI 的值。
我想要找到一种方法来注册原始 RSSI 值、而不管其 CRC 状态如何。
是否可以使用 SysConfig 关闭 CRC?
是否有类似的例子?
要读取 RSSI、您可以使用 RF_getRssi 函数。 有关详细信息、请参阅射频驱动器文档:
读取 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 };
要使用该命令、需要将其从 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)调用频率合成器;
我希望这至少可以节省你的一些时间,这花了我一段时间去搞清楚。