emdashes begone (#10847)
This commit is contained in:
@@ -60,7 +60,8 @@ void c6l_init()
|
||||
vTaskDelay(10 / portTICK_PERIOD_MS);
|
||||
i2c_write_byte(PI4IO_M_ADDR, PI4IO_REG_PULL_EN, 0b11100011); // pull up/down enable, 0 disable, 1 enable
|
||||
vTaskDelay(10 / portTICK_PERIOD_MS);
|
||||
i2c_write_byte(PI4IO_M_ADDR, PI4IO_REG_IN_DEF_STA, 0b00000011); // P0 P1 default to high level; button press triggers the interrupt
|
||||
i2c_write_byte(PI4IO_M_ADDR, PI4IO_REG_IN_DEF_STA,
|
||||
0b00000011); // P0 P1 default to high level; button press triggers the interrupt
|
||||
vTaskDelay(10 / portTICK_PERIOD_MS);
|
||||
i2c_write_byte(PI4IO_M_ADDR, PI4IO_REG_INT_MASK, 0b11111100); // P0 P1 interrupts enabled (0 = enable, 1 = disable)
|
||||
vTaskDelay(10 / portTICK_PERIOD_MS);
|
||||
|
||||
@@ -47,7 +47,7 @@ void c6l_init();
|
||||
#define SSD1306_RS 18 // DC
|
||||
#define SSD1306_RESET 15
|
||||
// #define OLED_DG 1
|
||||
// Tiny OLED panel — opts into compile-time layout/font/feature substitutions
|
||||
// Tiny OLED panel - opts into compile-time layout/font/feature substitutions
|
||||
// gated on OLED_TINY across the graphics stack.
|
||||
#define OLED_TINY
|
||||
#define SCREEN_TRANSITION_FRAMERATE 10
|
||||
|
||||
@@ -68,7 +68,7 @@ custom_sdkconfig =
|
||||
# OTA method: LittleFS
|
||||
CONFIG_OTA_METHOD_LITTLEFS=y
|
||||
|
||||
# Skip version check — we force OTA regardless
|
||||
# Skip version check - we force OTA regardless
|
||||
# CONFIG_OTA_VERSION_CHECK_HOST_SLAVE is not set
|
||||
# CONFIG_OTA_VERSION_CHECK_SLAVEFW_SLAVE is not set
|
||||
|
||||
|
||||
@@ -34,5 +34,5 @@
|
||||
// DIO2 controls an antenna switch and the TCXO voltage is controlled by DIO3
|
||||
#define SX126X_DIO2_AS_RF_SWITCH
|
||||
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
|
||||
// NOTE: SX126X_MAX_POWER is intentionally NOT defined here — each board sets it.
|
||||
// NOTE: SX126X_MAX_POWER is intentionally NOT defined here - each board sets it.
|
||||
#endif
|
||||
|
||||
@@ -43,7 +43,7 @@ void setupNicheGraphics()
|
||||
|
||||
// E-Ink Driver
|
||||
// -----------------------------
|
||||
// The ED047TC1 is a parallel display — no SPI bus setup needed.
|
||||
// The ED047TC1 is a parallel display - no SPI bus setup needed.
|
||||
// begin() args are part of the EInk interface but are ignored for parallel displays.
|
||||
|
||||
Drivers::EInk *driver = new Drivers::ED047TC1;
|
||||
@@ -61,7 +61,7 @@ void setupNicheGraphics()
|
||||
// Set how unhealthy additional FAST updates beyond this number are
|
||||
inkhud->setDisplayResilience(7, 1.5);
|
||||
|
||||
// Prepare fonts — use larger sizes to suit the 4.7" screen at ~234 DPI
|
||||
// Prepare fonts - use larger sizes to suit the 4.7" screen at ~234 DPI
|
||||
InkHUD::Applet::fontLarge = FREESANS_24PT_WIN1253;
|
||||
InkHUD::Applet::fontMedium = FREESANS_18PT_WIN1253;
|
||||
InkHUD::Applet::fontSmall = FREESANS_12PT_WIN1253;
|
||||
|
||||
@@ -18,8 +18,8 @@ void earlyInitVariant()
|
||||
|
||||
// Program GT911 touch controller to I2C address 0x14 (GT911_SLAVE_ADDRESS_H) before
|
||||
// the I2C bus scan runs. GPIO3 (INT) defaults LOW on ESP32-S3 cold boot, which would
|
||||
// leave the GT911 at 0x5D (GT911_SLAVE_ADDRESS_L) — the same address as the SFA30
|
||||
// air quality sensor — causing a false-positive SFA30 detection during the I2C scan.
|
||||
// leave the GT911 at 0x5D (GT911_SLAVE_ADDRESS_L) - the same address as the SFA30
|
||||
// air quality sensor - causing a false-positive SFA30 detection during the I2C scan.
|
||||
//
|
||||
// GT911 datasheet §4.3 "Address Selection":
|
||||
// Pull INT HIGH before releasing RST → device latches address 0x14 (SLAVE_ADDRESS_H)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#if defined(__APPLE__)
|
||||
#include <errno.h>
|
||||
#include <malloc/malloc.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
// LovyanGFX includes the Linux header name; bridge it for Darwin native builds.
|
||||
static inline void *memalign(size_t alignment, size_t size)
|
||||
|
||||
@@ -121,7 +121,7 @@ test_testing_command =
|
||||
; ---------------------------------------------------------------------------
|
||||
; Native build for macOS (Darwin / arm64 + x86_64). Headless meshtasticd that
|
||||
; runs in SimRadio mode (`-s`) or against real LoRa hardware via a CH341
|
||||
; USB-SPI bridge. No BlueZ, libgpiod, or Linux I2C — those require Linux.
|
||||
; USB-SPI bridge. No BlueZ, libgpiod, or Linux I2C - those require Linux.
|
||||
;
|
||||
; Prerequisites (Homebrew):
|
||||
; brew install platformio yaml-cpp libuv openssl@3 libusb argp-standalone pkg-config jsoncpp
|
||||
@@ -129,24 +129,24 @@ test_testing_command =
|
||||
; brew install ulfius
|
||||
;
|
||||
; The macOS-side patches now live upstream:
|
||||
; * meshtastic/platform-native — `String.h`-shadow shim, `-Wno-enum-constexpr-conversion`,
|
||||
; * meshtastic/platform-native - `String.h`-shadow shim, `-Wno-enum-constexpr-conversion`,
|
||||
; empty-variant-dir guard. Pulled via `portduino_base.platform` zip pin.
|
||||
; * meshtastic/framework-portduino — LinuxHardwareI2C macOS stubs, AsyncUDP
|
||||
; * meshtastic/framework-portduino - LinuxHardwareI2C macOS stubs, AsyncUDP
|
||||
; SOCK_NONBLOCK fallback, Common.h __APPLE__ guard, WiFiServer.cpp extern-C
|
||||
; fix, package.json URL refresh. Pulled by platform-native at its pinned commit.
|
||||
; This env therefore only carries the firmware-side build flags and src filter.
|
||||
;
|
||||
; Real LoRa hardware on macOS:
|
||||
; The same lib_dep `pine64/libch341-spi-userspace` used on Linux works on
|
||||
; macOS as-is — its `libusb_detach_kernel_driver()` call is `__linux__`-
|
||||
; macOS as-is - its `libusb_detach_kernel_driver()` call is `__linux__`-
|
||||
; guarded, but on macOS the kernel doesn't bind a driver to a CH341A SPI
|
||||
; bridge (PID 0x5512; bDeviceClass=0xff vendor-specific) by default, so
|
||||
; no detach is needed. Apple's bundled CH34x driver targets the CH340
|
||||
; *UART* variant (PID 0x7523) — different product. libusb opens the device
|
||||
; *UART* variant (PID 0x7523) - different product. libusb opens the device
|
||||
; and claims interface 0 directly via IOUSBHostInterface.
|
||||
;
|
||||
; To use, point `meshtasticd` at any of the existing `bin/config.d/lora-*.yaml`
|
||||
; files that specify `spidev: ch341` — they're platform-agnostic. Example:
|
||||
; files that specify `spidev: ch341` - they're platform-agnostic. Example:
|
||||
; pio run -e native-macos
|
||||
; mkdir -p ~/.meshtasticd && cp bin/config-dist.yaml ~/.meshtasticd/config.yaml
|
||||
; # Edit ~/.meshtasticd/config.yaml: ConfigDirectory: ./config.d/
|
||||
@@ -167,7 +167,7 @@ test_testing_command =
|
||||
; claims interface 0, libusb will fail with LIBUSB_ERROR_BUSY.
|
||||
; Workaround: `sudo kmutil unload -b <bundleID>`.
|
||||
; LIBUSB_DEBUG=4 .pio/build/native-macos/meshtasticd
|
||||
; Verbose libusb trace — useful when claim_interface fails.
|
||||
; Verbose libusb trace - useful when claim_interface fails.
|
||||
; ---------------------------------------------------------------------------
|
||||
[env:native-macos]
|
||||
extends = native_base
|
||||
@@ -189,7 +189,7 @@ build_flags = ${portduino_base.build_flags_common}
|
||||
-L/opt/homebrew/opt/yaml-cpp/lib
|
||||
-largp
|
||||
-DPORTDUINO_DARWIN
|
||||
; Headless build — variants/native/portduino/variant.h would otherwise
|
||||
; Headless build - variants/native/portduino/variant.h would otherwise
|
||||
; default HAS_SCREEN to 1 and pull in screen-renderer source that uses
|
||||
; VLA-with-initializer (a GNU/GCC extension Apple Clang rejects).
|
||||
; MESHTASTIC_EXCLUDE_SCREEN gates the optional `screen->setHeading(...)`-
|
||||
@@ -202,7 +202,7 @@ build_flags = ${portduino_base.build_flags_common}
|
||||
; PiWebServer (src/mesh/raspihttp/PiWebServer.cpp) auto-engages when ulfius
|
||||
; headers are reachable via `#if __has_include(<ulfius.h>)`. The `|| :`
|
||||
; tail keeps the build green when the user hasn't run `brew install ulfius`
|
||||
; — they just don't get the HTTP API in that case.
|
||||
; - they just don't get the HTTP API in that case.
|
||||
!pkg-config --cflags --libs liborcania --silence-errors || :
|
||||
!pkg-config --cflags --libs libyder --silence-errors || :
|
||||
!pkg-config --cflags --libs libulfius --silence-errors || :
|
||||
@@ -216,7 +216,7 @@ build_src_filter = ${native_base.build_src_filter}
|
||||
-<graphics/Panel_sdl.cpp>
|
||||
-<graphics/TFTDisplay.cpp>
|
||||
; LovyanGFX includes <malloc.h> (Linux-only) and is only needed by TFT
|
||||
; variants — not relevant for the headless macOS build.
|
||||
; variants - not relevant for the headless macOS build.
|
||||
lib_ignore =
|
||||
${portduino_base.lib_ignore}
|
||||
LovyanGFX
|
||||
@@ -247,15 +247,15 @@ build_src_filter = ${env:native-macos.build_src_filter}
|
||||
lib_ignore = ${env:native-macos.lib_ignore}
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; WASM (Emscripten) — the portduino node compiled to WebAssembly, driving a real
|
||||
; WASM (Emscripten) - the portduino node compiled to WebAssembly, driving a real
|
||||
; LoRa radio over WebUSB through a CH341 (src/platform/portduino/wasm/). The same
|
||||
; setup()/loop() firmware that runs native, but the radio HAL talks WebUSB and
|
||||
; the cooperative loop suspends via Asyncify. Software/CI build target; the radio
|
||||
; path itself is hardware (CH341/WebUSB, Chromium). See the README in that dir.
|
||||
;
|
||||
; Toolchain comes from the meshtastic/platform-wasm PlatformIO platform (emcc/
|
||||
; em++). Prereq: an Emscripten SDK on PATH — `source <emsdk>/emsdk_env.sh` (or
|
||||
; export EMSDK=<path>) — so the platform builder can locate emcc.
|
||||
; em++). Prereq: an Emscripten SDK on PATH - `source <emsdk>/emsdk_env.sh` (or
|
||||
; export EMSDK=<path>) - so the platform builder can locate emcc.
|
||||
;
|
||||
; Build: pio run -e native-wasm -> .pio/build/native-wasm/meshnode.{mjs,wasm}
|
||||
; ---------------------------------------------------------------------------
|
||||
@@ -289,7 +289,7 @@ build_flags = ${arduino_base.build_flags}
|
||||
; firmware uses gettimeofday(); the native toolchain pulls <sys/time.h> in
|
||||
; transitively but emscripten doesn't, so force it.
|
||||
-include sys/time.h
|
||||
; Headless browser node — no screen / GPS / I2C / sensors / host services.
|
||||
; Headless browser node - no screen / GPS / I2C / sensors / host services.
|
||||
; Same exclusions the standalone emcc build used; gate out hardware/host code
|
||||
; the tab can't run (the EXCLUDE_* defines also keep LDF from pulling the libs).
|
||||
-DHAS_SCREEN=0
|
||||
@@ -306,7 +306,7 @@ build_flags = ${arduino_base.build_flags}
|
||||
|
||||
; The firmware-specific emcc *link* settings (exported fns, runtime methods, the
|
||||
; WebUSB Asyncify import seam, the ES-module factory name) can't ride in
|
||||
; build_flags — PlatformIO only feeds those to the compile step — so they're
|
||||
; build_flags - PlatformIO only feeds those to the compile step - so they're
|
||||
; appended to LINKFLAGS by this post script. (The generic Asyncify/MODULARIZE/
|
||||
; memory flags and emsdk auto-location both come from the platform-wasm builder.)
|
||||
extra_scripts =
|
||||
@@ -328,11 +328,11 @@ lib_ignore =
|
||||
LovyanGFX
|
||||
SD
|
||||
|
||||
; Curated source set — the proven standalone emcc build's file list expressed as
|
||||
; Curated source set - the proven standalone emcc build's file list expressed as
|
||||
; a PlatformIO filter. Deny everything, then add exactly what the browser node
|
||||
; links: the wasm cooperative-loop entry, the mesh stack (top-level + generated),
|
||||
; concurrency, the portduino glue, and the non-esp32 modules (the EXCLUDE_*
|
||||
; defines gate the unwanted module bodies). serialization/ stays excluded — the
|
||||
; defines gate the unwanted module bodies). serialization/ stays excluded - the
|
||||
; wasm stub replaces MeshPacketSerializer (jsoncpp is MQTT-only).
|
||||
build_src_filter =
|
||||
-<*>
|
||||
|
||||
@@ -144,7 +144,7 @@ _(none)_
|
||||
- Meshtastic firmware is aware of the gain of the E22-900M30S module, so the Meshtastic clients' Tx power setting reflects the actual output power, i.e. setting 30 dBm in the Meshtastic app programs the E22 module to correctly output 30 dBm, setting 24 dBm will output 24 dBm, etc.
|
||||
- **Adequate 5V Power Supply to the E22 Module**
|
||||
- Have a bypass capacitor from its 5V supply to ground; 100 µF works well
|
||||
- Voltage must be between 5V–5.5V, lower supply voltage results in less output power; for example, with a fully charged LiPo at 4.2V, Tx power appears to max out around 26-27 dBm
|
||||
- Voltage must be between 5V-5.5V, lower supply voltage results in less output power; for example, with a fully charged LiPo at 4.2V, Tx power appears to max out around 26-27 dBm
|
||||
|
||||
### Additional Reading
|
||||
|
||||
|
||||
@@ -82,12 +82,12 @@ extern "C" {
|
||||
#define PIN_WIRE_SDA (32 + 3)
|
||||
#define PIN_WIRE_SCL (0 + 10)
|
||||
|
||||
#define PIN_SENSOR_EN (32 + 6) // Active LOW — controls IMU and compass VDD
|
||||
#define PIN_SENSOR_EN (32 + 6) // Active LOW - controls IMU and compass VDD
|
||||
#define PIN_SENSOR_EN_ACTIVE LOW
|
||||
|
||||
// ICM42607P interrupt pins — populated on PCB, not yet used in firmware
|
||||
// #define ICM_42607P_INT_PIN (32 + 1) // INT1 — P1.01
|
||||
// #define ICM_42607P_INT2_PIN (32 + 7) // INT2 — P1.07
|
||||
// ICM42607P interrupt pins - populated on PCB, not yet used in firmware
|
||||
// #define ICM_42607P_INT_PIN (32 + 1) // INT1 - P1.01
|
||||
// #define ICM_42607P_INT2_PIN (32 + 7) // INT2 - P1.07
|
||||
|
||||
// LoRa (SX1262)
|
||||
|
||||
@@ -104,12 +104,12 @@ extern "C" {
|
||||
|
||||
#define SPI_INTERFACES_COUNT 2
|
||||
|
||||
// SPI0 — LoRa
|
||||
// SPI0 - LoRa
|
||||
#define PIN_SPI_MISO (0 + 3)
|
||||
#define PIN_SPI_MOSI (32 + 14)
|
||||
#define PIN_SPI_SCK (32 + 13)
|
||||
|
||||
// SPI1 — Display (ST7735, write-only)
|
||||
// SPI1 - Display (ST7735, write-only)
|
||||
#define PIN_SPI1_MISO ST7735_MISO
|
||||
#define PIN_SPI1_MOSI ST7735_SDA
|
||||
#define PIN_SPI1_SCK ST7735_SCK
|
||||
@@ -155,7 +155,7 @@ extern "C" {
|
||||
|
||||
// Power / USB
|
||||
|
||||
#define NRF_APM // USB VBUS detection via nrfx_power_usbstatus_get() — no dedicated charging IC on this board
|
||||
#define NRF_APM // USB VBUS detection via nrfx_power_usbstatus_get() - no dedicated charging IC on this board
|
||||
#define HAS_RTC 0 // No external RTC fitted
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -31,10 +31,7 @@ const uint32_t g_ADigitalPinMap[] = {
|
||||
// P1
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47};
|
||||
|
||||
void initVariant()
|
||||
{
|
||||
|
||||
}
|
||||
void initVariant() {}
|
||||
|
||||
void variant_shutdown()
|
||||
{
|
||||
|
||||
@@ -39,8 +39,8 @@ extern "C" {
|
||||
#define NUM_ANALOG_INPUTS (1)
|
||||
#define NUM_ANALOG_OUTPUTS (0)
|
||||
|
||||
#define PIN_LED1 (32 + 15) // green
|
||||
#define LED_BLUE PIN_LED1 // fake for bluefruit library
|
||||
#define PIN_LED1 (32 + 15) // green
|
||||
#define LED_BLUE PIN_LED1 // fake for bluefruit library
|
||||
#define LED_GREEN PIN_LED1
|
||||
#define LED_STATE_ON 0 // State when LED is lit
|
||||
|
||||
@@ -78,10 +78,10 @@ No longer populated on PCB
|
||||
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
|
||||
|
||||
#define USE_KCT8103L_PA_ONLY
|
||||
#define LORA_KCT8103L_EN (0 + 15) // CSD - KCT8103L chip enable (HIGH=on)
|
||||
#define LORA_KCT8103L_TX_RX (0 + 16) // TX or bypass control (HIGH=TX, LOW=RX)
|
||||
#define LORA_PA_POWER LORA_KCT8103L_EN
|
||||
#define RF_PA_DETECT_PIN (0 + 13) // HIGH=high-power PA, LOW=low-power
|
||||
#define LORA_KCT8103L_EN (0 + 15) // CSD - KCT8103L chip enable (HIGH=on)
|
||||
#define LORA_KCT8103L_TX_RX (0 + 16) // TX or bypass control (HIGH=TX, LOW=RX)
|
||||
#define LORA_PA_POWER LORA_KCT8103L_EN
|
||||
#define RF_PA_DETECT_PIN (0 + 13) // HIGH=high-power PA, LOW=low-power
|
||||
#define RF_PA_HIGH_POWER_VALUE HIGH
|
||||
|
||||
/*
|
||||
@@ -105,10 +105,10 @@ No longer populated on PCB
|
||||
#define PIN_GPS_EN (0 + 7) // P0.07, VGNSS_Ctrl
|
||||
#define GPS_EN_ACTIVE LOW
|
||||
#define PERIPHERAL_WARMUP_MS 1000 // Make sure GNSS power is stable before continuing
|
||||
#define PIN_GPS_STANDBY (32 + 2) // P1.02, WAKE_UP. Low allows sleep, high forces wake.
|
||||
#define PIN_GPS_PPS (32 + 4) // P1.04, 1PPS
|
||||
#define GPS_RX_PIN (32 + 5) // P1.05, MCU RX connected to GPS TXD.
|
||||
#define GPS_TX_PIN (32 + 7) // P1.07, MCU TX connected to GPS RXD.
|
||||
#define PIN_GPS_STANDBY (32 + 2) // P1.02, WAKE_UP. Low allows sleep, high forces wake.
|
||||
#define PIN_GPS_PPS (32 + 4) // P1.04, 1PPS
|
||||
#define GPS_RX_PIN (32 + 5) // P1.05, MCU RX connected to GPS TXD.
|
||||
#define GPS_TX_PIN (32 + 7) // P1.07, MCU TX connected to GPS RXD.
|
||||
|
||||
#define GPS_THREAD_INTERVAL 50
|
||||
|
||||
@@ -123,9 +123,9 @@ No longer populated on PCB
|
||||
|
||||
#define SERIAL_PRINT_PORT 0
|
||||
|
||||
#define ADC_CTRL (0 + 21) // P0.21, ADC_Ctrl
|
||||
#define ADC_CTRL (0 + 21) // P0.21, ADC_Ctrl
|
||||
#define ADC_CTRL_ENABLED HIGH
|
||||
#define BATTERY_PIN (0 + 4) // P0.04, ADC_IN
|
||||
#define BATTERY_PIN (0 + 4) // P0.04, ADC_IN
|
||||
#define ADC_RESOLUTION 14
|
||||
|
||||
#define BATTERY_SENSE_RESOLUTION_BITS 12
|
||||
|
||||
@@ -45,7 +45,7 @@ void earlyInitVariant()
|
||||
{
|
||||
// 3.3V rail: toggle RT9080_EN HIGH → LOW → HIGH with 100 ms dwell so the
|
||||
// LDO enters enable from a known state. The single-shot HIGH in main.cpp
|
||||
// is not enough on this hardware — if the chip was in a half-enabled
|
||||
// is not enough on this hardware - if the chip was in a half-enabled
|
||||
// state from a previous reset, the rail brown-outs once LoRa TX fires.
|
||||
pinMode(PIN_POWER_EN, OUTPUT);
|
||||
digitalWrite(PIN_POWER_EN, HIGH);
|
||||
|
||||
@@ -37,7 +37,7 @@ extern "C" {
|
||||
#define WS2812_DATA_3 (0 + 28) // P0.28 - BLE pairing (blue)
|
||||
|
||||
// Wire each WS2812 to a status role. Colour defaults are scaled to 25%
|
||||
// brightness (0x40) — the bare-die WS2812s on this board are very bright at
|
||||
// brightness (0x40) - the bare-die WS2812s on this board are very bright at
|
||||
// full intensity in a close-range enclosure.
|
||||
#define NEOPIXEL_STATUS_POWER_PIN WS2812_DATA_1
|
||||
#define NEOPIXEL_STATUS_NOTIFICATION_PIN WS2812_DATA_2
|
||||
@@ -115,7 +115,7 @@ static const uint8_t A0 = PIN_A0;
|
||||
// * relying on SSD1306Wire's built-in horizontal auto-centering
|
||||
// ((128 - width) / 2 = 28), so no horizontal shim is needed;
|
||||
// * calling SSD1306Wire::setYOffset(3) in Screen.cpp when
|
||||
// OLED_Y_OFFSET_PAGES is defined — this shifts every PAGEADDR write by
|
||||
// OLED_Y_OFFSET_PAGES is defined - this shifts every PAGEADDR write by
|
||||
// three pages (24 rows) so data lands on the visible rows.
|
||||
// ───────────────────────────────────────────────────────────────────────────
|
||||
#define HAS_SCREEN 1
|
||||
|
||||
@@ -125,8 +125,8 @@ static const uint8_t SCL = PIN_WIRE_SCL;
|
||||
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
#define GPS_UBLOX
|
||||
#define HAS_GPS 1
|
||||
#define GPS_RX_PIN D9 // P1.12 — MCU RX, wired to GPS module TX
|
||||
#define GPS_TX_PIN D10 // P1.11 — MCU TX, wired to GPS module RX
|
||||
#define GPS_RX_PIN D9 // P1.12 - MCU RX, wired to GPS module TX
|
||||
#define GPS_TX_PIN D10 // P1.11 - MCU TX, wired to GPS module RX
|
||||
#define PIN_GPS_EN D11 // P1.10
|
||||
#define GPS_EN_ACTIVE LOW
|
||||
#define GPS_BAUDRATE 38400
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# nRF54L15-DK — EBYTE E22-900M30S Wiring Guide
|
||||
# nRF54L15-DK - EBYTE E22-900M30S Wiring Guide
|
||||
|
||||
Board: **Nordic nRF54L15-DK (PCA10156)**
|
||||
Radio: **EBYTE E22-900M30S** (SX1262, 30 dBm, 868/915 MHz)
|
||||
@@ -9,9 +9,9 @@ Radio: **EBYTE E22-900M30S** (SX1262, 30 dBm, 868/915 MHz)
|
||||
|
||||
The nRF54L15 splits its GPIOs across three supply domains:
|
||||
|
||||
- **P0** — Main domain, **3.0 V** — usable
|
||||
- **P1** — LP domain, **1.8 V** — **not compatible** with the SX1262
|
||||
- **P2** — HP domain, **3.0 V** — usable
|
||||
- **P0** - Main domain, **3.0 V** - usable
|
||||
- **P1** - LP domain, **1.8 V** - **not compatible** with the SX1262
|
||||
- **P2** - HP domain, **3.0 V** - usable
|
||||
|
||||
The SX1262 requires VIH ≥ 0.7 × VDD (≈ 2.31 V at VDD = 3.3 V). P1's 1.8 V output
|
||||
leaves the chip stuck in reset with `BUSY` never going LOW. All E22 signals
|
||||
@@ -19,24 +19,25 @@ therefore live on **P2** and are driven by **SPIM00**.
|
||||
|
||||
> `P2.09` is normally wired to LED0 on the DK; we ignore the LED and use
|
||||
> SPIM00's default MISO pin. The on-board MX25R64 NOR flash also sat on SPIM00
|
||||
> — it is deleted in the device-tree overlay to free the bus.
|
||||
>
|
||||
> - it is deleted in the device-tree overlay to free the bus.
|
||||
|
||||
---
|
||||
|
||||
## Connections — J2 header, P2 bank
|
||||
## Connections - J2 header, P2 bank
|
||||
|
||||
| E22-900M30S | GPIO | DK pin | Function |
|
||||
| ----------- | ----- | ------ | ---------------------------------------------- |
|
||||
| MISO | P2.04 | 36 | SPIM00 data in |
|
||||
| NSS / CS | P2.05 | 37 | SPI chip-select (driven by RadioLib as a GPIO) |
|
||||
| DIO1 | P2.06 | 38 | IRQ — modem interrupt (routed via gpiote30) |
|
||||
| DIO1 | P2.06 | 38 | IRQ - modem interrupt (routed via gpiote30) |
|
||||
| BUSY | P2.03 | 35 | Module busy (GPIO input) |
|
||||
| NRESET | P2.00 | 32 | Module reset (GPIO output, active LOW) |
|
||||
| RXEN | P2.07 | 39 | LNA enable — held HIGH via `SX126X_ANT_SW` |
|
||||
| RXEN | P2.07 | 39 | LNA enable - held HIGH via `SX126X_ANT_SW` |
|
||||
| MOSI | P2.02 | 34 | SPIM00 data out |
|
||||
| SCK | P2.01 | 33 | SPIM00 clock |
|
||||
| GND | — | GND | Common ground |
|
||||
| VCC | — | VDD | 3.3 V |
|
||||
| GND | - | GND | Common ground |
|
||||
| VCC | - | VDD | 3.3 V |
|
||||
|
||||
> **Numbering convention**: `P0.n = n`, `P1.n = 16+n`, `P2.n = 32+n`.
|
||||
> Example: `P2.04` → 32 + 4 = **36**.
|
||||
@@ -55,27 +56,27 @@ Without this bridge the module **will not transmit** (PA is never enabled).
|
||||
|
||||
---
|
||||
|
||||
## RXEN — LNA always on
|
||||
## RXEN - LNA always on
|
||||
|
||||
`RXEN` (P2.07) is held HIGH permanently via `SX126X_ANT_SW 39` in `variant.h`.
|
||||
**Do not use** `SX126X_RXEN` — RadioLib would drive it LOW in IDLE state and
|
||||
**Do not use** `SX126X_RXEN` - RadioLib would drive it LOW in IDLE state and
|
||||
the LNA would stay disabled (radio deaf in RX).
|
||||
|
||||
---
|
||||
|
||||
## Reserved DK pins — do not reuse
|
||||
## Reserved DK pins - do not reuse
|
||||
|
||||
| Pins | Reserved function |
|
||||
| ----------- | -------------------------------------------------------- |
|
||||
| P0.00–P0.03 | IMCU debug UART (uart30, J-Link VCOM — used by RTT host) |
|
||||
| P0.00-P0.03 | IMCU debug UART (uart30, J-Link VCOM - used by RTT host) |
|
||||
| P0.04 | BTN3 |
|
||||
| P1.00–P1.01 | 32 kHz crystal |
|
||||
| P1.02–P1.03 | NFC antenna |
|
||||
| P1.10 | LED1 (status LED — kept) |
|
||||
| P1.00-P1.01 | 32 kHz crystal |
|
||||
| P1.02-P1.03 | NFC antenna |
|
||||
| P1.10 | LED1 (status LED - kept) |
|
||||
| P1.13 | BTN0 (only remaining user button) |
|
||||
| P1.14 | LED3 |
|
||||
| P2.01–P2.05 | SPIM00 / E22 (see connection table above) |
|
||||
| P2.08–P2.10 | Trace ETM / LED2 (avoid) |
|
||||
| P2.01-P2.05 | SPIM00 / E22 (see connection table above) |
|
||||
| P2.08-P2.10 | Trace ETM / LED2 (avoid) |
|
||||
|
||||
---
|
||||
|
||||
@@ -104,5 +105,5 @@ INFO | ... lora.begin() = 0 ← RADIOLIB_ERR_NONE
|
||||
```
|
||||
|
||||
If you see `Record critical error 3` (`NO_RADIO`), check: DIO2→TXEN bridge,
|
||||
supply voltages (the E22 must see 3.0–3.3 V on P2, not 1.8 V), and SPI wiring
|
||||
supply voltages (the E22 must see 3.0-3.3 V on P2, not 1.8 V), and SPI wiring
|
||||
continuity.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[env:nrf54l15dk]
|
||||
# PRIVATE_HW (255) — the protobuf HardwareModel enum reserves DK / DIY boards
|
||||
# PRIVATE_HW (255) - the protobuf HardwareModel enum reserves DK / DIY boards
|
||||
# without an SKU under PRIVATE_HW; no dedicated enum value will be assigned.
|
||||
custom_meshtastic_hw_model = 255
|
||||
custom_meshtastic_hw_model_slug = NRF54L15_DK
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
/*
|
||||
* Nordic nRF54L15-DK (PCA10156) — Meshtastic variant
|
||||
* Nordic nRF54L15-DK (PCA10156) - Meshtastic variant
|
||||
*
|
||||
* ── GPIO voltage domains ─────────────────────────────────────────────────────
|
||||
* P0 (gpio0 @ 0x10A000) Main domain 3.0 V ← usable
|
||||
@@ -12,13 +12,13 @@
|
||||
* P1 outputs only 1.8 V → chip stays in reset, BUSY never goes LOW.
|
||||
* All E22 signals are therefore on P2 (3.0 V), driven by SPIM00.
|
||||
*
|
||||
* EBYTE E22-900M30S (SX1262) wiring — J2 header, all P2:
|
||||
* EBYTE E22-900M30S (SX1262) wiring - J2 header, all P2:
|
||||
*
|
||||
* E22 pin GPIO pin# Notes
|
||||
* ─────────────────────────────────────────────────────────────────────
|
||||
* MISO → P2.04 36 SPIM00 data in
|
||||
* NSS/CS → P2.05 37 SPI chip-select (RadioLib GPIO)
|
||||
* DIO1 → P2.06 38 IRQ — interrupt via gpiote30
|
||||
* DIO1 → P2.06 38 IRQ - interrupt via gpiote30
|
||||
* BUSY → P2.03 35 GPIO input
|
||||
* NRESET → P2.00 32 GPIO output
|
||||
* RXEN → P2.07 39 Held HIGH via ANT_SW (LNA always active)
|
||||
@@ -32,13 +32,13 @@
|
||||
*
|
||||
* Reserved / do-not-use DK pins:
|
||||
* P0.00-P0.02 IMCU VCOM TX/RX/RTS pads (uart30 disabled; pads idle)
|
||||
* P0.03 I2C SDA (TWIM30) — sensor bus
|
||||
* P0.04 I2C SCL (TWIM30) — sensor bus; SW3 button on this pad,
|
||||
* P0.03 I2C SDA (TWIM30) - sensor bus
|
||||
* P0.04 I2C SCL (TWIM30) - sensor bus; SW3 button on this pad,
|
||||
* DO NOT press SW3 while I2C is active
|
||||
* P1.00-P1.01 32 kHz crystal
|
||||
* P1.02-P1.03 NFC antenna
|
||||
* P1.10 LED1 (status LED — keep)
|
||||
* P1.13 BTN0 — main user button
|
||||
* P1.10 LED1 (status LED - keep)
|
||||
* P1.13 BTN0 - main user button
|
||||
* P1.14 LED3
|
||||
* P2.01-P2.05 SPIM00 / E22 (see above)
|
||||
* P2.08-P2.10 Trace pins (avoid)
|
||||
@@ -48,16 +48,16 @@
|
||||
#define NRF54L15_DK
|
||||
#endif
|
||||
|
||||
// ── SX1262 / E22-900M30S — all P2, HP domain (3.0 V) ────────────────────────
|
||||
// ── SX1262 / E22-900M30S - all P2, HP domain (3.0 V) ────────────────────────
|
||||
#define USE_SX1262
|
||||
#define SX126X_CS 37 // P2.05 — chip-select
|
||||
#define SX126X_DIO1 38 // P2.06 — IRQ (gpiote30 capable)
|
||||
#define SX126X_BUSY 35 // P2.03 — BUSY
|
||||
#define SX126X_RESET 32 // P2.00 — NRESET
|
||||
#define SX126X_CS 37 // P2.05 - chip-select
|
||||
#define SX126X_DIO1 38 // P2.06 - IRQ (gpiote30 capable)
|
||||
#define SX126X_BUSY 35 // P2.03 - BUSY
|
||||
#define SX126X_RESET 32 // P2.00 - NRESET
|
||||
|
||||
// RXEN (P2.07) held HIGH permanently — LNA always active.
|
||||
// RXEN (P2.07) held HIGH permanently - LNA always active.
|
||||
// RadioLib must NOT toggle it; ANT_SW drives it HIGH before lora.begin().
|
||||
#define SX126X_ANT_SW 39 // P2.07 — RXEN driven HIGH at init
|
||||
#define SX126X_ANT_SW 39 // P2.07 - RXEN driven HIGH at init
|
||||
|
||||
// DIO2 controls TXEN via bridge on E22 module.
|
||||
// DIO3 provides 1.8 V TCXO reference.
|
||||
@@ -65,14 +65,14 @@
|
||||
#define SX126X_DIO3_TCXO_VOLTAGE 1.8f
|
||||
|
||||
// ── LEDs (active HIGH) ───────────────────────────────────────────────────────
|
||||
#define PIN_LED1 26 // P1.10 — LED1 (status LED, LP domain — output only, OK)
|
||||
#define PIN_LED2 41 // P2.09 — LED0 on DK (remapped; P2.07 now used for RXEN)
|
||||
#define PIN_LED1 26 // P1.10 - LED1 (status LED, LP domain - output only, OK)
|
||||
#define PIN_LED2 41 // P2.09 - LED0 on DK (remapped; P2.07 now used for RXEN)
|
||||
#define LED_STATE_ON 1
|
||||
|
||||
// ── Buttons (active LOW, internal pull-up) ───────────────────────────────────
|
||||
// BTN1 (P1.09), BTN2 (P1.08) and BTN3 (P0.04) deleted from DTS — only BTN0
|
||||
// BTN1 (P1.09), BTN2 (P1.08) and BTN3 (P0.04) deleted from DTS - only BTN0
|
||||
// remains. BTN3's pad (P0.04) is now I2C SCL.
|
||||
#define PIN_BUTTON1 29 // P1.13 — BTN0
|
||||
#define PIN_BUTTON1 29 // P1.13 - BTN0
|
||||
#define BUTTON_NEED_PULLUP
|
||||
|
||||
// ── I2C bus (TWIM30, HP domain, 3.0 V) ──────────────────────────────────────
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Raspberry Pi Pico 2 + W5500 + E22-900M30S — Meshtastic Variant
|
||||
# Raspberry Pi Pico 2 + W5500 + E22-900M30S - Meshtastic Variant
|
||||
|
||||
Meshtastic support for a **Raspberry Pi Pico 2** (RP2350, 4 MB flash) with an external **W5500** Ethernet module and an **EBYTE E22-900M30S** LoRa module.
|
||||
|
||||
@@ -20,9 +20,9 @@ Meshtastic support for a **Raspberry Pi Pico 2** (RP2350, 4 MB flash) with an ex
|
||||
|
||||
| GPIO | Function |
|
||||
| ---- | --------------------------------------- |
|
||||
| GP24 | VBUS sense — HIGH when USB is connected |
|
||||
| GP24 | VBUS sense - HIGH when USB is connected |
|
||||
| GP25 | User LED (heartbeat) |
|
||||
| GP29 | ADC3 — VSYS/3, measures supply voltage |
|
||||
| GP29 | ADC3 - VSYS/3, measures supply voltage |
|
||||
|
||||
### W5500 Ethernet (SPI0)
|
||||
|
||||
@@ -33,7 +33,7 @@ Meshtastic support for a **Raspberry Pi Pico 2** (RP2350, 4 MB flash) with an ex
|
||||
| SCK | GP18 |
|
||||
| MOSI | GP19 |
|
||||
| RST | GP20 |
|
||||
| INT | — (nc) |
|
||||
| INT | - (nc) |
|
||||
| VCC | 3.3V |
|
||||
| GND | GND |
|
||||
|
||||
@@ -50,10 +50,10 @@ Meshtastic support for a **Raspberry Pi Pico 2** (RP2350, 4 MB flash) with an ex
|
||||
| RESET | GP15 | Active LOW reset |
|
||||
| DIO1 | GP14 | IRQ interrupt |
|
||||
| BUSY | GP2 | Module busy indicator |
|
||||
| RXEN | GP3 | LNA enable — held HIGH permanently |
|
||||
| RXEN | GP3 | LNA enable - held HIGH permanently |
|
||||
| TXEN | ← DIO2 | See wiring note below |
|
||||
| VCC | 3.3V | Add a 100 µF capacitor close to the module |
|
||||
| GND | GND | — |
|
||||
| GND | GND | - |
|
||||
|
||||
> See `wiring.svg` in this directory for the full connection diagram.
|
||||
|
||||
@@ -81,10 +81,10 @@ With this bridge in place, `SX126X_DIO2_AS_RF_SWITCH` causes the SX1262 to drive
|
||||
pio run -e pico2_w5500_e22
|
||||
```
|
||||
|
||||
### Flash — BOOTSEL mode
|
||||
### Flash - BOOTSEL mode
|
||||
|
||||
1. Hold the **BOOTSEL** button on the Pico 2.
|
||||
2. Connect USB to the PC — it appears as a `RPI-RP2` storage drive.
|
||||
2. Connect USB to the PC - it appears as a `RPI-RP2` storage drive.
|
||||
3. Copy the `.uf2` file:
|
||||
|
||||
```text
|
||||
@@ -119,7 +119,7 @@ Services available once connected:
|
||||
|
||||
## Technical notes
|
||||
|
||||
### LoRa — RF control
|
||||
### LoRa - RF control
|
||||
|
||||
| Define | Effect |
|
||||
| ------------------------------ | ----------------------------------------------------------- |
|
||||
@@ -128,7 +128,7 @@ Services available once connected:
|
||||
| `SX126X_DIO3_TCXO_VOLTAGE 1.8` | E22 TCXO controlled by DIO3 |
|
||||
| `-D EBYTE_E22_900M30S` | Sets `TX_GAIN_LORA=7`, max power 22 dBm |
|
||||
|
||||
> RXEN and TXEN may both be HIGH simultaneously during TX — this is safe for the E22 RF switch.
|
||||
> RXEN and TXEN may both be HIGH simultaneously during TX - this is safe for the E22 RF switch.
|
||||
|
||||
### Ethernet
|
||||
|
||||
@@ -138,7 +138,7 @@ Services available once connected:
|
||||
|
||||
### HW_VENDOR
|
||||
|
||||
Mapped to `meshtastic_HardwareModel_PRIVATE_HW` — no dedicated model exists in the Meshtastic protobuf for this hardware combination yet.
|
||||
Mapped to `meshtastic_HardwareModel_PRIVATE_HW` - no dedicated model exists in the Meshtastic protobuf for this hardware combination yet.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ lib_deps =
|
||||
${rp2350_base.lib_deps}
|
||||
${networking_base.lib_deps}
|
||||
${networking_extra.lib_deps}
|
||||
# Standard WIZnet Ethernet library — supports W5100/W5200/W5500 auto-detect
|
||||
# Standard WIZnet Ethernet library - supports W5100/W5200/W5500 auto-detect
|
||||
arduino-libraries/Ethernet@^2.0.2
|
||||
|
||||
debug_build_flags = ${rp2350_base.build_flags}, -g
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Raspberry Pi Pico 2 + external W5500 Ethernet module + EBYTE E22-900M30S
|
||||
// RP2350 (4 MB flash) — wire modules to the GPIO pins listed below
|
||||
// RP2350 (4 MB flash) - wire modules to the GPIO pins listed below
|
||||
//
|
||||
// LoRa (SX1262 / E22-900M30S) on SPI1:
|
||||
// SCK=GP10 MOSI=GP11 MISO=GP12 CS=GP13
|
||||
@@ -11,7 +11,7 @@
|
||||
//
|
||||
// See wiring.svg in this directory for a complete connection diagram.
|
||||
|
||||
// Community/DIY board — no dedicated Meshtastic HardwareModel
|
||||
// Community/DIY board - no dedicated Meshtastic HardwareModel
|
||||
#define PRIVATE_HW
|
||||
|
||||
#define ARDUINO_ARCH_AVR
|
||||
@@ -20,20 +20,20 @@
|
||||
#define LED_POWER PIN_LED
|
||||
|
||||
// Power monitoring
|
||||
// GP24: VBUS sense – HIGH when USB is present (digital read)
|
||||
// GP24: VBUS sense - HIGH when USB is present (digital read)
|
||||
// GP29: ADC3 measures VSYS/3 (200 kΩ / 100 kΩ divider, same as standard Pico 2)
|
||||
#define EXT_PWR_DETECT 24
|
||||
#define BATTERY_PIN 29
|
||||
#define ADC_MULTIPLIER 3.0
|
||||
#define BATTERY_SENSE_RESOLUTION_BITS 12
|
||||
// No real battery — suppress false "battery at 100%" while USB powers VSYS
|
||||
// No real battery - suppress false "battery at 100%" while USB powers VSYS
|
||||
#define NO_BATTERY_LEVEL_ON_CHARGE
|
||||
|
||||
// Optional user button — connect a button between GP6 and GND
|
||||
// Optional user button - connect a button between GP6 and GND
|
||||
// #define BUTTON_PIN 6
|
||||
// #define BUTTON_NEED_PULLUP
|
||||
|
||||
// GPS on UART1 (Serial2) — GP8 TX, GP9 RX
|
||||
// GPS on UART1 (Serial2) - GP8 TX, GP9 RX
|
||||
// GP8/GP9 belong to UART1, so we must use Serial2 (not the default Serial1/UART0).
|
||||
// GP0/GP1 (UART0 defaults) are free but the firmware treats pin 0 as "not configured".
|
||||
// GP4/GP5 occupied by I2C (SCL/SDA for BMP-280).
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# WIZnet W5500-EVB-Pico2 + E22P-868M30S — Meshtastic Variant
|
||||
# WIZnet W5500-EVB-Pico2 + E22P-868M30S - Meshtastic Variant
|
||||
|
||||
Meshtastic support for the **WIZnet W5500-EVB-Pico2**, a Raspberry Pi Pico 2 development board with an **integrated W5500 Ethernet PHY** on SPI0, paired with an external **EBYTE E22P-868M30S** LoRa module on SPI1.
|
||||
|
||||
@@ -11,7 +11,7 @@ This variant is hardware-twin of [`pico2_w5500_e22`](../diy/pico2_w5500_e22/) (s
|
||||
|
||||
> ⚠️ Flashing a W5500-EVB-Pico2 with the `pico2_w5500_e22` env builds for a 4 MB flash target and can silently overflow the 2 MB available on the WIZnet PCB. Use this variant for the WIZnet board.
|
||||
|
||||
The LoRa wiring and `variant.h` are shared with `diy/pico2_w5500_e22` via `-I variants/rp2350/diy/pico2_w5500_e22` — there is no duplicated pinout file.
|
||||
The LoRa wiring and `variant.h` are shared with `diy/pico2_w5500_e22` via `-I variants/rp2350/diy/pico2_w5500_e22` - there is no duplicated pinout file.
|
||||
|
||||
---
|
||||
|
||||
@@ -32,9 +32,9 @@ The W5500-EVB-Pico2 carries a smaller Q-SPI flash (2 MB) than a stock Pi Pico 2
|
||||
|
||||
| GPIO | Function |
|
||||
| ---- | --------------------------------------- |
|
||||
| GP24 | VBUS sense — HIGH when USB is connected |
|
||||
| GP24 | VBUS sense - HIGH when USB is connected |
|
||||
| GP25 | User LED (heartbeat) |
|
||||
| GP29 | ADC3 — VSYS/3, measures supply voltage |
|
||||
| GP29 | ADC3 - VSYS/3, measures supply voltage |
|
||||
|
||||
### W5500 Ethernet (SPI0, on-board)
|
||||
|
||||
@@ -49,7 +49,7 @@ The W5500-EVB-Pico2 carries a smaller Q-SPI flash (2 MB) than a stock Pi Pico 2
|
||||
| VCC | 3.3V |
|
||||
| GND | GND |
|
||||
|
||||
> All Ethernet pins are wired by the PCB — nothing to solder. SPI0 is reserved for the W5500.
|
||||
> All Ethernet pins are wired by the PCB - nothing to solder. SPI0 is reserved for the W5500.
|
||||
|
||||
### E22P-868M30S LoRa (SPI1, external)
|
||||
|
||||
@@ -62,19 +62,19 @@ The W5500-EVB-Pico2 carries a smaller Q-SPI flash (2 MB) than a stock Pi Pico 2
|
||||
| RESET | GP15 | Active LOW reset |
|
||||
| DIO1 | GP14 | IRQ interrupt |
|
||||
| BUSY | GP2 | Module busy indicator |
|
||||
| RFEN | GP3 | Combined LNA + PA enable — held HIGH at all times |
|
||||
| RFEN | GP3 | Combined LNA + PA enable - held HIGH at all times |
|
||||
| TXEN | ← DIO2 | Bridge on the module (see below) |
|
||||
| VCC | 3.3V | Add a 100 µF capacitor close to the module |
|
||||
| GND | GND | — |
|
||||
| GND | GND | - |
|
||||
|
||||
---
|
||||
|
||||
## E22**P** vs E22 — what changed
|
||||
## E22**P** vs E22 - what changed
|
||||
|
||||
The E22**P**-868M30**S** is the newer revision of EBYTE's 30 dBm 868 MHz module. The pinout is interchangeable with the E22-900M30S but the RF switch control differs:
|
||||
|
||||
- On the older E22-900M30S, **RXEN** enables the LNA and **TXEN** enables the PA (two separate pins).
|
||||
- On the E22**P**-868M30**S**, both functions are merged into a single **RFEN** pin acting as a global RF enable. RFEN must be held HIGH whenever the radio is active — both during RX and TX.
|
||||
- On the E22**P**-868M30**S**, both functions are merged into a single **RFEN** pin acting as a global RF enable. RFEN must be held HIGH whenever the radio is active - both during RX and TX.
|
||||
|
||||
The firmware drives this with `SX126X_ANT_SW 3`, which sets GP3 (RFEN) HIGH once at boot and leaves it there. TXEN switching during transmit is still handled by the on-module DIO2 → TXEN bridge (see below).
|
||||
|
||||
@@ -102,10 +102,10 @@ With this bridge in place, `SX126X_DIO2_AS_RF_SWITCH` causes the SX1262 to drive
|
||||
pio run -e wiznet_5500_evb_pico2_e22p
|
||||
```
|
||||
|
||||
### Flash — BOOTSEL mode
|
||||
### Flash - BOOTSEL mode
|
||||
|
||||
1. Hold the **BOOTSEL** button on the W5500-EVB-Pico2.
|
||||
2. Connect USB to the PC — it appears as a `RPI-RP2` storage drive.
|
||||
2. Connect USB to the PC - it appears as a `RPI-RP2` storage drive.
|
||||
3. Copy the `.uf2` file:
|
||||
|
||||
```text
|
||||
@@ -140,7 +140,7 @@ Services available once connected:
|
||||
|
||||
## Technical notes
|
||||
|
||||
### LoRa — RF control
|
||||
### LoRa - RF control
|
||||
|
||||
| Define | Effect |
|
||||
| ------------------------------ | ----------------------------------------------------------- |
|
||||
@@ -157,4 +157,4 @@ Services available once connected:
|
||||
|
||||
### HW_VENDOR
|
||||
|
||||
Mapped to `meshtastic_HardwareModel_PRIVATE_HW` — no dedicated model exists in the Meshtastic protobuf for this hardware combination.
|
||||
Mapped to `meshtastic_HardwareModel_PRIVATE_HW` - no dedicated model exists in the Meshtastic protobuf for this hardware combination.
|
||||
|
||||
@@ -4,7 +4,7 @@ board = wiznet_5500_evb_pico2
|
||||
board_level = community
|
||||
upload_protocol = picotool
|
||||
|
||||
# Reuses the variant.h from variants/rp2350/diy/pico2_w5500_e22 — same LoRa
|
||||
# Reuses the variant.h from variants/rp2350/diy/pico2_w5500_e22 - same LoRa
|
||||
# pinout, same W5500 pin mapping. The only differences vs pico2_w5500_e22 are
|
||||
# the board target (this PCB has 2 MB flash instead of 4 MB) and the W5500
|
||||
# being soldered on-board instead of an external module.
|
||||
@@ -22,7 +22,7 @@ lib_deps =
|
||||
${rp2350_base.lib_deps}
|
||||
${networking_base.lib_deps}
|
||||
${networking_extra.lib_deps}
|
||||
# Standard WIZnet Ethernet library — supports W5100/W5200/W5500 auto-detect
|
||||
# Standard WIZnet Ethernet library - supports W5100/W5200/W5500 auto-detect
|
||||
arduino-libraries/Ethernet@^2.0.2
|
||||
|
||||
debug_build_flags = ${rp2350_base.build_flags}, -g
|
||||
|
||||
@@ -42,8 +42,8 @@ Sample OCV curve for Li-SOCl2 primary lithium cells (e.g. Saft cells have fresh
|
||||
|
||||
// LoRa
|
||||
/*
|
||||
* RAK3172 (-20–85°C) -> No TCXO
|
||||
* RAK3172-T (-40–85°C) -> 3.0V TCXO
|
||||
* RAK3172 (-20-85°C) -> No TCXO
|
||||
* RAK3172-T (-40-85°C) -> 3.0V TCXO
|
||||
* https://github.com/RAKWireless/RAK-STM32-RUI/blob/e5a28be8fab1a492bd9223dd425ca33a8a297d90/variants/WisDuo_RAK3172-T_Board/radio_conf.h#L91
|
||||
*/
|
||||
#define TCXO_OPTIONAL
|
||||
|
||||
Reference in New Issue
Block a user