Merge pull request #786 from recrof/xiao-nrf52-cleanup

tidy up xiao nrf52 variant
This commit is contained in:
fdlamotte
2025-09-15 15:45:38 +02:00
committed by GitHub
6 changed files with 97 additions and 147 deletions

View File

@@ -1,21 +1,19 @@
#ifdef XIAO_NRF52 #ifdef XIAO_NRF52
#include <Arduino.h> #include <Arduino.h>
#include "XiaoNrf52Board.h"
#include <bluefruit.h>
#include <Wire.h> #include <Wire.h>
#include <bluefruit.h>
#include "XiaoNrf52Board.h"
static BLEDfu bledfu; static BLEDfu bledfu;
static void connect_callback(uint16_t conn_handle) static void connect_callback(uint16_t conn_handle) {
{
(void)conn_handle; (void)conn_handle;
MESH_DEBUG_PRINTLN("BLE client connected"); MESH_DEBUG_PRINTLN("BLE client connected");
} }
static void disconnect_callback(uint16_t conn_handle, uint8_t reason) static void disconnect_callback(uint16_t conn_handle, uint8_t reason) {
{
(void)conn_handle; (void)conn_handle;
(void)reason; (void)reason;
@@ -41,12 +39,12 @@ void XiaoNrf52Board::begin() {
digitalWrite(P_LORA_TX_LED, HIGH); digitalWrite(P_LORA_TX_LED, HIGH);
#endif #endif
// pinMode(SX126X_POWER_EN, OUTPUT); // pinMode(SX126X_POWER_EN, OUTPUT);
// digitalWrite(SX126X_POWER_EN, HIGH); // digitalWrite(SX126X_POWER_EN, HIGH);
delay(10); // give sx1262 some time to power up delay(10); // give sx1262 some time to power up
} }
bool XiaoNrf52Board::startOTAUpdate(const char* id, char reply[]) { bool XiaoNrf52Board::startOTAUpdate(const char *id, char reply[]) {
// Config the peripheral connection with maximum bandwidth // Config the peripheral connection with maximum bandwidth
// more SRAM required by SoftDevice // more SRAM required by SoftDevice
// Note: All config***() function must be called before begin() // Note: All config***() function must be called before begin()
@@ -86,10 +84,8 @@ bool XiaoNrf52Board::startOTAUpdate(const char* id, char reply[]) {
Bluefruit.Advertising.start(0); // 0 = Don't stop advertising after n seconds Bluefruit.Advertising.start(0); // 0 = Don't stop advertising after n seconds
strcpy(reply, "OK - started"); strcpy(reply, "OK - started");
return true; return true;
return false;
} }
#endif #endif

View File

@@ -5,20 +5,6 @@
#ifdef XIAO_NRF52 #ifdef XIAO_NRF52
// redefine lora pins if using the S3 variant of SX1262 board
#ifdef SX1262_XIAO_S3_VARIANT
#undef P_LORA_DIO_1
#undef P_LORA_BUSY
#undef P_LORA_RESET
#undef P_LORA_NSS
#undef SX126X_RXEN
#define P_LORA_DIO_1 D0
#define P_LORA_BUSY D1
#define P_LORA_RESET D2
#define P_LORA_NSS D3
#define SX126X_RXEN D4
#endif
class XiaoNrf52Board : public mesh::MainBoard { class XiaoNrf52Board : public mesh::MainBoard {
protected: protected:
uint8_t startup_reason; uint8_t startup_reason;

View File

@@ -1,37 +1,19 @@
[nrf52840_xiao] [Xiao_nrf52]
extends = nrf52_base extends = nrf52_base
platform_packages =
toolchain-gccarmnoneeabi@~1.100301.0
framework-arduinoadafruitnrf52
board = seeed-xiao-afruitnrf52-nrf52840 board = seeed-xiao-afruitnrf52-nrf52840
board_build.ldscript = boards/nrf52840_s140_v7.ld board_build.ldscript = boards/nrf52840_s140_v7.ld
build_flags = ${nrf52_base.build_flags} build_flags = ${nrf52_base.build_flags}
-D NRF52_PLATFORM -D XIAO_NRF52 ${sensor_base.build_flags}
-I lib/nrf52/s140_nrf52_7.3.0_API/include -I lib/nrf52/s140_nrf52_7.3.0_API/include
-I lib/nrf52/s140_nrf52_7.3.0_API/include/nrf52 -I lib/nrf52/s140_nrf52_7.3.0_API/include/nrf52
lib_ignore =
BluetoothOTA
lvgl
lib5b4
lib_deps =
${nrf52_base.lib_deps}
rweather/Crypto @ ^0.4.0
adafruit/Adafruit INA3221 Library @ ^1.0.1
adafruit/Adafruit INA219 @ ^1.2.3
adafruit/Adafruit AHTX0 @ ^2.0.5
adafruit/Adafruit BME280 Library @ ^2.3.0
[Xiao_nrf52]
extends = nrf52840_xiao
;board_build.ldscript = boards/nrf52840_s140_v7.ld
build_flags = ${nrf52840_xiao.build_flags}
-D P_LORA_TX_LED=11
-I variants/xiao_nrf52 -I variants/xiao_nrf52
-I src/helpers/nrf52 -UENV_INCLUDE_GPS
-D NRF52_PLATFORM
-D XIAO_NRF52
-D RADIO_CLASS=CustomSX1262 -D RADIO_CLASS=CustomSX1262
-D WRAPPER_CLASS=CustomSX1262Wrapper -D WRAPPER_CLASS=CustomSX1262Wrapper
-D LORA_TX_POWER=22 -D LORA_TX_POWER=22
-D P_LORA_TX_LED=11
-D P_LORA_DIO_1=D1 -D P_LORA_DIO_1=D1
-D P_LORA_RESET=D2 -D P_LORA_RESET=D2
-D P_LORA_BUSY=D3 -D P_LORA_BUSY=D3
@@ -42,18 +24,16 @@ build_flags = ${nrf52840_xiao.build_flags}
-D SX126X_DIO3_TCXO_VOLTAGE=1.8 -D SX126X_DIO3_TCXO_VOLTAGE=1.8
-D SX126X_CURRENT_LIMIT=140 -D SX126X_CURRENT_LIMIT=140
-D SX126X_RX_BOOSTED_GAIN=1 -D SX126X_RX_BOOSTED_GAIN=1
-D PIN_WIRE_SCL=6 -D PIN_WIRE_SCL=D6
-D PIN_WIRE_SDA=7 -D PIN_WIRE_SDA=D7
-D ENV_INCLUDE_AHTX0=1 build_src_filter = ${nrf52_base.build_src_filter}
-D ENV_INCLUDE_BME280=1
-D ENV_INCLUDE_INA3221=1
-D ENV_INCLUDE_INA219=1
build_src_filter = ${nrf52840_xiao.build_src_filter}
+<helpers/*.cpp> +<helpers/*.cpp>
+<helpers/sensors> +<helpers/sensors>
+<../variants/xiao_nrf52> +<../variants/xiao_nrf52>
debug_tool = jlink debug_tool = jlink
upload_protocol = nrfutil upload_protocol = nrfutil
lib_deps = ${nrf52_base.lib_deps}
${sensor_base.lib_deps}
[env:Xiao_nrf52_companion_radio_ble] [env:Xiao_nrf52_companion_radio_ble]
extends = Xiao_nrf52 extends = Xiao_nrf52
@@ -94,12 +74,6 @@ lib_deps =
${Xiao_nrf52.lib_deps} ${Xiao_nrf52.lib_deps}
densaugeo/base64 @ ~1.4.0 densaugeo/base64 @ ~1.4.0
[env:Xiao_nrf52_alt_pinout_companion_radio_ble]
extends = env:Xiao_nrf52_companion_radio_ble
build_flags =
${env:Xiao_nrf52_companion_radio_ble.build_flags}
-D SX1262_XIAO_S3_VARIANT
[env:Xiao_nrf52_repeater] [env:Xiao_nrf52_repeater]
extends = Xiao_nrf52 extends = Xiao_nrf52
build_flags = build_flags =
@@ -114,12 +88,6 @@ build_flags =
build_src_filter = ${Xiao_nrf52.build_src_filter} build_src_filter = ${Xiao_nrf52.build_src_filter}
+<../examples/simple_repeater/*.cpp> +<../examples/simple_repeater/*.cpp>
[env:Xiao_nrf52_alt_pinout_repeater]
extends = env:Xiao_nrf52_repeater
build_flags =
${env:Xiao_nrf52_repeater.build_flags}
-D SX1262_XIAO_S3_VARIANT
[env:Xiao_nrf52_room_server] [env:Xiao_nrf52_room_server]
extends = Xiao_nrf52 extends = Xiao_nrf52
build_flags = build_flags =

View File

@@ -10,6 +10,7 @@ WRAPPER_CLASS radio_driver(radio, board);
VolatileRTCClock fallback_clock; VolatileRTCClock fallback_clock;
AutoDiscoverRTCClock rtc_clock(fallback_clock); AutoDiscoverRTCClock rtc_clock(fallback_clock);
EnvironmentSensorManager sensors; EnvironmentSensorManager sensors;
bool radio_init() { bool radio_init() {

View File

@@ -1,10 +1,10 @@
#include "variant.h" #include "variant.h"
#include "nrf.h"
#include "wiring_constants.h" #include "wiring_constants.h"
#include "wiring_digital.h" #include "wiring_digital.h"
#include "nrf.h"
const uint32_t g_ADigitalPinMap[] = const uint32_t g_ADigitalPinMap[] = {
{
// D0 .. D10 // D0 .. D10
2, // D0 is P0.02 (A0) 2, // D0 is P0.02 (A0)
3, // D1 is P0.03 (A1) 3, // D1 is P0.03 (A1)
@@ -55,12 +55,11 @@ const uint32_t g_ADigitalPinMap[] =
31, // D32 is P0.31 (VBAT) 31, // D32 is P0.31 (VBAT)
}; };
void initVariant() void initVariant() {
{
// Disable reading of the BAT voltage. // Disable reading of the BAT voltage.
// https://wiki.seeedstudio.com/XIAO_BLE#q3-what-are-the-considerations-when-using-xiao-nrf52840-sense-for-battery-charging // https://wiki.seeedstudio.com/XIAO_BLE#q3-what-are-the-considerations-when-using-xiao-nrf52840-sense-for-battery-charging
pinMode(VBAT_ENABLE, OUTPUT); pinMode(VBAT_ENABLE, OUTPUT);
//digitalWrite(VBAT_ENABLE, HIGH); // digitalWrite(VBAT_ENABLE, HIGH);
// This was taken from Seeed github butis not coherent with the doc, // This was taken from Seeed github butis not coherent with the doc,
// VBAT_ENABLE should be kept to LOW to protect P0.14, (1500/500)*(4.2-3.3)+3.3 = 3.9V > 3.6V // VBAT_ENABLE should be kept to LOW to protect P0.14, (1500/500)*(4.2-3.3)+3.3 = 3.9V > 3.6V
// This induces a 3mA current in the resistors :( but it's better than burning the nrf // This induces a 3mA current in the resistors :( but it's better than burning the nrf
@@ -68,7 +67,7 @@ void initVariant()
// Low charging current (50mA) // Low charging current (50mA)
// https://wiki.seeedstudio.com/XIAO_BLE#battery-charging-current // https://wiki.seeedstudio.com/XIAO_BLE#battery-charging-current
//pinMode(PIN_CHARGING_CURRENT, INPUT); // pinMode(PIN_CHARGING_CURRENT, INPUT);
// High charging current (100mA) // High charging current (100mA)
pinMode(PIN_CHARGING_CURRENT, OUTPUT); pinMode(PIN_CHARGING_CURRENT, OUTPUT);

View File

@@ -113,8 +113,8 @@ static const uint8_t A5 = PIN_A5;
// #define PIN_WIRE_SDA (17) // 4 and 5 are used for the sx1262 ! // #define PIN_WIRE_SDA (17) // 4 and 5 are used for the sx1262 !
// #define PIN_WIRE_SCL (16) // use WIRE1_SDA // #define PIN_WIRE_SCL (16) // use WIRE1_SDA
static const uint8_t SDA = PIN_WIRE_SDA; // static const uint8_t SDA = PIN_WIRE_SDA;
static const uint8_t SCL = PIN_WIRE_SCL; // static const uint8_t SCL = PIN_WIRE_SCL;
//#define PIN_WIRE1_SDA (17) //#define PIN_WIRE1_SDA (17)
//#define PIN_WIRE1_SCL (16) //#define PIN_WIRE1_SCL (16)