CC1311P3: Issue observed with Low Frequency Deviation (2 kHz) GFSK Communication Between CC1311P3 Devices

Part Number: CC1311P3


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 with maxLength = 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.

  1. Why is communication failing between two CC1311P3s with the 2 kHz deviation, while it works with the reference device?

  2. Why does increasing the deviation slightly allow partial reception but introduces data misalignment?

  3. Are there known limitations or tolerances in the demodulator when operating at such low frequency deviations (e.g., 2 kHz)?

  4. 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. 

  • Hi,

    It appears your modulation index is too low. Recommend to keep within 0.5 to 1.0.

    i.e. Modulation Index = 2 x f_dev  / data rate

    If you have 19.2 kbps; then your modulation index is only 0.2 with 2 kHz_freq_dev and 0.3 with 2.75 kHz_freq_dev.

    Recommend to increase the fdev to 5 kHz as the minimum.

    Regards,

       Richard