@@ -6,14 +6,23 @@ void HeltecTrackerV2Board::begin() {
66 pinMode (PIN_ADC_CTRL, OUTPUT);
77 digitalWrite (PIN_ADC_CTRL, LOW); // Initially inactive
88
9+ // ---- GC1109 RF FRONT END CONFIGURATION ----
10+ // The Heltec Tracker V2 uses a GC1109 FEM chip with integrated PA and LNA
11+ // RF switch control: PA_TX_EN LOW = RX path (LNA), HIGH = TX path (PA)
12+
13+ // PA_POWER: Power enable for GC1109 chip (always on)
914 pinMode (P_LORA_PA_POWER, OUTPUT);
10- digitalWrite (P_LORA_PA_POWER,HIGH);
15+ digitalWrite (P_LORA_PA_POWER, HIGH);
1116
17+ // PA_EN: Main enable for GC1109 (must be HIGH for both RX and TX)
1218 rtc_gpio_hold_dis ((gpio_num_t )P_LORA_PA_EN);
1319 pinMode (P_LORA_PA_EN, OUTPUT);
14- digitalWrite (P_LORA_PA_EN,HIGH);
20+ digitalWrite (P_LORA_PA_EN, HIGH);
21+
22+ // PA_TX_EN: RF switch control (LOW=RX/LNA, HIGH=TX/PA)
1523 pinMode (P_LORA_PA_TX_EN, OUTPUT);
16- digitalWrite (P_LORA_PA_TX_EN,LOW);
24+ digitalWrite (P_LORA_PA_TX_EN, LOW); // Default to RX mode
25+ // -------------------------------------------
1726
1827 periph_power.begin ();
1928
@@ -30,13 +39,13 @@ void HeltecTrackerV2Board::begin() {
3039 }
3140
3241 void HeltecTrackerV2Board::onBeforeTransmit (void ) {
33- digitalWrite (P_LORA_TX_LED, HIGH); // turn TX LED on
34- digitalWrite (P_LORA_PA_TX_EN,HIGH);
42+ digitalWrite (P_LORA_TX_LED, HIGH); // Turn TX LED on
43+ digitalWrite (P_LORA_PA_TX_EN, HIGH); // Switch to TX path (PA)
3544 }
3645
3746 void HeltecTrackerV2Board::onAfterTransmit (void ) {
38- digitalWrite (P_LORA_TX_LED , LOW); // turn TX LED off
39- digitalWrite (P_LORA_PA_TX_EN, LOW);
47+ digitalWrite (P_LORA_PA_TX_EN , LOW); // Switch back to RX path (LNA)
48+ digitalWrite (P_LORA_TX_LED, LOW); // Turn TX LED off
4049 }
4150
4251 void HeltecTrackerV2Board::enterDeepSleep (uint32_t secs, int pin_wake_btn) {
@@ -48,7 +57,9 @@ void HeltecTrackerV2Board::begin() {
4857
4958 rtc_gpio_hold_en ((gpio_num_t )P_LORA_NSS);
5059
51- rtc_gpio_hold_en ((gpio_num_t )P_LORA_PA_EN); // It also needs to be enabled in receive mode
60+ // Hold GC1109 FEM pins during sleep (PA_EN=HIGH, PA_TX_EN=LOW for RX mode)
61+ rtc_gpio_hold_en ((gpio_num_t )P_LORA_PA_EN);
62+ rtc_gpio_hold_en ((gpio_num_t )P_LORA_PA_TX_EN);
5263
5364 if (pin_wake_btn < 0 ) {
5465 esp_sleep_enable_ext1_wakeup ( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet
0 commit comments