test_adc2.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /*
  2. Tests for the adc2 device driver
  3. */
  4. #include "esp_system.h"
  5. #include "driver/adc.h"
  6. #include "driver/dac.h"
  7. #include "unity.h"
  8. #include "esp_system.h"
  9. #include "esp_event_loop.h"
  10. #include "esp_wifi.h"
  11. #include "esp_log.h"
  12. #include "nvs_flash.h"
  13. #include "test_utils.h"
  14. static const char* TAG = "test_adc2";
  15. #define DEFAULT_SSID "TEST_SSID"
  16. #define DEFAULT_PWD "TEST_PASS"
  17. static esp_err_t event_handler(void *ctx, system_event_t *event)
  18. {
  19. printf("ev_handle_called.\n");
  20. switch(event->event_id) {
  21. case SYSTEM_EVENT_STA_START:
  22. ESP_LOGI(TAG, "SYSTEM_EVENT_STA_START");
  23. //do not actually connect in test case
  24. //;
  25. break;
  26. case SYSTEM_EVENT_STA_GOT_IP:
  27. ESP_LOGI(TAG, "SYSTEM_EVENT_STA_GOT_IP");
  28. ESP_LOGI(TAG, "got ip:%s\n",
  29. ip4addr_ntoa(&event->event_info.got_ip.ip_info.ip));
  30. break;
  31. case SYSTEM_EVENT_STA_DISCONNECTED:
  32. ESP_LOGI(TAG, "SYSTEM_EVENT_STA_DISCONNECTED");
  33. TEST_ESP_OK(esp_wifi_connect());
  34. break;
  35. default:
  36. break;
  37. }
  38. return ESP_OK;
  39. }
  40. TEST_CASE("adc2 work with wifi","[adc]")
  41. {
  42. int read_raw;
  43. int target_value;
  44. test_case_uses_tcpip();
  45. //adc and dac init
  46. TEST_ESP_OK( dac_output_enable( DAC_CHANNEL_1 ));
  47. TEST_ESP_OK( dac_output_enable( DAC_CHANNEL_2 ));
  48. TEST_ESP_OK( dac_output_voltage( DAC_CHANNEL_1, 30 ));
  49. TEST_ESP_OK( dac_output_voltage( DAC_CHANNEL_2, 60 ));
  50. TEST_ESP_OK( adc2_config_channel_atten( ADC2_CHANNEL_8, ADC_ATTEN_0db ));
  51. TEST_ESP_OK( adc2_config_channel_atten( ADC2_CHANNEL_9, ADC_ATTEN_0db ));
  52. //init wifi
  53. printf("nvs init\n");
  54. esp_err_t r = nvs_flash_init();
  55. if (r == ESP_ERR_NVS_NO_FREE_PAGES || r == ESP_ERR_NVS_NEW_VERSION_FOUND) {
  56. printf("no free pages or nvs version mismatch, erase..\n");
  57. TEST_ESP_OK(nvs_flash_erase());
  58. r = nvs_flash_init();
  59. }
  60. TEST_ESP_OK( r);
  61. tcpip_adapter_init();
  62. TEST_ESP_OK(esp_event_loop_init(event_handler, NULL));
  63. wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  64. TEST_ESP_OK(esp_wifi_init(&cfg));
  65. wifi_config_t wifi_config = {
  66. .sta = {
  67. .ssid = DEFAULT_SSID,
  68. .password = DEFAULT_PWD
  69. },
  70. };
  71. TEST_ESP_OK(esp_wifi_set_mode(WIFI_MODE_STA));
  72. TEST_ESP_OK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
  73. //test read value
  74. TEST_ESP_OK( adc2_get_raw( ADC2_CHANNEL_8, ADC_WIDTH_12Bit, &read_raw ));
  75. target_value = 30*4096*3/256; //3 = 3.3/1.1
  76. printf("dac set: %d, adc read: %d (target_value: %d)\n", 30, read_raw, target_value );
  77. TEST_ASSERT_INT_WITHIN( 600, target_value, read_raw );
  78. TEST_ESP_OK( adc2_get_raw( ADC2_CHANNEL_9, ADC_WIDTH_12Bit, &read_raw ));
  79. target_value = 60*4096*3/256;
  80. printf("dac set: %d, adc read: %d (target_value: %d)\n", 60, read_raw, target_value );
  81. TEST_ASSERT_INT_WITHIN( 600, target_value, read_raw );
  82. //now start wifi
  83. printf("wifi start...\n");
  84. TEST_ESP_OK(esp_wifi_start());
  85. //test reading during wifi on
  86. TEST_ASSERT_EQUAL( adc2_get_raw( ADC2_CHANNEL_8, ADC_WIDTH_12Bit, &read_raw ), ESP_ERR_TIMEOUT );
  87. TEST_ASSERT_EQUAL( adc2_get_raw( ADC2_CHANNEL_9, ADC_WIDTH_12Bit, &read_raw ), ESP_ERR_TIMEOUT );
  88. //wifi stop again
  89. printf("wifi stop...\n");
  90. TEST_ESP_OK( esp_wifi_stop() );
  91. TEST_ESP_OK(esp_wifi_deinit());
  92. nvs_flash_deinit();
  93. //test read value
  94. TEST_ESP_OK( adc2_get_raw( ADC2_CHANNEL_8, ADC_WIDTH_12Bit, &read_raw ));
  95. target_value = 30*4096*3/256; //3 = 3.3/1.1
  96. printf("dac set: %d, adc read: %d (target_value: %d)\n", 30, read_raw, target_value );
  97. TEST_ASSERT_INT_WITHIN( 600, target_value, read_raw );
  98. TEST_ESP_OK( adc2_get_raw( ADC2_CHANNEL_9, ADC_WIDTH_12Bit, &read_raw ));
  99. target_value = 60*4096*3/256;
  100. printf("dac set: %d, adc read: %d (target_value: %d)\n", 60, read_raw, target_value );
  101. TEST_ASSERT_INT_WITHIN( 600, target_value, read_raw );
  102. printf("test passed...\n");
  103. TEST_IGNORE_MESSAGE("this test case is ignored due to the critical memory leak of tcpip_adapter and event_loop.");
  104. }