Tool/software:
We are working with the CC1311P3 on a custom board designed based on your reference design for the 433 MHz band. We are configuring the following parameters on the RX_ADV_CMD with unlimited RX using a partial buffer read mechanism.
rfc_CMD_PROP_RX_ADV_t RF_cmdPropRxAdv_cst =
{
.commandNo = 0x3804,
.status = 0x0000,
.pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,//0x1,//0x0,
.startTrigger.triggerNo = 0x0,//0x3,//0x3,//0x2,//0x0,
.startTrigger.pastTrig = 0x1,//0x1,//0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.pktConf.bFsOff = 0x0,
.pktConf.bRepeatOk = 0x1,
.pktConf.bRepeatNok = 0x1,
.pktConf.bUseCrc = 0x0,
.pktConf.bCrcIncSw = 0x0,
.pktConf.bCrcIncHdr = 0x0,
.pktConf.endType = 0x0,//0x0,
.pktConf.filterOp = 0x0,
.rxConf.bAutoFlushIgnored = 0x0,
.rxConf.bAutoFlushCrcErr = 0x0,
.rxConf.bIncludeHdr = 0x0,
.rxConf.bIncludeCrc = 0x0,
.rxConf.bAppendRssi = 0x0,
.rxConf.bAppendTimestamp = 0x0,
.rxConf.bAppendStatus = 0x0,
.syncWord0 = 0xFEFEFEFE,
.syncWord1 = 0xFEFEFEFE,
.maxPktLen = 0x0,
.hdrConf.numHdrBits = 0x0,
.hdrConf.lenPos = 0x0,
.hdrConf.numLenBits = 0x0,
.addrConf.addrType = 0x0,
.addrConf.addrSize = 0x0,
.addrConf.addrPos = 0x0,
.addrConf.numAddr = 0x0,
.lenOffset = 0x00,
.endTrigger.triggerType = 0x1,//0x1,//0x0,
.endTrigger.bEnaCmd = 0x0,//0x1,//0x0,
.endTrigger.triggerNo = 0x3,//0x0,//0x3,//0x1,//0x2,//0x0, 0x2 = 11 packet miss 0x0 = 31 packet miss
.endTrigger.pastTrig = 0x0,//0x0,//0x1,
.endTime = 0x00000000,
.pAddr = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
.pQueue = 0, // INSERT APPLICABLE POINTER: (dataQueue_t*)&xxx
.pOutput = 0 // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
};
RF_cmdPropRxAdv_cst.pNextOp = (uint8_t *)&RF_cmdPropRxAdv_cst;
// Run cmd trigger
rfPostHandle = RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropRxAdv_cst,
RF_PriorityNormal, &ReceivedOnRFcallback,
RF_EventRxEntryDone);
Observed behavior.
-
We are reading 63 bytes of data continuously, triggered by the RX done interrupt.
-
The transmitter is sending 50-byte packets every 30 ms, periodically.
-
After a few seconds of successful reception, we start observing out-of-sync behavior.
-
In a random fashion, a few packets are correctly decoded, but then continuous noise is received even though transmitter sending data.
Constraints:
-
The receiver does not know the packet length in advance.
-
Hence, we are using RX_ADV mode with
maxPktLen = 0
to allow partial reads. - And we are not aware of periodicity of data transmission by transmitter.
Could you please advise on the correct usage of RX_ADV mode with partial buffer reading for our use case? Specifically:
-
Are we missing any critical configuration for unlimited RX with unknown packet length?
-
Is there any recommendation for avoiding out-of-sync conditions or maintaining packet alignment?
-
Should we configure or handle synchronization loss detection manually when using
maxPktLen = 0
? -
Do we need to explicitly flush or reset the RX buffer periodically?
Thanks,
Theiv B