From 4bcefbcda7b157a80c59dbba7d3efa13bc4d683a Mon Sep 17 00:00:00 2001 From: liquidraver <504870+liquidraver@users.noreply.github.com> Date: Tue, 7 Jul 2026 22:36:26 +0200 Subject: [PATCH] mirror PR #51 onto V4.3 --- .../heltec_wifi_lora32_v43_procpu.dts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/zephcore/boards/esp32/heltec_wifi_lora32_v43/heltec_wifi_lora32_v43_procpu.dts b/zephcore/boards/esp32/heltec_wifi_lora32_v43/heltec_wifi_lora32_v43_procpu.dts index b40906d..ec05dd8 100644 --- a/zephcore/boards/esp32/heltec_wifi_lora32_v43/heltec_wifi_lora32_v43_procpu.dts +++ b/zephcore/boards/esp32/heltec_wifi_lora32_v43/heltec_wifi_lora32_v43_procpu.dts @@ -8,7 +8,7 @@ * OLED: SSD1306 128x64 on I2C0 * Button: GPIO0 * LED: GPIO35 (PWM via LEDC0) - * Vext: GPIO36 active-HIGH (powers OLED and sensors) + * Vext: GPIO36 active-LOW PMOS rail switch (powers OLED and sensors) * BatADC: GPIO1 = ADC1_CH0 (&adc0), enable GPIO37 active-HIGH (vbat_enable in overlay) * * V4.3 vs V4.2 difference — FEM chip changed: @@ -82,13 +82,20 @@ * zephyr,user { io-channels } (see board.overlay), and a voltage-divider * on &adc1 ch0 would target GPIO11 = the SX1262 MISO. See &adc0 below. */ - /* Vext — powers OLED and external peripherals (active-HIGH on GPIO36). - * regulator-fixed + SSD1306 vin-supply: powers rail at boot without relying on - * power-domains (CONFIG_PM_DEVICE is disabled in prj.conf). */ + /* Vext rail switch — PMOS, ACTIVE LOW (GPIO36 low = rail ON). + * Powers the OLED (incl. its I2C pull-ups) and the expansion header. + * Same rail circuit as V4.2 (only the PA differs on V4.3); verified on V4 + * hardware that GPIO36 high leaves the rail floating (~1.6 V) and the OLED + * unpowered, while low gives a clean 3.3 V. Confirmed against Arduino + * MeshCore: RefCountedDigitalPin::begin() drives PIN_VEXT_EN to !active + * (LOW) and the V4 OLED build constructs the display with NULL periph_power, + * so GPIO36 is held LOW continuously there too. + * regulator-boot-on + always-on: the rail comes up at regulator init, + * well before the SSD1306 driver init. */ vext_enable: vext-enable { compatible = "regulator-fixed"; regulator-name = "vext"; - enable-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>; /* GPIO36 = gpio1 pin 4 */ + enable-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>; /* GPIO36 = gpio1 pin 4 */ regulator-boot-on; regulator-always-on; };