Add Waveshare ESP32-C3-Zero support

Add support for the Waveshare ESP32-C3-Zero, including BLE, USB, Wi-Fi, repeater, and room server builds.
This commit is contained in:
mloszand committed 2026-10-25 11:01:31 +01:00
1 parent 81dbae592f
commit dd90e54c6e
4 files changed
+248

No files matched your search

+46
View File
@@ -0,0 +1,46 @@
#include <Arduino.h>
#include "target.h"
WaveshareC3ZeroBoard board;
#if defined(P_LORA_SCLK)
// NOTE: ESP32-C3 only exposes one general-purpose SPI peripheral (FSPI).
// The default SPIClass() constructor does not reliably bind to it on this
// chip, which silently produces an SPI object that never talks to real
// hardware -- radio chip-detection then fails every time with no error
// other than RADIOLIB_ERR_CHIP_NOT_FOUND. Always pass FSPI explicitly.
static SPIClass spi(FSPI);
RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, spi);
#else
RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY);
#endif
WRAPPER_CLASS radio_driver(radio, board);
ESP32RTCClock fallback_clock;
AutoDiscoverRTCClock rtc_clock(fallback_clock);
#if ENV_INCLUDE_GPS
#include <helpers/sensors/MicroNMEALocationProvider.h>
MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock);
EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea);
#else
EnvironmentSensorManager sensors;
#endif
bool radio_init() {
fallback_clock.begin();
rtc_clock.begin(Wire);
#if defined(P_LORA_SCLK)
spi.begin(P_LORA_SCLK, P_LORA_MISO, P_LORA_MOSI);
return radio.std_init(&spi);
#else
return radio.std_init();
#endif
}
mesh::LocalIdentity radio_new_identity() {
RadioNoiseListener rng(radio);
return mesh::LocalIdentity(&rng); // create new random identity
}