BCM20736S HIDOFF problem

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
legic_1490776
Level 5
Level 5
25 likes received 10 likes received First like received

My application invokes HIDoff to go into a deep sleep, and works fine on the BCM20732S.

When I try to enter HIDoff mode, at first it seems to work - the current draw drops to near 0.

But then, about 6 seconds later, the current rises to 2mA and stays there.  The chip does not wake up at this point - it still appears to be sleeping, and will wake up later from an interrupt just fine.  But it is drawing a lot of power.

I am analyzing this using a power meter that logs the current draw over time.

I've attached screen shots with annotations.

In the first image you can see the device running, then there is a burst of current when it enters HIDoff, and then it is off.

Then, after about 6 seconds, something happens that leaves it running at a fairly high level.

The second image shows a continuation where I then press a button to wake up the device and it indeed wakes up and resumes normal operation.

The identical board design and firmware works fine with the 20732S.

Any ideas?

1 Solution

Broadcom support suggested adding the following to the end of the app_create() function.  This seems to fix the issue.

===

In application_create(), register for callbacks that are invoked before entering hid-off/deep-sleep (yes, they are the same).

void application_create(void)

{

...... all other initialization here....

    bleprofile_regAppEvtHandler(BLECM_APP_EVT_ENTERING_HIDOFF,(BLECM_NO_PARAM_FUNC)app_enter_hidoff);

    bleprofile_regAppEvtHandler(BLECM_APP_EVT_ABORTING_HIDOFF,(BLECM_NO_PARAM_FUNC)app_abort_hidoff);

}

Then implement the callbacks as a NOP:

void app_enter_hidoff(void)

{

                // Do nothing

}

void app_abort_hidoff(void)

{

                // Do nothing

}

View solution in original post

11 Replies