Tool/software:
We are working on CC1311P3 custom PHY configuration where we have observed issue on frequency deviation configuring as 2 KHz.
-
Frequency Deviation: 2 kHz
-
Preamble: 1-bit
-
Sync Word: 4 bytes
-
RX mode:
rx_adv
withmaxLength = 0
(defaulting to 2047 bytes) -
Transmission Pattern: 27.5 ms of data, 5 ms gap, followed by another 27.5 ms of data, and so on.
-
Communication from the CC1311P3 TX to a reference device (presumably another modem) works correctly.
-
However, communication between two CC1311P3 devices fails with this configuration.
-
If I increase the frequency deviation on the TX side alone to 2.5 kHz or 2.75 kHz, the RX side can decode some packets, but:
-
Some packets are still missing.
-
The received data appears shifted/misaligned in subsequent packets.
-
-
Why is communication failing between two CC1311P3s with the 2 kHz deviation, while it works with the reference device?
-
Why does increasing the deviation slightly allow partial reception but introduces data misalignment?
-
Are there known limitations or tolerances in the demodulator when operating at such low frequency deviations (e.g., 2 kHz)?
-
Is there any special configuration or workaround required to ensure robust reception between CC1311P3 devices at low deviation?
// CFG
rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t RF_cmdPropRadioDivSetup_cst_above_430 =
{
.commandNo = 0x3807,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.modulation.modType = 0x1,//0x0049,
.modulation.deviation = 0x8,//0x8,//0x8,
.modulation.deviationStepSz = 0x0,
.symbolRate.preScale = 0xF,
.symbolRate.rateWord = 0x3127,//0xC4A,//0x3127,
.symbolRate.decimMode = 0x0,
.rxBw = 0x4C,
.preamConf.nPreamBytes = 0x0,
.preamConf.preamMode = 0x0,
.formatConf.nSwBits = 0x20,
.formatConf.bBitReversal = 0x1,
.formatConf.bMsbFirst = 0x0,
.formatConf.fecMode = 0x0,
.formatConf.whitenMode = 0x0,
.config.frontEndMode = 0x0,
.config.biasMode = 0x1,
.config.analogCfgMode = 0x0,
.config.bNoFsPowerUp = 0x0,
.config.bSynthNarrowBand = 0x0, // Setting NarrowBand as 0 specifies operating freq range above 430MHz
.txPower = 0x003F,//0x26CC,//0x20C9,//0x46DA,//0x58E0,//0x003F,//0x0EC2,
.pRegOverride = pOverrides_cst_above_430,
.centerFreq = 0x01D5,//0x01B3 - CH1,//0x01D6 - CH2,
.intFreq = 0x8000,
.loDivider = 0x0A,
.pRegOverrideTxStd = 0,
.pRegOverrideTx20 = 0
};
// post cmd of RX ADV
rfPostHandle = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdPropRxAdv_cst,
RF_PriorityNormal, &ReceivedOnRFcallback,
RF_EventRxEntryDone);
And reading the rx data using partial read buffer.
Thanks,
Theiv B.