test_deep_sleep.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "unity.h"
  2. #include "esp_deep_sleep.h"
  3. #include "driver/rtc_io.h"
  4. #include "freertos/FreeRTOS.h"
  5. #include "freertos/task.h"
  6. TEST_CASE("esp_deepsleep works", "[deepsleep][ignore]")
  7. {
  8. esp_deep_sleep(2000000);
  9. }
  10. static void deep_sleep_task(void* arg)
  11. {
  12. esp_deep_sleep_start();
  13. }
  14. static void do_deep_sleep_from_app_cpu()
  15. {
  16. xTaskCreatePinnedToCore(&deep_sleep_task, "ds", 2048, NULL, 5, NULL, 1);
  17. // keep running some non-IRAM code
  18. vTaskSuspendAll();
  19. while(true) {
  20. ;
  21. }
  22. }
  23. TEST_CASE("wake up using timer", "[deepsleep][ignore]")
  24. {
  25. esp_deep_sleep_enable_timer_wakeup(2000000);
  26. esp_deep_sleep_start();
  27. }
  28. TEST_CASE("enter deep sleep on APP CPU and wake up using timer", "[deepsleep][ignore]")
  29. {
  30. esp_deep_sleep_enable_timer_wakeup(2000000);
  31. do_deep_sleep_from_app_cpu();
  32. }
  33. TEST_CASE("wake up using ext0 (13 high)", "[deepsleep][ignore]")
  34. {
  35. ESP_ERROR_CHECK(rtc_gpio_init(GPIO_NUM_13));
  36. ESP_ERROR_CHECK(gpio_pullup_dis(GPIO_NUM_13));
  37. ESP_ERROR_CHECK(gpio_pulldown_en(GPIO_NUM_13));
  38. ESP_ERROR_CHECK(esp_deep_sleep_enable_ext0_wakeup(GPIO_NUM_13, 1));
  39. esp_deep_sleep_start();
  40. }
  41. TEST_CASE("wake up using ext0 (13 low)", "[deepsleep][ignore]")
  42. {
  43. ESP_ERROR_CHECK(rtc_gpio_init(GPIO_NUM_13));
  44. ESP_ERROR_CHECK(gpio_pullup_en(GPIO_NUM_13));
  45. ESP_ERROR_CHECK(gpio_pulldown_dis(GPIO_NUM_13));
  46. ESP_ERROR_CHECK(esp_deep_sleep_enable_ext0_wakeup(GPIO_NUM_13, 0));
  47. esp_deep_sleep_start();
  48. }
  49. TEST_CASE("wake up using ext1 when RTC_PERIPH is off (13 high)", "[deepsleep][ignore]")
  50. {
  51. // This test needs external pulldown
  52. ESP_ERROR_CHECK(rtc_gpio_init(GPIO_NUM_13));
  53. ESP_ERROR_CHECK(esp_deep_sleep_enable_ext1_wakeup(BIT(GPIO_NUM_13), ESP_EXT1_WAKEUP_ANY_HIGH));
  54. esp_deep_sleep_start();
  55. }
  56. TEST_CASE("wake up using ext1 when RTC_PERIPH is off (13 low)", "[deepsleep][ignore]")
  57. {
  58. // This test needs external pullup
  59. ESP_ERROR_CHECK(rtc_gpio_init(GPIO_NUM_13));
  60. ESP_ERROR_CHECK(esp_deep_sleep_enable_ext1_wakeup(BIT(GPIO_NUM_13), ESP_EXT1_WAKEUP_ALL_LOW));
  61. esp_deep_sleep_start();
  62. }
  63. TEST_CASE("wake up using ext1 when RTC_PERIPH is on (13 high)", "[deepsleep][ignore]")
  64. {
  65. ESP_ERROR_CHECK(rtc_gpio_init(GPIO_NUM_13));
  66. ESP_ERROR_CHECK(gpio_pullup_dis(GPIO_NUM_13));
  67. ESP_ERROR_CHECK(gpio_pulldown_en(GPIO_NUM_13));
  68. ESP_ERROR_CHECK(esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON));
  69. ESP_ERROR_CHECK(esp_deep_sleep_enable_ext1_wakeup(BIT(GPIO_NUM_13), ESP_EXT1_WAKEUP_ANY_HIGH));
  70. esp_deep_sleep_start();
  71. }
  72. TEST_CASE("wake up using ext1 when RTC_PERIPH is on (13 low)", "[deepsleep][ignore]")
  73. {
  74. ESP_ERROR_CHECK(rtc_gpio_init(GPIO_NUM_13));
  75. ESP_ERROR_CHECK(gpio_pullup_en(GPIO_NUM_13));
  76. ESP_ERROR_CHECK(gpio_pulldown_dis(GPIO_NUM_13));
  77. ESP_ERROR_CHECK(esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON));
  78. ESP_ERROR_CHECK(esp_deep_sleep_enable_ext1_wakeup(BIT(GPIO_NUM_13), ESP_EXT1_WAKEUP_ALL_LOW));
  79. esp_deep_sleep_start();
  80. }