]> git.tnoah.ca Git - lora-radio.git/commitdiff
Initial support for Seeed ESP32S3 with Wio-SX1262
authorKevin Brosius <cobra@compuserve.com>
Sun, 23 Feb 2025 11:52:27 +0000 (06:52 -0500)
committerKevin Brosius <cobra@compuserve.com>
Sun, 23 Feb 2025 11:52:27 +0000 (06:52 -0500)
Work in progress
Status: Boots, display works on Xiao espansion base,
radio is recognized
Todo:
  PMU
  Firmware hash fails even if generated and then written
  Radio testing
  Buttons / LEDs
  other?

Boards.h
Utilities.h
sx126x.cpp

index adae722d17bff7d058757cf2c6b0c6c58a440076..8ba926c67ba48c447f114518a5c40c8eb1a495de 100644 (file)
--- a/Boards.h
+++ b/Boards.h
   #define MODEL_DB            0xDB // LilyGO T-Beam Supreme, 433 MHz
   #define MODEL_DC            0xDC // LilyGO T-Beam Supreme, 868 MHz
 
+  #define PRODUCT_SEEED_XIAO_ESP32S3  0xEB
+  #define BOARD_SEEED_XIAO_ESP32S3    0x3E
+  #define MODEL_DD            0xDD
+
   #define PRODUCT_T32_10      0xB2
   #define BOARD_LORA32_V1_0   0x39
   #define MODEL_BA            0xBA // LilyGO T3 v1.0, 433 MHz
     #endif
   #endif
 
+// test build - KJB
+#define BOARD_MODEL BOARD_SEEED_XIAO_ESP32S3
+
   #define HAS_DISPLAY false
   #define HAS_BLUETOOTH false
   #define HAS_BLE false
   #define HAS_INPUT false
   #define HAS_SLEEP false
   #define PIN_DISP_SLEEP -1
-  #define VALIDATE_FIRMWARE true
+  //#define VALIDATE_FIRMWARE true
+  #define VALIDATE_FIRMWARE false
 
   #if defined(ENABLE_TCXO)
       #define HAS_TCXO true
         #endif
       #endif
 
+    #elif BOARD_MODEL == BOARD_SEEED_XIAO_ESP32S3
+      #define IS_ESP32S3 true
+      #define MODEM SX1262
+      #define DIO2_AS_RF_SWITCH true
+      #define HAS_BUSY true
+      #define HAS_TCXO true
+//      #define OCP_TUNED 0x38
+
+      #define HAS_DISPLAY true
+//      #define HAS_CONSOLE true
+      #define HAS_BLUETOOTH false
+      #define HAS_BLE true
+//      #define HAS_PMU true
+      #define HAS_NP false
+      #define HAS_SD false
+      #define HAS_EEPROM true
+
+      #define HAS_INPUT false
+      #define HAS_SLEEP false
+      
+//      #define PMU_IRQ 40
+//      #define I2C_SCL 41
+//      #define I2C_SDA 42
+
+      const int pin_btn_usr1 = 0;
+
+      const int pin_cs = 41; //16;
+      const int pin_reset = 42; //14;
+      const int pin_sclk = 7; //11;
+      const int pin_mosi = 9; //15;
+      const int pin_miso = 8; //13;
+      const int pin_tcxo_enable = -1;
+      const int pin_dio = 39; //21;
+      const int pin_busy = 40; //18;
+      
+//      const int SD_MISO = 37;
+//      const int SD_MOSI = 35;
+//      const int SD_CLK = 36;
+//      const int SD_CS = 47;
+
+//      const int IMU_CS = 34;
+
+      // HAS LED/tx on board - 47
+      #if HAS_NP == false
+        #if defined(EXTERNAL_LEDS)
+          const int pin_led_rx = -1;
+          const int pin_led_tx = 48; //47;
+        #else
+          const int pin_led_rx = -1;
+          const int pin_led_tx = 48; //47;
+        #endif
+      #endif
+
     #else
       #error An unsupported ESP32 board was selected. Cannot compile RNode firmware.
     #endif
index e08461fa668adc6bcd8f4498299bf734709ee260..a9154e47ec200eb7283c97b457be20a249038520 100644 (file)
@@ -285,6 +285,13 @@ uint8_t boot_vector = 0x00;
                void led_tx_off() { digitalWrite(pin_led_tx, LOW); }
                void led_id_on()  { }
                void led_id_off() { }
+  #elif BOARD_MODEL == BOARD_SEEED_XIAO_ESP32S3
+               void led_rx_on()  { digitalWrite(pin_led_rx, LED_ON); }
+               void led_rx_off() { digitalWrite(pin_led_rx, LED_OFF); }
+               void led_tx_on()  { }
+               void led_tx_off() { }
+               void led_id_on()  { }
+               void led_id_off() { }
        #elif BOARD_MODEL == BOARD_HUZZAH32
                void led_rx_on()  { digitalWrite(pin_led_rx, HIGH); }
                void led_rx_off() {     digitalWrite(pin_led_rx, LOW); }
