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.

[参考译文] CC1312R7:修改了 rfUARTBridge 示例

Guru**** 2482225 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1205687/cc1312r7-modified-rfuartbridge-example

器件型号:CC1312R7

您好!

我´ve 修改了 rfUARTBridge 示例、使其具有传感器节点和收集器(PAN 协调器)。
因此、收集器始终等待传感器节点发送的数据包。

除了传输/接收顺序外、两侧的结构几乎相同。

传感器节点发送数据包、收集器接收数据包并分析一些字节、1秒(需要很长的测试时间)后将数据包发送回传感器。

收集器不会停止、但传感器 在从收集器接收数据包时不会设置 RF_EventRxEntryDone 位。

´m´m 都是一样的,我不会找到我犯了错的地方。

I´m 在传感器处执行操作的顺序为:
rfHandle = rf_open (&rfObject、&rf_prop、(RF_RadioSetup*)&RF_cmdPropRadioDivSetup、&rfParams);

RF_postCmd (rfHandle、(RF_Op*)和 RF_cmdfs、RF_PriorityNormal、NULL、0);

rfPostHandle = RF_postCmd (rfHandle、(RF_Op*)&RF_cmdPropRx、RF_PriorityNormal、&ReceivedOnRFcallback、RF_EventRxEntryDone);

while (1){

  检索= 3;

  while (检索){

   RecRF = 0;

   /*取消正在进行的命令= RX 命令连接程序在您转接时执行*/
   rfStatus = rf_cancelCmd (rfHandle、rfPostHandle、1);

   /*发送数据包*/
   RF_runCmd (rfHandle、(RF_Op*)和 RF_cmdPropTx、RF_PriorityHigh、NULL、0);

    /*恢复 RF RX */
    rfPostHandle = rf_postCmd (rfHandle、(RF_Op*)&RF_cmdPropRx、
                              RF_PriorityNormal、
                              ReceivedOnRFcallback (&ReceivedOnRFcallback)
                              RF_EventRxEntryDone);

    等待一个信标

    如果信标超时,检索--

   否则{

     检索= 0;

    去睡觉…

   }

void ReceivedOnRFcallback (RF_Handle h、RF_CmdHandle ch、RF_EventMask e)

       IF (E 和 RF_EventRxEntryDone)
       {
         /*获取当前未处理的数据条目*/
         currentDataEntry = RFQueue_getDataEntry ();//从条目加载数据

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

         recrf = 1;

         if (*(uint8_t*)(&currentDataEntry -> data + 1)==(uint8_t)((node_address & 0xFF00)>> 8))
         {
            if (*(uint8_t*)(&currentDataEntry -> data + 2)==(uint8_t)(node_address 和0x00FF))
            {
              /*将有效负载+状态字节复制到数据包变量*/
              memcpy (packet、packetDataPointer、(packetLength + 1));
              //设置信号量
              SemaphoreP_POST (semPcktIn);
           }
         }

         /*将读取条目指针移动到下一个条目*/
        RFQueue_nextEntry();
     }
}

"e"值始终为2、从不是  RF_EventRxEntryDone
可以有人帮助我吗?
谢谢你

安德烈

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

    无法告诉您完整的代码示例存在什么问题、我们可以运行它来查看故障情况。

    请提供完整的修改 rfUArtBridge.c 文件、说明如何操作才能使其失败。

    Br

    Siri.

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

    谢谢 Siri。

    如何发送此回复中的文件? 我没n´t。

    谢谢

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

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

    你好、Siri、谢谢。
    我是n´t 了解如何附加文件。
    此致

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

    您没有在传感器代码中设置队列、因此当接收到数据包时、RX 将以错误8Status =0x3801)退出。

    您没有这样做:

     if(RFQueue_defineQueue(&dataQueue,
                                    rxDataEntryBuffer,
                                    sizeof(rxDataEntryBuffer),
                                    NUM_DATA_ENTRIES,
                                    MAX_LENGTH + NUM_APPENDED_BYTES))
        {
            /* Failed to allocate space for all data entries */
            while(1);
        }

    Siri.

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

    谢谢 Siri。

    此致

    安德烈