2 Replies Latest reply on Aug 31, 2020 10:31 PM by AlSt_3233956

    CYBLE-416045-02 BLE high current consumption in DeepSleep

    AlSt_3233956

      Hello,

       

      using PSoC Creator 4.3 with PDL v3 = 3.1.2 and PDL v2 = 2.1.0. The BLE Device is configured as Peripheral the connection settings are the following:

      /* 8 x 1.25 = 10 ms */

      #define MINIMUM_CONNECTION_INTERVAL                      (8u)

      /* 8 x 1.25 = 10 ms */

      #define MAXIMUM_CONNECTION_INTERVAL                     (8u)

      /* 125 connection interval skips */

      #define SLAVE_LATENCY                                                    12

      /* Supervision timeout of 3 second */

      #define SUPERVISION_TIMEOUT                                    (300u)

       

      I use an BLE-Dongle as Central to activate Notifications. If they activated the Peripheral sends Notifications via BLE and than enter DeepSleep Mode. The WatchDogTimer is used to wakeup the System every 2 s. I recognized with an Poweranalyzer that the Powerconsumption is sometimes higher than I expected. It seems like the BLE device is running faulty in the background.

       

      The sequence is:

       

      trigger sensor measurement

      enter DeepSleep

      WatchDogTimer interrupt // after 25ms

      read out sensor

      send Notification

      enter DeepSleep

      WatchDogTimer interrupt // after 2 s

       

      Bad:

       

      Good:

       

      Can someone explain what going with the BLE device? Why sometimes it work and why not?

       

       

      regards,

      Alex

        • 1. Re: CYBLE-416045-02 BLE high current consumption in DeepSleep
          GaneshD_41

          Hello Alex,

           

          The physical and Datalink layer handles the data transfer between the Server and Client. Due to environmental factors if the Central misses to receive the correct data (checksum is checked) then the server will send the notification again. This might take the additional time you are observing.

           

          Can you keep the Server and Client devices close to each other and check if you are observing the same?

           

          Are you seeing error in data received by the central?

           

          What is the difference in current consumption you have observed?

           

          Thanks

          Ganesh

          • 2. Re: CYBLE-416045-02 BLE high current consumption in DeepSleep
            AlSt_3233956

            Hello Ganesh,

             

            The right incoming of data I've checked with a CYC8PROTO-Board configured as Central with my own written GUI and with the Cypress BLE-Dongle CY5677 and CySmart 1.3. The devices lay on my table with a distance of 30 cm.

             

            I think the problem is the CM0 Core, configured as controller, should not enter into DeepSleep without checking the BLE-Controller state. I add the following to main loop in CM0:

             

            while(1)

            {

                Cy_BLE_ProcessEvents();

                if( Cy_BLE_ControllerLPM( CY_BLE_BLESS_DEEPSLEEP ) == CY_BLE_BLESS_DEEPSLEEP )

                {

                      Cy_SysPm_DeepSleep( CY_SYSPM_WAIT_FOR_INTERRUPT );

                }

            }

             

            With this the high current consumption seems eliminated. I add an Code example were it is realized like in my Project.