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.

CC2540 consumption in advertising

Other Parts Discussed in Thread: CC2540, CC2541

Hello,

looking at SimpleBLEPeripheral I was not able to find where default values of minimum and maximum advertising interval default values are defined and assessed.

In time between adversting events, does CC2540 go in low power mode , when in advertising ? How can be estimated the power consumption vs. advertising interval?

  • Hi 

       You can start and stop advertising using the gap events. See peripheral.c file

    GAPROLE_ADVERT_ENABLED and DEFAULT_ADVERT_OFF_TIME is for how long the device will advertise before going into sleep mode.There are four special physical channels in bluetooth for advertisement. GAP_EndDiscoverable()  is used to end advertisment and sal_set_event( gapRole_TaskID, START_ADVERTISING_EVT ) can be used to start

    You should check the status of your device before advertisement as you can connect to only one central device at once so no point in advertising always

    The simpleBLE example goto simplebleperiheral c file take a look at these two initializations

        GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );

        GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );

    Im not sure about power consumption , but ive seen it in the forums somewhere.let me know if you find any specifics

     

     

     

  • Hi Vasco,

    i think you can find power consumption vs. advertising interval by method in the following link:

    http://focus.ti.com/lit/an/swra347/swra347.pdf

    Cheers

  • I went through  

    http://focus.ti.com/lit/an/swra347/swra347.pdf

    On page 22 to measure the standby current in PM2 state we enter MIN AND MAX connection interval to be 3200 which is 4 seconds.

    "With these settings, the effective connection interval is 8 seconds, meaning that the CC2540 

    will be in PM2 for 8 seconds between each connection event. Click the “Establish” button to 

    form the connection between the devices. "

    Then how do you get 8 seconds effective interval?

    What is MIN and MAX connection interval and how are these actually used to get the connection interval for communication

    Thankyou

  • The default advertising interval is 100ms. This can be changed by directly calling the GAP API function GAP_SetParamValue and changing the value of the parameters TGAP_LIM_DISC_ADV_INT_MIN and TGAP_LIM_DISC_ADV_INT_MAX.

    Yes, the CC2540 does go into low power mode between advertising events.

  • The effective connection interval is 8 seconds because slave latency is set to 1, and the connection interval is set to 4s. For more details on the terms "connection interval", "effective connection interval", and "slave latency", please see the software developer's guide.

    The CC2540 BLE controller actually always uses the MAX connection interval, though for clarity the app note just recommends setting the two values equal so that you can just specify the exact interval desired. The reason for having a MIN and MAX value is that the BT 4.0 spec requires this, primarily for systems in which the controller and host are implemented as separate devices.

  • Willis

        Thanks i will try that out

         Being a peripheral device do I have to be in discoverable mode ie. advertising in order for a central device to be able to connect to me.

         If so then in a scenario where communication has to be re established once broken should the peripheral device have to be continously advertising?

  • Hi

        I put the device in general discovery mode so the device will keep advertising when connection is lost.I noticed on the oscilloscope that the advertising rate was quite high about 10ms so I used 

        GAP_SetParamValue(TGAP_GEN_DISC_ADV_INT_MIN , 15000);

        GAP_SetParamValue(TGAP_GEN_DISC_ADV_INT_MAX , 15000);

    to set it to 15 secs and I can still detect the device now using Btool.

    Im gonna have to disable the automatic battery reading feature because the device keeps waking up out of PM3

     

    Anyway i can scan for advertisement being a peripheral instead of broadcasting to reduce power? 

  • Hi Dsouza ,

    The advertising interval is from the 20 ms to 10.24 s ( I have got it from Ti's Deep dive BLE training ppt ) but how can you set to 15 secs ???

    Thanks in advance ,

    Senthil kumar  

  • Willis,

    I have read these posts and I am still somewhat confused on how to determine the power consumption for a BLE device during advertising only.  I know that Advertising Interval can be in the range of 20 ms to 10.24 s.  So for example, if my advertising interval is set to 100 ms, how do I determine what the power consumption is for an advertising interval time of 100 ms?

  • James,

    Have you read this applicatiopn note:

    http://www.ti.com/general/docs/litabsmultiplefilelist.tsp?literatureNumber=swra347a

    That might give some more insights.

    Let me know if it helps.

  • I have read this application note a couple of times but it is still not clear to me how to determine the BLE power consumption during advertising only.  Correct me if I am wrong, but when the CC2541 BLE device is powered up, it immediately starts to advertise which means that the RF radio is transmitting advertising PDUs.  So immediately power is being consumbed due to the fact that the radio is transmitting. 

    I know that the time between two advertising events is: T_advEvent = advInterval + advDelay where advInterval can be in the range of 20 ms to 10.24s.

    So, to calculate the power consumed during advertising, do I need to calculate the average power consumed for a specific number of advertising events based on a predetermined advInterval time?  Also, what is the maximum time that the CC2541 would try to advertise without getting a response?  Does it cycle through the three advertising channel indexes (37, 38, 39) then go back to sleep for a period to time, then wake-up again and start the advertising process over again?

    Thanks,

     

    James

  • Hi Willis,

    I can see you have some experience concerning the advertisinf process.

    Would you mind have a look at one of my thread which is called "Optimizing advertizing packets transmission".

    I wonder it it is something that can be done.

    Thank you for your help.

    Fabrice.

  • James Coleman said:
    I know that the time between two advertising events is: T_advEvent = advInterval + advDelay where advInterval can be in the range of 20 ms to 10.24s.

    advDelay is pseudo-random value with a range of 0 ms to 10 ms.  You can assume it to be equal to 5 ms for average current calculation purposes.

    Does it cycle through the three advertising channel indexes (37, 38, 39) then go back to sleep for a period to time, then wake-up again and start the advertising process over again?

    You can select what channels to advertise on.  Usually advertiser transmits on three channels back-to-back and then goes to sleep.

    Leo

  • Thank you very much for your response.  This is the information I was looking for.

  • Hi, 

         I am getting stuck with the advertising interval. I want to change the advertising interval from 100 ms to 5 sec. Where exactly do i need to change the advertising interval in keyfob application of cc2541 from ti BLE stack 1.3.2? How to add some delay in advertising in the keyfobdemo.c code? Please reply. Thanks