mirror PR #51 onto V4.3

This commit is contained in:
liquidraver
2026-07-07 22:36:26 +02:00
parent 4246f94ae1
commit 4bcefbcda7
@@ -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;
};