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.

[参考译文] CC1350:持续低于1GHz 的接收数据包

Guru**** 2562610 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/884816/cc1350-receivng-packet-continously-sub-ghz

器件型号:CC1350

在一个 cc1350电路板上、我将 Tx 命令链接到自己以进行持续传输、并且我需要将 Rx 命令链接到自己、以便在我最初仅在初始化时调用 RF_postcmd ()时能够连续接收、 但是、无论它是保持活动状态还是产生0x3801错误、它都无法成功接收到、那么可以将 Rx 命令链接到自己吗?

#define MaxArraySize_SubGHz     255                          //无线电将接受的最大长度字节
#define NUM_DATA_ENTRIES        2                            //注意:目前仅支持两个数据条目
#define NUM_SUBSTED_Bytes      2                            //数据条目数据字段将包含:

#if defined (__TI_Compiler_version__)
#pragma DATA_ALIGN (rxDataEntryBuffer、4);                    // pragma 需要确保此缓冲区是4字节对齐的(RF 内核的要求)
静态 uint8_t rxDataEntryBuffer[rf_queue_data_entry_buffer_size (
       num_data_entries、MaxArraySize_SubGHz、NUM_apped_Bytes)];
#endif

extern dataQueue_t            dataQueue;
extern RFC_dataEntryGeneral_t* currentDataEntry;

                       CC1350_Config_LevX.RF_cmdPropRx->condition.rule= 0x0;
                       CC1350_Config_LevX.RF_cmdPropRx->pNextOp (RFC_radioOP_t*)&RF_cmdPropRx;
                       CC1350_Config_LevX.RF_cmdPropRx->startTrigger.triggerType= trig_now;
                       CC1350_Config_LevX.RF_cmdPropRx->startTrigg.PastTrig= 1;
                       CC1350_Config_LevX.RF_cmdPropRx->StartTime= 0x0;
                       CC1350_Config_LevX.RF_cmdPropRx->rxConf.bAutoFlushIgnored = 1;//丢弃来自 Rx 队列的已忽略的数据包*/
                       CC1350_Config_LevX.RF_cmdPropRx->rxConf.bAutoFlushCrcErr = 1;//丢弃来自 Rx 队列的 CRC 错误数据包*/
                       CC1350_Config_LevX.RF_cmdPropRx->maxPktLen = MaxArraySize_SubGHz;//实施数据包长度过滤以避免 PROP_ERROR_RXBUF */
                       CC1350_Config_LevX.RF_cmdPropRx->pktConf.bRepeatOk = 0;
                       CC1350_Config_LevX.RF_cmdPropRx->pktConf.bRepeatNok = 1;
                       CC1350_Config_LevX.RF_cmdPropRx->endTrigger.triggerType= trig_REL_start;
                       CC1350_Config_LevX.RF_cmdPropRx->EndTime= RF_convertMsToRatTicks(1000);
                       CC1350_Config_LevX.RF_cmdPropRx->endTrigg.PastTrig= 1;

       CC1350_Config_LevX.RF_cmdPropRx->pQueue=&dataQueue;
       CC1350_Config_LevX.RF_cmdPropRx->maxPktLen= MaxArraySize_SubGHz;

rf_postCmd (rfHandle、(rf_Op*)&rf_cmdPropRx、rf_PriorityNormal、NULL、0);

currentDataEntry= RFQueue_getDataEntry();
packetDataPointer=(uint8_t*)(&currentDataEntry->data );//获取当前未处理的数据条目*/

                       memcpy (COMM_RX_Array_Level、packetDataPointer (MaxArraySize_SubGHz));                           //复制有效载荷
                       ArraytoStruct_Ver1();
                       RFQueue_nextEntry();


                       

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

    您好、Nada、

    理论上是的。 不过、我建议您在"rfPacketRx"示例中查看如何执行该操作、因为您可以设置 RX 命令、即使在收到数据包后也能继续运行。 作为基线、您只需设置"bRepeatOk"、它将在接收到 OK 数据包后再次启动。

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

    这没有解决问题、但我用另一个名称复制了 Rx 命令、并使下一个操作指针指向复制的操作、它正常工作。 当我执行您所说的操作时、Rx 命令保持在活动状态、而其状态没有任何变化。

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

    这是预期行为、它将保持活动状态、直到被取消或失败。 您仍然会以"RXEntryDOn"事件的形式收到数据包通知、您可以将其挂起(或在回调中捕获)。

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

    我不使用中断、我轮询 Rx cmd 的状态、但我现在有问题。 当我在 CCS 上暂停 Rx 板上的系统时、RF cmd 状态不是每次执行此操作时都会显示0x3801错误、而是在大多数时间、甚至是在我断开并重新连接 Rx 板时。

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

    此外、当我复位时、当我突然复位 Tx 板时、也会发生这种行为

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

    您无需使用回调、只需在命令事件上挂起即可。 链接 RX 命令并不是实现连续 RX 的最佳方法、因为您会在接收过程中遇到漏洞。  

    该错误表明您必须排小队列缓冲区才能接收到的包裹。

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

    如何放大队列缓冲区?

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

    或者、当我突然暂停 RX 板时、如何避免出现此类错误?

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

    您粘贴了上面使用的定义、这些是设置射频队列时也使用的定义、对吧? (检查您的代码)

    我非常建议您查看有关如何使用射频队列进行接收的基本射频驱动器示例。 您的代码似乎只是发布了 RX 命令、然后它开始在队列中插入而不检查任何类型的状态。

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

    您好,Neda,我也在尝试从发送器连续接收数据包- CC1350 -,您的代码不完全正确,您需要下载 SDR 以查看传输的数据包如何发送到接收器。 我的意思是查看它的数据-数据包数据.. 然后决定编写您的函数..  

    例如,您如何知道您的数据包丢失而不正确,我的意思是发送的数据包不正确? 如果您运行 SmartRF Studio,您会发现它可以决定此项。 因此,不使用 SmartRF Studio .. 您可以决定您的数据包是否正常? 如果是这样,您将如何确定您的数据包是否正常.. 您看哪一位?

    非常感谢