- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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?
Solved! Go to Solution.
- Labels:
-
Sleep Modes
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
}