This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1350: MSK modulation setting for CC1350

Part Number: CC1350
Other Parts Discussed in Thread: CC2500, , CC2650, CC2510

Good morning !

At the moment, we are using the cc2500 part, mainly for MSK modulation.

I used a symbol rate of 250kbps on the cc2500.

I wanted to set the CC1350's proprietary mode at 2.4GHz in smartRF studio, but I could not choose it.

How do I set CMD_PROP_RADIO_SETUP, CMD_FS?

Thank you in advance for your help with this matter.

  • It is not possible to set proprietary mode @2.4 GHz in Studio.

    Use the rfPacketRx and rfPacketTx examples in the SDK instead.

    In the smartrf_settings.c file you need to set .rfMode = RF_MODE_PROPRIETARY_2_4 and set the frequency in CMD_PROP_RADIO_DIV_SETUP and CMD_FS.

    For 250 kbps, MSK CC2500 compatible solution you need a special set of overrides to do the modulation. We can help if this is what you need.
  • Thank's Sverre.

    I was testing using the rfPacketRx and rfPacketTx examples.

    However, when I tested it with .rfMode = RF_MODE_PROPRIETARY_2_4, it did not work properly.

    I would appreciate it if you let me know how to set override.

  • Did you remember to change the LoDivider to 2 (in CMD_PROP_RADIO_DIV_SETUP)?
  • LoDivider has been changed to 2.
    The 2.4GHz frequency seems to be output.

    Please tell us a special set of overrides For 250kbps, to use the MSK CC2500 compatible solution.

  • Note: I have only tested this on CC2650, but they should work for CC1350 as-is. Sensitivity (1% PER) is roughly 5 dB better on the CC2650 (CC1350) compared to CC2500.

    RF Settings
    -----------
    // TI-RTOS RF Mode Object
    RF_Mode RF_prop =
    {
    .rfMode = RF_MODE_PROPRIETARY_2_4,
    .cpePatchFxn = &rf_patch_cpe_genfsk,
    .mcePatchFxn = &rf_patch_mce_genfsk,
    .rfePatchFxn = &rf_patch_rfe_genfsk,
    };

    // Overrides for CMD_PROP_RADIO_SETUP
    uint32_t pOverrides[] = {
    MCE_RFE_OVERRIDE(1,0,0,1,0,0),
    HW_REG_OVERRIDE(0x4038,0x34),
    HW_REG_OVERRIDE(0x6088,0x3F1F),
    HW_REG_OVERRIDE(0x608C,0x8213),

    HW32_ARRAY_OVERRIDE(0x405C,1),
    (uint32_t) 0x1801F800,
    HW32_ARRAY_OVERRIDE(0x402C,1),
    (uint32_t) 0x00608402,
    (uint32_t) 0x00000343,
    (uint32_t) 0x000484a3,
    (uint32_t) 0x1c8f0583,
    (uint32_t) 0x1c8f0543,
    (uint32_t) 0x65980603,
    (uint32_t) 0x00020623,
    (uint32_t) 0x659805c3,
    (uint32_t) 0x000205e3,
    (uint32_t) 0x02010403,
    HW32_ARRAY_OVERRIDE(0x4034,1),
    (uint32_t) 0x177F0408,
    (uint32_t) 0x00008463,
    (uint32_t) 0x00388473,
    (uint32_t) 0x00F388a3,

    HW_REG_OVERRIDE(0x50C8, 0x60f7), // Set PDIFLIMITRANGE=1 to avoid
    // frequency sample artifacts
    // causing symbol errors when receiving
    // CC2510 MSK.
    // HW_REG_OVERRIDE(0x50C8, 0x60ff), // Sets also PDIFLINPRED=1
    // This improves sensitivity, but
    // has a negative effect on frequency tolerance.

    /* Custom shaping */
    (uint32_t) 0x00810083, //Enable piecewise shaper
    (uint32_t) 0x001000a3, //Enable piecewise shaper
    (uint32_t) 0x000000c3, //No automatic shape programming
    (uint32_t) 0x000000e3, //No automatic shape programming
    (uint32_t) 0x40064041, //Start shape override
    (uint32_t) 0x0000b19a, //first time value pair valid_until=11, value=410
    (uint32_t) 0x00013199, //second time value pair valid_until=19, value=409
    (uint32_t) 0x00000000, //third time value pair valid_until=0, value=0
    (uint32_t) 0x00000000, //fourth time value pair valid_until=0, value=0
    (uint32_t) 0x00000000, //fifth time value pair valid_until=0, value=0
    (uint32_t) 0x00000000, //sixth time value pair valid_until=0, value=0

    (uint32_t)0xFFFFFFFF,
    };
    rfc_CMD_PROP_RADIO_SETUP_t RF_cmdRadioSetup =
    {
    .commandNo = 0x3806,
    .status = 0x0000,
    .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx
    .startTime = 0x00000000,
    .startTrigger.triggerType = 0x0,
    .startTrigger.bEnaCmd = 0x0,
    .startTrigger.triggerNo = 0x0,
    .startTrigger.pastTrig = 0x0,
    .condition.rule = 0x1,
    .condition.nSkip = 0x0,
    .modulation.modType = 0x0,
    .modulation.deviation = 250,
    .symbolRate.preScale = 0x6,
    .symbolRate.rateWord = 65536,
    .rxBw = 9,
    .preamConf.nPreamBytes = 0x4,
    .preamConf.preamMode = 0x1,
    .formatConf.nSwBits = 0x20,
    .formatConf.bBitReversal = 0x1,
    .formatConf.bMsbFirst = 0x1,
    .formatConf.fecMode = 0x0,
    .formatConf.whitenMode = 0x0,
    .config.frontEndMode = 0x0,
    .config.biasMode = 0x0,
    .config.analogCfgMode = 0x0,
    .config.bNoFsPowerUp = 0x0,
    .txPower = 0x4214,//0x4214 = +1dBm
    .pRegOverride = pOverrides,
    };
  • Thank you for your help.