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.

RTOS/CC2640: Why does CC2640 consume more than CC2540 in connected mode?

Part Number: CC2640
Other Parts Discussed in Thread: LAUNCHXL-CC2650, CC2540,

Tool/software: TI-RTOS

Hi all,

Help me understand.

1. CC2540F256RHA consumption  in the connected mode (w/o transmissions)     ~ 100 uA.  -good!
2. LAUNCHXL-CC2650 (thermometer example) in the connected mode                   ~ 200uA   - bad!
3. My custom board with CC2640F128RSM in the connected mode                            ~ 200uA   - bad!

In Shutdown mode my custom board CC2640F128RSM                                                < 1uA  - Good!

Measured by TI XDS110 Debuge Probe.

Why does CC2640 consume more than CC2540 in connected mode???

What can be done?

Regards,
Alex

P.S.

There are oscillograms.

  • Fig 0. CC2540 Connected 60sec

    Fig 1. LAUNCXL-CC2650 thermometer Connected 60sec

    Fig 2.CC2640 Connected 30sec

    Fig 3. CC2640 Shutdown 300sec

  • Are you only using out of box example? What's the connection parameters for CC2540 and CC2640 devices?
    Are those examples you are using identical application wise?
  • BLE connection parameters for thermometer example:

    #define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_LIMITED
    //#define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_GENERAL

    // How often to perform periodic event
    #define PERIODIC_EVT_PERIOD 1000

    // Whether to enable automatic parameter update request when a connection
    // is formed.
    #define DEFAULT_ENABLE_UPDATE_REQUEST GAPROLE_LINK_PARAM_UPDATE_WAIT_BOTH_PARAMS

    // Minimum connection interval (units of 1.25ms) if automatic parameter update
    // request is enabled.
    #define DEFAULT_DESIRED_MIN_CONN_INTERVAL 200

    // Maximum connection interval (units of 1.25ms) if automatic parameter update
    // request is enabled.
    #define DEFAULT_DESIRED_MAX_CONN_INTERVAL 1600

    // Slave latency to use if automatic parameter update request is enabled
    #define DEFAULT_DESIRED_SLAVE_LATENCY 1

    // Supervision timeout value (units of 10ms) if automatic parameter update
    // request is enabled.
    #define DEFAULT_DESIRED_CONN_TIMEOUT 1000

    // Some values used to simulate measurements
    #define FLAGS_IDX_MAX 7 //3 flags c/f -- timestamp -- site

    // Length of bd addr as a string
    #define B_ADDR_STR_LEN 15

    // Delay to begin discovery from start of connection in ms
    #define DEFAULT_DISCOVERY_DELAY 1000

    // Delay to terminate after connection
    #define DEFAULT_TERMINATE_DELAY 60000

    // Default Thermometer measurement interval
    #define DEFAULT_THERMOMETER_MEAS_DELAY 30

    #define DEFAULT_THERMOMETER_IMEAS_DELAY 1000

    // Max measurement storage count
    #define TH_STORE_MAX 3

    #define THERMOMETER_IMEAS_LEN 6
    #define THERMOMETER_MEAS_LEN 13

    // Thermomometer Task Events
    #define THERMOMETER_START_DEVICE_EVT 0x0001
    #define THERMOMETER_PERIODIC_MEAS_EVT 0x0002
    #define THERMOMETER_PERIODIC_IMEAS_EVT 0x0004
    #define THERMOMETER_START_DISC_EVT 0x0008
    #define THERMOMETER_DISCONNECT_EVT 0x0010
    #define THERMOMETER_STATE_CHANGE_EVT 0x0020
    #define THERMOMETER_PASSCODE_EVT 0x0040
    #define THERMOMETER_PAIR_STATE_EVT 0x0080
    #define THERMOMETER_SERVICE_EVT 0x0100
    #define THERMOMETER_KEY_CHANGE_EVT 0x0200

    // Task configuration
    #define THERMOMETER_TASK_PRIORITY 1
    #define THERMOMETER_TASK_STACK_SIZE 868


    =======================================================================================================================

    BLE connection parameters for my board:

    // Advertising interval when device is discoverable (units of 625us, 160=100ms)
    #define DEFAULT_ADVERTISING_INTERVAL 160

    // Use limited discoverable mode to advertise for 30.72s, and then stop, or
    // use general discoverable mode to advertise indefinitely
    #define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_LIMITED
    //#define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_GENERAL

    // How often to perform periodic event
    #define PERIODIC_EVT_PERIOD 1000

    // Whether to enable automatic parameter update request when a connection is formed.
    #define DEFAULT_ENABLE_UPDATE_REQUEST GAPROLE_LINK_PARAM_UPDATE_WAIT_BOTH_PARAMS

    // Minimum connection interval (units of 1.25ms) if automatic parameter update request is enabled.
    #define DEFAULT_DESIRED_MIN_CONN_INTERVAL 200

    // Maximum connection interval (units of 1.25ms) if automatic parameter update request is enabled.
    #define DEFAULT_DESIRED_MAX_CONN_INTERVAL 400

    // Slave latency to use if automatic parameter update request is enabled
    #define DEFAULT_DESIRED_SLAVE_LATENCY 3

    // Supervision timeout value (units of 10ms) if automatic parameter update request is enabled.
    #define DEFAULT_DESIRED_CONN_TIMEOUT 600 //1000

    // Some values used to simulate measurements
    #define FLAGS_IDX_MAX 7 //3 flags c/f -- timestamp -- site

    // Length of bd addr as a string
    #define B_ADDR_STR_LEN 15

    // Delay to begin discovery from start of connection in ms
    #define DEFAULT_DISCOVERY_DELAY 1000

    // Delay to terminate after connection
    #define DEFAULT_TERMINATE_DELAY 3600000 //60000

    // Default Thermometer measurement interval
    #define DEFAULT_THERMOMETER_MEAS_DELAY 30
    #define DEFAULT_THERMOMETER_IMEAS_DELAY 1000
    #define DEFAULT_THERMOMETER_FORECAST_DELAY 2000

    // Max measurement storage count
    #define TH_STORE_MAX 3

    #define THERMOMETER_IMEAS_LEN 6
    #define THERMOMETER_MEAS_LEN 13
    #define THERMOMETER_FORECAST_LEN 6

    // Thermomometer Task Events
    #define THERMOMETER_START_DEVICE_EVT 0x0001
    #define THERMOMETER_PERIODIC_MEAS_EVT 0x0002
    #define THERMOMETER_PERIODIC_IMEAS_EVT 0x0004
    #define THERMOMETER_START_DISC_EVT 0x0008
    #define THERMOMETER_DISCONNECT_EVT 0x0010
    #define THERMOMETER_STATE_CHANGE_EVT 0x0020
    #define THERMOMETER_PASSCODE_EVT 0x0040
    #define THERMOMETER_PAIR_STATE_EVT 0x0080
    #define THERMOMETER_SERVICE_EVT 0x0100
    //#define THERMOMETER_KEY_CHANGE_EVT 0x0200 //?
    #define RELSIB_SERVICE_EVT 0x0200
    #define THERMOMETER_FORECAST_EVT 0x0800


    // Task configuration
    #define THERMOMETER_TASK_PRIORITY 1
    #define THERMOMETER_TASK_STACK_SIZE 868
  • #define DEFAULT_ADVERTISING_INTERVAL          160
    #define DEFAULT_DISCOVERABLE_MODE             GAP_ADTYPE_FLAGS_LIMITED

    #define DEFAULT_DESIRED_MIN_CONN_INTERVAL     200
    #define DEFAULT_DESIRED_MAX_CONN_INTERVAL     400

    #define DEFAULT_DESIRED_SLAVE_LATENCY         10
    #define DEFAULT_DESIRED_CONN_TIMEOUT          1000

    Nothing changed!!!

    Power Consumption CC2640 in connected mode  ,  more then CC2540

  • Hi,

    Can i reduce the frequency for Cotrex-M3 in connected mode?

    I need to reduce the power consumption in connected mode for CC2640

    Because my old board CC2540 has power consumption  ~100uA in connected mode.   - Good!

    But new board CC2640 and LAUNCHXL-CC2650  has power consumption  ~200uA in connected mode.     - Bad. More!

  • I think it's because of:
    #define DEFAULT_ENABLE_UPDATE_REQUEST GAPROLE_LINK_PARAM_UPDATE_WAIT_BOTH_PARAMS

    Try to use
    GAPROLE_LINK_PARAM_UPDATE_INITIATE_BOTH_PARAMS

    and capture an BLE air sniffer trace (not HCI dump) to confirm which link params are in use.

    Best wishes
  • Hi,

    thanks for the answer

    // Whether to enable automatic parameter update request when a connection is formed.
    #define DEFAULT_ENABLE_UPDATE_REQUEST         GAPROLE_LINK_PARAM_UPDATE_INITIATE_BOTH_PARAMS //GAPROLE_LINK_PARAM_UPDATE_WAIT_BOTH_PARAMS

    nothing changed

    Now i can't capture an BLE air sniffer trace  :-(

  • What's your master device? It's difficult to read the connection event from a oscilloscope diagram.
    Can you try using simple_peripheral on CC2640 out of box example and measure the average power consumption.

    Please set connection interval to be 1 second and do not enable periodic event. We have done the measurement on that setting and the average current should be 10uA.

    You can follow the application report found here : www.ti.com/.../swra478c
    to set up the SW for comparison.
  • closing the thread due to inactivity.
  • Sorry
    was leaving
    If I find a solution, I'll write