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.

[参考译文] RTOS/CC1350:读取CC1350中最后一个数据包的RSSI值

Guru**** 2573695 points
Other Parts Discussed in Thread: CC1350

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/617859/rtos-cc1350-reading-rssi-value-of-last-packet-in-cc1350

部件号:CC1350

工具/软件:TI-RTOS

全部,

我正在研究CC1350 Launchpad的Tx/Rx示例。 我正在使用rfPacketRx_CC1350._nortos_CCS接收数据包。 是否有人可以帮助获取上次接收的数据包的RSSI值?

void *mainThread(void *arg0)

UART_Params uartParams;

RF_Params rfParams;
rf_params_init(&rfParams);

UART_INIT();

/*创建数据处理关闭的UART。 */
UART_PARAM_INIT (&uartParams);
uartParams.writeDataMode = UART_DATA_binary;
uartParams.writeMode = UART_MODE_callback;
uartParams.writeCallback = uartCallback;
uartParams.baudrate = 11.52万;
UART = UART_OPEN (Board_UART0,&uartParams);

/* LED针脚开路*/
ledPinHandle = PIN_OPEN (&ledPinState,PinTable);
IF (ledPinHandle ==空)

同时(1);
}

IF( RFQueue_DefineQueue(&dataQueue,
rxDataEntryBuffer,
sizeof(rxDataEntryBuffer),
num_data_entries,
max_length + NUM_appended_bytes))

/*无法为所有数据条目分配空间*/
同时(1);
}

/*修改CMD_PROP_RX命令以满足应用程序需求*/
RF_cmdProprx.pQueue =&dataQueue;/*设置接收数据的数据实体队列*/
rf_cmdProprx.rxConf.bAutoFlushIgnored =1;/*丢弃Rx队列中忽略的数据包*/
rf_cmdProprx.rxConf.bAutoFlushCrcErr =1;/*丢弃Rx队列中带有CRC错误的数据包*/
RF_cmdPropRx.rxConf.bAppendRssi = 1;/*在Rx数据包队列中追加RSSI */
RF_cmdPropRx.rxConf.bAppendTimestamp =1;/*在Rx数据包队列中附加RSSI */

RF_cmdProprx.maxPktLen = MAX_LENG;/*实施数据包长度过滤以避免PROP_ERROR_RXBUF */
RF_cmdProprx.pktConf.bRepeatOk = 1;
RF_cmdProprx.pktConf.bRepeatNok = 1;

/*请求访问对讲机*/
rfHandle = RF_OPEN (&rfObject,&RF_prop,(RF_RadioSetup*)&RF_cmdPropRadioDivSetup,&rfParams);

/*设置频率*/
RF_postCmd (rfHandle,(RF_Op*)&RF_cmdF,RF_PriorityNormal,NULL,0);

/*进入RX模式并永久保持RX */
RF_runCmd (rfHandle,(RF_Op*)&RF_cmdPropRx,RF_PriorityNormal,&callback,IRQ_RX_Entry_Done);

同时(1);
}

void callback (RF_handle h,RF_CmdHandle ch,RF_EventMask e)

IF (E和RF_EventRxEntryDone)

RecRSSI = RF_getRssi (h);

/*切换引脚以指示RX */
PIN_setOutputValue (ledPinHandle,Board_PIN_LED2,!PIN_getOutputValue (Board_PIN_LED2));

/*获取当前未处理的数据输入*/
currentDataEntry = RFQueue_getDataEntry ();

/*处理分组数据,位于&currentDataEntry -> data:
*-长度是当前配置的第一个字节
*-数据从第二个字节*/开始
packetLength =*(uint8_t*)(&currentDataEntry -> data);
packetDataPointer =(uint8_t*)(&currentDataEntry -> data +1);

/*将有效负载+状态字节复制到数据包变量*/
memcpy (packet,packetDataPointer,(packetLength + 1));

RFQueue_nextEntry();
}
}

*************

我正在获取 所有数据包的RecRSSI值128。 我认为缺少了一些东西。  

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

    您好Dhaval:  

    RSSI值为128表示RSSI无效。 您正在使用回调函数中的RF_getRssi读取RSSI。 请注意,调用回调时,数据包将结束,因此您看到的RSSI无效。 当数据包仍处于无线状态时,您将看到有效的RSSI值。 如果您打算读取接收到的数据包的RSSI值,您可以将RSSI信息附加到接收到的数据包。 有关详细信息,请参阅此主题

    此致,

    Prashanth