Skip to content

Commit 1a754a3

Browse files
committed
Add LDO startup delay before GC1109 chip enable
The TLV75733P LDO powering the GC1109 FEM has a ~550us startup time (datasheet tSTR). Wait 1ms after enabling PA_POWER before driving CSD HIGH, per the GC1109 power-on sequence requirement that VBAT must be stable before CSD/CPS/CTX. Only applied on cold boot - on deep sleep wake the LDO was held on via RTC latch so no delay is needed. Oscilloscope measurements showed CSD going HIGH only ~12.5us after PA_POWER, well before the LDO output stabilises. Reference: meshtastic#9029
1 parent 4ce554e commit 1a754a3

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

src/mesh/SX126xInterface.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
#ifdef ARCH_PORTDUINO
77
#include "PortduinoGlue.h"
88
#endif
9+
#if defined(USE_GC1109_PA) && defined(ARCH_ESP32)
10+
#include "esp_sleep.h"
11+
#endif
912

1013
#include "Throttle.h"
1114

@@ -60,6 +63,14 @@ template <typename T> bool SX126xInterface<T>::init()
6063
pinMode(LORA_PA_POWER, OUTPUT);
6164
digitalWrite(LORA_PA_POWER, HIGH);
6265

66+
// TLV75733P LDO has ~550us startup time (datasheet tSTR). On cold boot, wait
67+
// for VBAT to stabilise before driving CSD/CPS, per GC1109 requirement:
68+
// "VBAT must be prior to CSD/CPS/CTX for the power on sequence"
69+
// On deep sleep wake the LDO was held on via RTC latch, so no delay needed.
70+
if (esp_sleep_get_wakeup_cause() == ESP_SLEEP_WAKEUP_UNDEFINED) {
71+
delayMicroseconds(1000);
72+
}
73+
6374
// CSD (LORA_PA_EN): Chip enable - must be HIGH to enable GC1109 for both RX and TX
6475
pinMode(LORA_PA_EN, OUTPUT);
6576
digitalWrite(LORA_PA_EN, HIGH);

0 commit comments

Comments
 (0)