@@ -1264,6 +1271,8 @@ void setTXPower() {
                if (model == MODEL_DB) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
                if (model == MODEL_DC) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
 
+               if (model == MODEL_DD) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
+
                if (model == MODEL_E4) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
                if (model == MODEL_E9) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
                if (model == MODEL_E3) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
@@ -1467,7 +1476,7 @@ bool eeprom_product_valid() {
        #if PLATFORM == PLATFORM_AVR
        if (rval == PRODUCT_RNODE || rval == PRODUCT_HMBRW) {
        #elif PLATFORM == PLATFORM_ESP32
-       if (rval == PRODUCT_RNODE || rval == BOARD_RNODE_NG_20 || rval == BOARD_RNODE_NG_21 || rval == PRODUCT_HMBRW || rval == PRODUCT_TBEAM || rval == PRODUCT_T32_10 || rval == PRODUCT_T32_20 || rval == PRODUCT_T32_21 || rval == PRODUCT_H32_V2 || rval == PRODUCT_H32_V3 || rval == PRODUCT_TDECK_V1 || rval == PRODUCT_TBEAM_S_V1) {
+       if (rval == PRODUCT_RNODE || rval == BOARD_RNODE_NG_20 || rval == BOARD_RNODE_NG_21 || rval == PRODUCT_HMBRW || rval == PRODUCT_TBEAM || rval == PRODUCT_T32_10 || rval == PRODUCT_T32_20 || rval == PRODUCT_T32_21 || rval == PRODUCT_H32_V2 || rval == PRODUCT_H32_V3 || rval == PRODUCT_TDECK_V1 || rval == PRODUCT_TBEAM_S_V1  || rval == PRODUCT_SEEED_XIAO_ESP32S3) {
        #elif PLATFORM == PLATFORM_NRF52
        if (rval == PRODUCT_RAK4631 || rval == PRODUCT_HELTEC_T114 || rval == PRODUCT_TECHO || rval == PRODUCT_HMBRW) {
        #else
@@ -1503,6 +1512,8 @@ bool eeprom_model_valid() {
        if (model == MODEL_16 || model == MODEL_17) {
        #elif BOARD_MODEL == BOARD_TBEAM_S_V1
        if (model == MODEL_DB || model == MODEL_DC) {
+       #elif BOARD_MODEL == BOARD_SEEED_XIAO_ESP32S3
+       if (model == MODEL_DD) {
        #elif BOARD_MODEL == BOARD_LORA32_V1_0
        if (model == MODEL_BA || model == MODEL_BB) {
        #elif BOARD_MODEL == BOARD_LORA32_V2_0
index 4c0686206624d5273b4f1021070571057fc4f2e1..ebbde43a5bed67b71f86b82585e30fb43e01f7c8 100644 (file)
@@ -122,12 +122,17 @@ sx126x::sx126x() :
 { setTimeout(0); }
 
 bool sx126x::preInit() {
+//        delay(300);
+        //LoRa->reset();
+//        reset();
+//        delay(100);
+
   pinMode(_ss, OUTPUT);
   digitalWrite(_ss, HIGH);
   
   #if BOARD_MODEL == BOARD_T3S3 || BOARD_MODEL == BOARD_HELTEC32_V3 || BOARD_MODEL == BOARD_TDECK
     SPI.begin(pin_sclk, pin_miso, pin_mosi, pin_cs);
-  #elif BOARD_MODEL == BOARD_TECHO
+  #elif BOARD_MODEL == BOARD_TECHO  // || BOARD_MODEL == BOARD_SEEED_XIAO_ESP32S3
     SPI.setPins(pin_miso, pin_sclk, pin_mosi);
     SPI.begin();
   #else
@@ -146,6 +151,7 @@ bool sx126x::preInit() {
           break;
       }
       delay(100);
+      Serial.println( uint16_t(syncmsb << 8 | synclsb) );
   }
   if ( uint16_t(syncmsb << 8 | synclsb) != 0x1424 && uint16_t(syncmsb << 8 | synclsb) != 0x4434) {
       return false;
@@ -570,7 +576,7 @@ void sx126x::sleep() { uint8_t byte = 0x00; executeOpcode(OP_SLEEP_6X, &byte, 1)
 
 void sx126x::enableTCXO() {
   #if HAS_TCXO
-    #if BOARD_MODEL == BOARD_RAK4631 || BOARD_MODEL == BOARD_HELTEC32_V3
+    #if BOARD_MODEL == BOARD_RAK4631 || BOARD_MODEL == BOARD_HELTEC32_V3 || BOARD_MODEL == BOARD_SEEED_XIAO_ESP32S3
       uint8_t buf[4] = {MODE_TCXO_3_3V_6X, 0x00, 0x00, 0xFF};
     #elif BOARD_MODEL == BOARD_TBEAM
       uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF};