主题中讨论的其他器件: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;
}
}
}
辛塞莱里

