-
Notifications
You must be signed in to change notification settings - Fork 2.3k
[Silabs] Add deep sleep support for EM4 samples apps #41487
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Adds optional deep sleep (EM4) support for Silicon Labs sample apps to reduce power consumption during Long Idle Time ICD by fully shutting down the chip.
- Introduces build-time flag sl_em4_sleep and associated preprocessor logic.
- Adds EM4 trigger implementation using BURTC and EMU along with idle hook logic gated by ICD mode.
- Includes new em_burtc source and conditional sleep behavior with threshold checking.
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 8 comments.
| File | Description |
|---|---|
| third_party/silabs/efr32_sdk.gni | Adds sl_em4_sleep arg, propagate define, and include BURTC source to enable EM4 functionality. |
| examples/platform/silabs/MatterConfig.cpp | Implements EM4 entry routine and integrates it into FreeRTOS idle hook under ICD LIT mode with threshold logic. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request adds deep sleep (EM4) support for Silabs sample applications to reduce power consumption during long idle periods. The changes introduce a new build flag sl_em4_sleep and associated logic in MatterConfig.cpp to trigger EM4 sleep via vApplicationIdleHook when the device is in LIT ICD mode.
My review identified a critical bug in the sleep duration calculation where time units were mismatched, which would cause incorrect sleep times. I've also pointed out a minor redundancy in the EM4 trigger function for code cleanup. Overall, the approach is good, but the unit conversion issue needs to be addressed.
|
PR #41487: Size comparison from e147761 to 49ff1ae Full report (5 builds for cc32xx, realtek, stm32)
|
|
PR #41487: Size comparison from e147761 to 0f79208 Full report (4 builds for nrfconnect, realtek, stm32)
|
076483c to
7d2dab7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
|
PR #41487: Size comparison from c19accc to a966c0e Full report (37 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, esp32, nrfconnect, nxp, psoc6, qpg, realtek, stm32, telink)
|
Summary
Add deep sleep support that shutdown the chip completely for the duration of the Long Idle Time ICD. This reduces the power consumption down to 0.6uA at the cost of RAM retention.
This is a PoC as an SDK issue is actually preventing extra long sleep time.
Related issues
None
Testing
Locally at Silicon Labs.