主题中讨论的其他器件:CC1312R7
大家好!
发送和接收数据速率有一个恰好/2的差异。 我的计算过程如下:
- 两个系统上都安装了1秒计时器。
- callbak 中断是在我的 RF_runCmd 命令中定义的。 并且此回调函数会在发送/接收完成时进行处理。
-每次调用回调时,我都会在变量中收集接收和发送的数据。
-我将每1秒收集的这些值除以常数 dt 并乘以8以将它们转换为位。
-在结果中,传输被发现在1mbits ,而 Rx 保持在500kbits。 该速率始终相同。
无法在接收器上接收与发送的数据完全相同的数据。 并且会造成严重损耗。 RECEIVE_Thread 如下所示:
receive_thread;
static RF_Object RFObject; static RF_Handle rfHandle; static rfc_dataEntryPointer_t rxEntry; static dataQueue_t dataQueue; static rfc_dataEntryGeneral_t *currentDataEntry; uint8_t packetLength; uint8_t *packetDataPointer; void *rf_receiverThread(void *arg0) { RFQueue_defineQueue,rxDataEntryBuffer,sizeof(rxDataEntryBuffer),NUM_DATA_ENTRIES,MAX_LENGTH+NUM_APPEND_BYTES)); RF_cmdPropRxAdv.pQueue = &dataQueue; RF_cmdPropRxAdv.rxConf.bAutoFlushIgnored = 1; RF_cmdPropRxAdv.rxConf.bAutoFlushCrcErr = 1; RF_cmdPropRxAdv.maxPktLen = MAX_LENGTH; RF_cmdPropRadioDivSetup.formatConf.bMsbFirst = 0; RF_cmdPropRadioDivSetup.formatConf.whitenMode = 0; rfHandle = RF_open(&rfObject, &RF_propFs, RF_PriorityNormal, NULL, 0); RF_postCmd(rfHandle,(RF_Op*)&RF_cmdFs,RF_PriorityNormal,NULL,0); while(1) { RF_runCmd(rfHandle,(RF_Op*)&RF_cmdPropRxAdv,RF_PriorityNormal,&callback,RF_EventRxEntryDone); } void callback(RF_handle h,RF_CmdHandle ch, RF_EventMask e) { if (e & RF_EventRxEntryDone) { currentDataEntry = RFQueue_getDataEntry(); packetLength = *(uint8_t)(¤tDataEntry->data); packetDataPointer = (uint8_t *)(¤tDataEntry->data+1); memcpy(packet,packetDataPointer,packetLength+1); RFQueue_nextEntry(); // todo: calculation data_rate += packetLength; } } }
辛塞莱里