[beken-72xx] Allow setting deep sleep wake-up pins as floating (#275)
According to guide `gpio_stay_*_map` are specifically there to prevent pulling pins to a specific level and let them float during deep sleep. https://docs.bekencorp.com/sdk_3.0.x/bk7238/build/en/latest/developer-guide/power_save/sleep_test.html This allows any external low-power circuitry to change a pin level, as required, to trigger the wake up This requires changes in BDK and was implemented via fixup. Also, exposed `gpio_stay_lo_map` parameter via `lt_deep_sleep_keep_floating_gpio` to manage this configuration for pins in range P0-P31.
This commit is contained in:
@@ -6,6 +6,8 @@ __attribute__((weak)) void lt_deep_sleep_config_gpio(uint32_t gpio_index_map, bo
|
||||
|
||||
__attribute__((weak)) void lt_deep_sleep_unset_gpio(uint32_t gpio_index_map);
|
||||
|
||||
__attribute__((weak)) void lt_deep_sleep_keep_floating_gpio(uint32_t gpio_index_map, bool on_high);
|
||||
|
||||
__attribute__((weak)) void lt_deep_sleep_config_timer(uint32_t sleep_duration);
|
||||
|
||||
__attribute__((weak)) void lt_deep_sleep_enter();
|
||||
|
||||
@@ -19,6 +19,21 @@ void lt_deep_sleep_config_gpio(uint32_t gpio_index_map, bool on_high);
|
||||
*/
|
||||
void lt_deep_sleep_unset_gpio(uint32_t gpio_index_map);
|
||||
|
||||
/**
|
||||
* @brief Configure GPIO pins to be kept floating
|
||||
*
|
||||
* This prevents pins from being configured as pullup/pulldown, based on
|
||||
* the configured wake-up mode (low/high), upon entering deep sleep.
|
||||
* This is important, as some-low power devices may be unable to ever
|
||||
* overcome the internal pull strength and change the level. One example
|
||||
* of such device is a magnetic door sensor that must be able to wake on
|
||||
* level change in both directions.
|
||||
*
|
||||
* @param gpio_index_map bitMap of the pins to set/unset as floating
|
||||
* @param enabled whether to set pins to floating or roll back to default mode
|
||||
*/
|
||||
void lt_deep_sleep_keep_floating_gpio(uint32_t gpio_index_map, bool enabled);
|
||||
|
||||
/**
|
||||
* @brief Set a sleep timer to wake up the device
|
||||
* @param sleep_duration the time in milliseconds to sleep
|
||||
|
||||
Reference in New Issue
Block a user