Explorar o código

Fixed DIO0, DIO1 and RESET for Heltec v2

Kevin Le hai 5 meses
pai
achega
cd964cd9c7

+ 10 - 6
variants/heltec_v2/HeltecV2Board.h

@@ -17,12 +17,12 @@ public:
     esp_reset_reason_t reason = esp_reset_reason();
     if (reason == ESP_RST_DEEPSLEEP) {
       long wakeup_source = esp_sleep_get_ext1_wakeup_status();
-      if (wakeup_source & (1 << P_LORA_DIO_1)) {  // received a LoRa packet (while in deep sleep)
+      if (wakeup_source & (1 << P_LORA_DIO_0)) {  // received a LoRa packet (while in deep sleep)
         startup_reason = BD_STARTUP_RX_PACKET;
       }
 
       rtc_gpio_hold_dis((gpio_num_t)P_LORA_NSS);
-      rtc_gpio_deinit((gpio_num_t)P_LORA_DIO_1);
+      rtc_gpio_deinit((gpio_num_t)P_LORA_DIO_0);
     }
   }
 
@@ -30,15 +30,15 @@ public:
     esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON);
 
     // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep
-    rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY);
-    rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1);
+    rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_0, RTC_GPIO_MODE_INPUT_ONLY);
+    rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_0);
 
     rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS);
 
     if (pin_wake_btn < 0) {
-      esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH);  // wake up on: recv LoRa packet
+      esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_0), ESP_EXT1_WAKEUP_ANY_HIGH);  // wake up on: recv LoRa packet
     } else {
-      esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH);  // wake up on: recv LoRa packet OR wake btn
+      esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_0) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH);  // wake up on: recv LoRa packet OR wake btn
     }
 
     if (secs > 0) {
@@ -64,4 +64,8 @@ public:
   const char* getManufacturerName() const override {
     return "Heltec V2";
   }
+
+  uint32_t getIRQGpio() override {
+    return P_LORA_DIO_0; // default for SX1276
+  }
 };

+ 3 - 3
variants/heltec_v2/platformio.ini

@@ -7,10 +7,10 @@ build_flags =
   -D HELTEC_LORA_V2
   -D RADIO_CLASS=CustomSX1276
   -D WRAPPER_CLASS=CustomSX1276Wrapper
-  -D P_LORA_DIO_1=26
+  -D P_LORA_DIO_0=26
+  -D P_LORA_DIO_1=35
   -D P_LORA_NSS=18
-  -D P_LORA_RESET=RADIOLIB_NC
-  -D P_LORA_BUSY=RADIOLIB_NC
+  -D P_LORA_RESET=14
   -D P_LORA_SCLK=5
   -D P_LORA_MISO=19
   -D P_LORA_MOSI=27

+ 2 - 2
variants/heltec_v2/target.cpp

@@ -5,9 +5,9 @@ HeltecV2Board board;
 
 #if defined(P_LORA_SCLK)
   static SPIClass spi;
-  RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, spi);
+  RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_0, P_LORA_RESET, P_LORA_DIO_1, spi);
 #else
-  RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY);
+  RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_0, P_LORA_RESET, P_LORA_DIO_1);
 #endif
 
 WRAPPER_CLASS radio_driver(radio, board);