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.

CC1352P: WoR Mode with 5kps phy settings

Part Number: CC1352P

Trying to implement  WOR with 5 kbps SimpleLink Long Range settings.

WOR works for 50kps , but WOR Rx fails on receive when switching to 5 kbps long range settings.

Using CC1352p custom based board, and my goal is to have maximum range on Tx , and minimum power consumption on Rx site.

With WOR managed to reduce power consumption on Rx  to 250uA compare to 6mA w/o WOR. 

How can use WOR with 5kps phy settings ?

  • Hi,

    We will look into it and get back to you ASAP. Please bear with us.

    Thanks,

    PM

  • Hi,

    Please find attached custom modified radio settings Changed settings to 5kbps LRM expect RX filter BW which kept at 98Khz.

    If reduced RX filter BW to 34.1 ( Which is the default value for 5kbps) , Tx fails.  ( Can't received on launchpad using smartRF studio).

    How RX filter BW value affects Tx ?

    If keep  RX filter BW at 98Khz, Do I still increase range just by reducing baud rate from 50kbps to 5kbps ?

  • Attached syscfg

    MWR400.txt
    /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --device "CC1352P1F3RGZ" --package "RGZ" --part "Default" --product "simplelink_cc13x2_26x2_sdk@3.40.00.02"
     * @versions {"data":"2020021217","timestamp":"2020021217","tool":"1.4.0+1234","templates":"2020021217"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const CCFG     = scripting.addModule("/ti/devices/CCFG");
    const GPIO     = scripting.addModule("/ti/drivers/GPIO", {}, false);
    const GPIO1    = GPIO.addInstance();
    const GPIO2    = GPIO.addInstance();
    const GPIO3    = GPIO.addInstance();
    const GPIO4    = GPIO.addInstance();
    const GPIO5    = GPIO.addInstance();
    const GPIO6    = GPIO.addInstance();
    const GPIO7    = GPIO.addInstance();
    const GPIO8    = GPIO.addInstance();
    const GPIO9    = GPIO.addInstance();
    const GPIO10   = GPIO.addInstance();
    const GPIO11   = GPIO.addInstance();
    const GPIO12   = GPIO.addInstance();
    const GPIO13   = GPIO.addInstance();
    const I2C      = scripting.addModule("/ti/drivers/I2C", {}, false);
    const I2C1     = I2C.addInstance();
    const NVS      = scripting.addModule("/ti/drivers/NVS", {}, false);
    const NVS1     = NVS.addInstance();
    const RF       = scripting.addModule("/ti/drivers/RF");
    const RTOS     = scripting.addModule("/ti/drivers/RTOS");
    const TRNG     = scripting.addModule("/ti/drivers/TRNG");
    const TRNG1    = TRNG.addInstance();
    const Timer    = scripting.addModule("/ti/drivers/Timer", {}, false);
    const Timer1   = Timer.addInstance();
    const UART     = scripting.addModule("/ti/drivers/UART", {}, false);
    const UART1    = UART.addInstance();
    const UART2    = UART.addInstance();
    const easylink = scripting.addModule("/ti/easylink/easylink");
    
    /**
     * Write custom configuration values to the imported modules.
     */
    CCFG.enableBootloader        = true;
    CCFG.dioBootloaderBackdoor   = 15;
    CCFG.levelBootloaderBackdoor = "Active low";
    CCFG.xoscCapArrayDelta       = 0x0;
    CCFG.ccfgTemplate.$name      = "ti_devices_CCFGTemplate0";
    
    GPIO1.$name             = "CONFIG_GPIO_BTN1";
    GPIO1.interruptTrigger  = "Rising Edge";
    GPIO1.gpioPin.$assign   = "DIO_27";
    GPIO1.pinInstance.$name = "CONFIG_PIN_8";
    
    GPIO2.$name             = "CONFIG_GPIO_INT_ACC";
    GPIO2.interruptTrigger  = "Both Edges";
    GPIO2.gpioPin.$assign   = "DIO_8";
    GPIO2.pinInstance.$name = "CONFIG_PIN_9";
    
    GPIO3.$name             = "CONFIG_GPIO_INT_AL";
    GPIO3.pull              = "Pull Up";
    GPIO3.interruptTrigger  = "Falling Edge";
    GPIO3.gpioPin.$assign   = "DIO_9";
    GPIO3.pinInstance.$name = "CONFIG_PIN_10";
    
    GPIO4.$name             = "CONFIG_GPIO_INT_VOX";
    GPIO4.interruptTrigger  = "Both Edges";
    GPIO4.gpioPin.$assign   = "DIO_10";
    GPIO4.pinInstance.$name = "CONFIG_PIN_11";
    
    GPIO5.$name             = "CONFIG_GPIO_INT_EXPANDER";
    GPIO5.interruptTrigger  = "Both Edges";
    GPIO5.gpioPin.$assign   = "DIO_18";
    GPIO5.pinInstance.$name = "CONFIG_PIN_12";
    
    GPIO6.$name             = "CONFIG_GPIO_FS_VBUS";
    GPIO6.interruptTrigger  = "Both Edges";
    GPIO6.gpioPin.$assign   = "DIO_26";
    GPIO6.pinInstance.$name = "CONFIG_PIN_13";
    
    GPIO7.$name             = "CONFIG_GPIO_SENS_IN_BF";
    GPIO7.interruptTrigger  = "Rising Edge";
    GPIO7.gpioPin.$assign   = "DIO_22";
    GPIO7.pinInstance.$name = "CONFIG_PIN_14";
    
    GPIO8.$name             = "CONFIG_GPIO_SENS_IN_BF2";
    GPIO8.interruptTrigger  = "Falling Edge";
    GPIO8.gpioPin.$assign   = "DIO_15";
    GPIO8.pinInstance.$name = "CONFIG_PIN_15";
    
    GPIO9.$name             = "CONFIG_GPIO_INT_TILT";
    GPIO9.pull              = "Pull Up";
    GPIO9.interruptTrigger  = "Falling Edge";
    GPIO9.gpioPin.$assign   = "DIO_14";
    GPIO9.pinInstance.$name = "CONFIG_PIN_16";
    
    GPIO10.$name             = "CONFIG_GPIO_INT_RTC";
    GPIO10.pull              = "Pull Up";
    GPIO10.interruptTrigger  = "Falling Edge";
    GPIO10.gpioPin.$assign   = "DIO_25";
    GPIO10.pinInstance.$name = "CONFIG_PIN_17";
    
    GPIO11.$name             = "CONFIG_GPIO_BAT_OFF";
    GPIO11.mode              = "Output";
    GPIO11.outputStrength    = "High";
    GPIO11.gpioPin.$assign   = "DIO_23";
    GPIO11.pinInstance.$name = "CONFIG_PIN_18";
    
    GPIO12.mode              = "Output";
    GPIO12.$name             = "CONFIG_GPIO_VEXT_EN";
    GPIO12.gpioPin.$assign   = "DIO_20";
    GPIO12.pinInstance.$name = "CONFIG_PIN_19";
    
    GPIO13.$name              = "CONFIG_GPIO_CEL_PWRON";
    GPIO13.mode               = "Output";
    GPIO13.initialOutputState = "High";
    GPIO13.gpioPin.$assign    = "DIO_11";
    GPIO13.pinInstance.$name  = "CONFIG_PIN_20";
    
    I2C1.$name                = "CONFIG_I2C_0";
    I2C1.i2c.$name            = "MyI2C1";
    I2C1.i2c.$assign          = "I2C0";
    I2C1.i2c.sdaPin.$assign   = "DIO_5";
    I2C1.i2c.sclPin.$assign   = "DIO_21";
    I2C1.sdaPinInstance.$name = "CONFIG_PIN_0";
    I2C1.clkPinInstance.$name = "CONFIG_PIN_1";
    
    NVS1.$name                    = "CONFIG_NVS_0";
    NVS1.internalFlash.$name      = "ti_drivers_nvs_NVSCC26XX0";
    NVS1.internalFlash.regionBase = 0x48000;
    NVS1.internalFlash.regionSize = 0x8000;
    
    RF.globalEventMask       = ["RF_GlobalEventRadioPowerDown","RF_GlobalEventRadioSetup"];
    RF.pinSelection          = ["DIO_28","DIO_29","DIO_30"];
    RF.rfAntennaPin0.$assign = "DIO_30";
    RF.rfAntennaPin1.$assign = "DIO_29";
    RF.rfAntennaPin2.$assign = "DIO_28";
    
    TRNG1.$name = "CONFIG_TRNG_EASYLINK";
    
    Timer1.$name                     = "CONFIG_TIMER_0";
    Timer1.timerInstance.$name       = "CONFIG_GPTIMER_0";
    Timer1.timerInstance.timer.$name = "MyGPTM1";
    
    UART1.$name                = "CONFIG_UART_1";
    UART1.flowControl          = true;
    UART1.txPinInstance.$name  = "CONFIG_PIN_4";
    UART1.rxPinInstance.$name  = "CONFIG_PIN_5";
    UART1.uart.$name           = "MyUART1";
    UART1.uart.$assign         = "UART1";
    UART1.uart.txPin.$assign   = "DIO_24";
    UART1.uart.rxPin.$assign   = "DIO_19";
    UART1.uart.ctsPin.$assign  = "DIO_6";
    UART1.uart.rtsPin.$assign  = "DIO_7";
    UART1.ctsPinInstance.$name = "CONFIG_PIN_6";
    UART1.rtsPinInstance.$name = "CONFIG_PIN_7";
    
    UART2.$name               = "CONFIG_UART_0";
    UART2.uart.$name          = "MyUART1";
    UART2.uart.$assign        = "UART0";
    UART2.uart.txPin.$assign  = "DIO_13";
    UART2.uart.rxPin.$assign  = "DIO_12";
    UART2.txPinInstance.$name = "CONFIG_PIN_2";
    UART2.rxPinInstance.$name = "CONFIG_PIN_3";
    
    easylink.randNumGenFxn                                       = "getRandomNumber";
    easylink.addrSize                                            = 2;
    easylink.addrFilters                                         = "";
    easylink.enableAddrFilter                                    = false;
    easylink.radioConfigEasylinkPhyCustom.symbolRate             = 20.000;
    easylink.radioConfigEasylinkPhyCustom.deviation              = 5.0;
    easylink.radioConfigEasylinkPhyCustom.whitening              = "CC1101/CC2500 compatible";
    easylink.radioConfigEasylinkPhyCustom.codeExportConfig.$name = "ti_devices_radioconfig_code_export_param0";
    
    /**
     * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    Timer1.timerInstance.timer.$suggestSolution = "GPTM0";
    

  • I would suspect a frequency offset. If you have a spectrum, measure the frequency on both boards for RX and TX. If you don't have any measurement equipment, try to use slightly different frequency on the receive side compared to the transmit side. Step the frequency and see if you manage to receive with 34.1 kHz RX BW? 

  • Hi,
    Were you able to resolve this issue?

    Thanks