大家好、
我有一个基于 cc1312R 的定制板。 我有具有1000字节长度(一个数据包)的 RF_Buffer。 我每8秒将该缓冲器传输到接收器一次。 RF_buffer 仅包含固定数字。
我能够在大约4分钟内发送该缓冲区。 对于一分钟7-8数据包、 完全可以发送28-30数据包。 但之后不再有传输。 因为程序不再进入 txtaskfunction 内部。
我使用此参数。
#define TX_STACK_SIZE 512
PAYLOAD_LENGTH = 1000
unsigned char rf_Buffer[PAYLOAD_LENGTH+2];
void txTaskFunction(UArg arg0, UArg arg1)
{
uint16_t index_2;
uint32_t RFtime;
RF_Params rfParams;
RF_Params_init(&rfParams);
if( RFQueue_defineQueue(&dataQueue,
rxDataEntryBuffer,
sizeof(rxDataEntryBuffer),
NUM_DATA_ENTRIES,
MAX_LENGTH + NUM_APPENDED_BYTES))
{ while(1);}
RF_cmdPropTxAdv.pktLen = PAYLOAD_LENGTH+2;
RF_cmdPropTxAdv.pPkt = RF_Buffer;
RF_cmdPropTxAdv.startTrigger.triggerType = TRIG_ABSTIME;
RF_cmdPropTxAdv.startTrigger.pastTrig = 1;
if (!rfHandle){
rfHandle = RF_open(&rfObject, &RF_prop, (RF_RadioSetup*)&RF_cmdPropRadioDivSetup, &rfParams);
RF_postCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0);
}
RFtime = RF_getCurrentTime();
while(1)
{
Semaphore_pend(semTxHandle, BIOS_WAIT_FOREVER);
{
RF_Buffer[1]=(uint8_t)(PAYLOAD_LENGTH >> 8);
RF_Buffer[0]=(uint8_t)(PAYLOAD_LENGTH);
for(index_2 = 2; index_2 < PAYLOAD_LENGTH+2; index_2 ++)
{
RF_Buffer[index_2] = ALL_Buffer[index_2-2];
}
RF_Buffer[1000]='\r';
RF_Buffer[1001]='\n';
RFtime += PACKET_INTERVAL;
RF_cmdPropTxAdv.startTime = RFtime;
RF_EventMask result = RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropTxAdv, RF_PriorityNormal, NULL, 0);
if (!(result & RF_EventLastCmdDone))
{ while(1);}
}
memset(RF_Buffer, 0, sizeof(RF_Buffer));
PIN_setOutputValue(hPin, STA_LED,!PIN_getOutputValue(STA_LED));
}
}
您对此问题有何看法? 它可以阻止数据传输或 在几分钟后进入 txtaskfunction 内部。
谢谢你
BR
Bekir


