]> git.tnoah.ca Git - lora-radio.git/commitdiff
Added support for T3S3 boards with SX127x modems
authorMark Qvist <mark@unsigned.io>
Sat, 5 Oct 2024 00:47:54 +0000 (02:47 +0200)
committerMark Qvist <mark@unsigned.io>
Sat, 5 Oct 2024 00:47:54 +0000 (02:47 +0200)
Boards.h
Config.h
Makefile
RNode_Firmware.ino
Utilities.h
sx127x.cpp

index 05d2d5daee5845b55a2c18349fae7f48e9e1a309..b4900ef6286bb20eccd108cf353c20098a73f861 100644 (file)
--- a/Boards.h
+++ b/Boards.h
   #define MODEL_A2            0xA2 // RNode v2.1, 433 MHz
   #define MODEL_A7            0xA7 // RNode v2.1, 868 MHz
 
-  #define BOARD_RNODE_NG_22   0x42 // RNode hardware revision v2.2
+  #define BOARD_RNODE_NG_22   0x42 // RNode hardware revision v2.2 (T3S3)
   #define MODEL_A1            0xA1 // RNode v2.2, 433 MHz with SX1268
-  #define MODEL_A5            0xA1 // RNode v2.2, 433 MHz with SX1278
+  #define MODEL_A5            0xA5 // RNode v2.2, 433 MHz with SX1278
   #define MODEL_A6            0xA6 // RNode v2.2, 868 MHz with SX1262
-  #define MODEL_AA            0xA6 // RNode v2.2, 868 MHz with SX1276
+  #define MODEL_AA            0xAA // RNode v2.2, 868 MHz with SX1276
 
   #define PRODUCT_TBEAM       0xE0 // T-Beam devices
   #define BOARD_TBEAM         0x33
 
     #elif BOARD_MODEL == BOARD_RNODE_NG_22
       #define IS_ESP32S3 true
-      #define MODEM SX1262
-      #define DIO2_AS_RF_SWITCH true
-      #define HAS_BUSY true
-      #define HAS_TCXO true
-
       #define HAS_DISPLAY true
       #define HAS_CONSOLE false
       #define HAS_BLUETOOTH false
       #define HAS_SLEEP true
       #define PIN_WAKEUP GPIO_NUM_0
       #define WAKEUP_LEVEL 0
-      // #define PIN_DISP_SLEEP 21
-      // #define DISP_SLEEP_LEVEL HIGH
       const int pin_btn_usr1 = 0;
 
       const int pin_cs = 7;
       const int pin_sclk = 5;
       const int pin_mosi = 6;
       const int pin_miso = 3;
-      const int pin_tcxo_enable = -1;
-
-      const int pin_dio = 33;
-      const int pin_busy = 34;
+      const int pin_dio = 9;
+      
+      #if MODEM == SX1262
+        #define DIO2_AS_RF_SWITCH true
+        #define HAS_BUSY true
+        #define HAS_TCXO true
+        const int pin_busy = 34;
+        const int pin_dio = 33;
+        const int pin_tcxo_enable = -1;
+      #endif
       
       const int pin_np = 38;
       const int pin_dac = 25;
       const int SD_MOSI = 11;
       const int SD_CLK = 14;
       const int SD_CS = 13;
+
       #if HAS_NP == false
         #if defined(EXTERNAL_LEDS)
           const int pin_led_rx = 37;
index dd325c0d21c0d8b4ffb9fd159c7dfcbcbc097a75..07572aab2ea49227b649047f7b3faf4314da3001 100644 (file)
--- a/Config.h
+++ b/Config.h
@@ -20,7 +20,7 @@
        #define CONFIG_H
 
        #define MAJ_VERS  0x01
-       #define MIN_VERS  0x4b
+       #define MIN_VERS  0x4c
 
        #define MODE_HOST 0x11
        #define MODE_TNC  0x12
index 04e212562ea25d2ae888923eabf61e33ab0fc78c..a2dd2ddb6e3d32da91d6dbc1d6482b450c23870c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -76,7 +76,10 @@ firmware-tbeam_sx126x: check_bt_buffers
        arduino-cli compile --log --fqbn esp32:esp32:t-beam -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x33\" \"-DMODEM=0x03\""
 
 firmware-t3s3:
-       arduino-cli compile --log --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x42\""
+       arduino-cli compile --log --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x42\" \"-DMODEM=0x03\""
+
+firmware-t3s3_sx127x:
+       arduino-cli compile --log --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x42\" \"-DMODEM=0x01\""
 
 firmware-tdeck:
        arduino-cli compile --log --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3B\""
@@ -206,8 +209,8 @@ upload-t3s3:
        arduino-cli upload -p /dev/ttyACM0 --fqbn esp32:esp32:esp32s3
        @sleep 1
        rnodeconf /dev/ttyACM0 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.esp32s3/RNode_Firmware.ino.bin)
-       @sleep 3
-       python ./Release/esptool/esptool.py --chip esp32s3 --port /dev/ttyACM0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin
+       #@sleep 3
+       #python ./Release/esptool/esptool.py --chip esp32s3 --port /dev/ttyACM0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin
 
 upload-featheresp32:
        arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:featheresp32
@@ -368,6 +371,33 @@ release-t3s3:
        zip --junk-paths ./Release/rnode_firmware_t3s3.zip ./Release/esptool/esptool.py ./Release/console_image.bin build/rnode_firmware_t3s3.boot_app0 build/rnode_firmware_t3s3.bin build/rnode_firmware_t3s3.bootloader build/rnode_firmware_t3s3.partitions
        rm -r build
 
+release-t3s3_sx127x:
+       arduino-cli compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x42\"  \"-DMODEM=0x01\""
+       cp ~/.arduino15/packages/esp32/hardware/esp32/$(ARDUINO_ESP_CORE_VER)/tools/partitions/boot_app0.bin build/rnode_firmware_t3s3_sx127x.boot_app0
+       cp build/esp32.esp32.esp32s3/RNode_Firmware.ino.bin build/rnode_firmware_t3s3_sx127x.bin
+       cp build/esp32.esp32.esp32s3/RNode_Firmware.ino.bootloader.bin build/rnode_firmware_t3s3_sx127x.bootloader
+       cp build/esp32.esp32.esp32s3/RNode_Firmware.ino.partitions.bin build/rnode_firmware_t3s3_sx127x.partitions
+       zip --junk-paths ./Release/rnode_firmware_t3s3_sx127x.zip ./Release/esptool/esptool.py ./Release/console_image.bin build/rnode_firmware_t3s3_sx127x.boot_app0 build/rnode_firmware_t3s3_sx127x.bin build/rnode_firmware_t3s3_sx127x.bootloader build/rnode_firmware_t3s3_sx127x.partitions
+       rm -r build
+
+release-tdeck:
+       arduino-cli compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3B\""
+       cp ~/.arduino15/packages/esp32/hardware/esp32/$(ARDUINO_ESP_CORE_VER)/tools/partitions/boot_app0.bin build/rnode_firmware_tdeck.boot_app0
+       cp build/esp32.esp32.esp32s3/RNode_Firmware.ino.bin build/rnode_firmware_tdeck.bin
+       cp build/esp32.esp32.esp32s3/RNode_Firmware.ino.bootloader.bin build/rnode_firmware_tdeck.bootloader
+       cp build/esp32.esp32.esp32s3/RNode_Firmware.ino.partitions.bin build/rnode_firmware_tdeck.partitions
+       zip --junk-paths ./Release/rnode_firmware_tdeck.zip ./Release/esptool/esptool.py ./Release/console_image.bin build/rnode_firmware_tdeck.boot_app0 build/rnode_firmware_tdeck.bin build/rnode_firmware_tdeck.bootloader build/rnode_firmware_tdeck.partitions
+       rm -r build
+
+release-tbeam_supreme:
+       arduino-cli compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3D\""
+       cp ~/.arduino15/packages/esp32/hardware/esp32/$(ARDUINO_ESP_CORE_VER)/tools/partitions/boot_app0.bin build/rnode_firmware_tbeam_supreme.boot_app0
+       cp build/esp32.esp32.esp32s3/RNode_Firmware.ino.bin build/rnode_firmware_tbeam_supreme.bin
+       cp build/esp32.esp32.esp32s3/RNode_Firmware.ino.bootloader.bin build/rnode_firmware_tbeam_supreme.bootloader
+       cp build/esp32.esp32.esp32s3/RNode_Firmware.ino.partitions.bin build/rnode_firmware_tbeam_supreme.partitions
+       zip --junk-paths ./Release/rnode_firmware_tbeam_supreme.zip ./Release/esptool/esptool.py ./Release/console_image.bin build/rnode_firmware_tbeam_supreme.boot_app0 build/rnode_firmware_tbeam_supreme.bin build/rnode_firmware_tbeam_supreme.bootloader build/rnode_firmware_tbeam_supreme.partitions
+       rm -r build
+
 release-featheresp32: check_bt_buffers
        arduino-cli compile --fqbn esp32:esp32:featheresp32 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x34\""
        cp ~/.arduino15/packages/esp32/hardware/esp32/$(ARDUINO_ESP_CORE_VER)/tools/partitions/boot_app0.bin build/rnode_firmware_featheresp32.boot_app0
index 7884d7f393d8f35ed6a8eb009f20b96afb0919f6..b91cb8a4d9fa116c108abdbaafe5537e7f45d730 100644 (file)
@@ -1206,6 +1206,7 @@ void validate_status() {
           }
         } else {
           hw_ready = false;
+          Serial.write("Invalid EEPROM checksum\r\n");
           #if HAS_DISPLAY
             if (disp_ready) {
               device_init_done = true;
@@ -1215,7 +1216,7 @@ void validate_status() {
         }
       } else {
         hw_ready = false;
-        // Serial.write("Invalid EEPROM configuration\r\n");
+        Serial.write("Invalid EEPROM configuration\r\n");
         #if HAS_DISPLAY
           if (disp_ready) {
             device_init_done = true;
@@ -1225,7 +1226,7 @@ void validate_status() {
       }
     } else {
       hw_ready = false;
-      // Serial.write("Device unprovisioned, no device configuration found in EEPROM\r\n");
+      Serial.write("Device unprovisioned, no device configuration found in EEPROM\r\n");
       #if HAS_DISPLAY
         if (disp_ready) {
           device_init_done = true;
index eb7e41ae96da4771a6709eb523980ab0e81d150b..0a3fffb92c7da648aa068e86df87277344b89e82 100644 (file)
@@ -1095,10 +1095,12 @@ void setTXPower() {
                if (model == MODEL_A2) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
                if (model == MODEL_A3) LoRa->setTxPower(lora_txp, PA_OUTPUT_RFO_PIN);
                if (model == MODEL_A4) LoRa->setTxPower(lora_txp, PA_OUTPUT_RFO_PIN);
+               if (model == MODEL_A5) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
                if (model == MODEL_A6) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
                if (model == MODEL_A7) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
                if (model == MODEL_A8) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
                if (model == MODEL_A9) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
+               if (model == MODEL_AA) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
 
                if (model == MODEL_B3) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
                if (model == MODEL_B4) LoRa->setTxPower(lora_txp, PA_OUTPUT_PA_BOOST_PIN);
@@ -1326,11 +1328,11 @@ bool eeprom_lock_set() {
 }
 
 bool eeprom_product_valid() {
-    #if HAS_EEPROM
-           uint8_t rval = EEPROM.read(eeprom_addr(ADDR_PRODUCT));
-    #elif MCU_VARIANT == MCU_NRF52
-           uint8_t rval = eeprom_read(eeprom_addr(ADDR_PRODUCT));
-    #endif
+  #if HAS_EEPROM
+    uint8_t rval = EEPROM.read(eeprom_addr(ADDR_PRODUCT));
+  #elif MCU_VARIANT == MCU_NRF52
+    uint8_t rval = eeprom_read(eeprom_addr(ADDR_PRODUCT));
+  #endif
 
        #if PLATFORM == PLATFORM_AVR
        if (rval == PRODUCT_RNODE || rval == PRODUCT_HMBRW) {
@@ -1360,7 +1362,7 @@ bool eeprom_model_valid() {
        #elif BOARD_MODEL == BOARD_RNODE_NG_21
        if (model == MODEL_A2 || model == MODEL_A7) {
        #elif BOARD_MODEL == BOARD_RNODE_NG_22
-       if (model == MODEL_A1 || model == MODEL_A6) {
+       if (model == MODEL_A1 || model == MODEL_A6 || model == MODEL_A5 || model == MODEL_AA) {
        #elif BOARD_MODEL == BOARD_HMBRW
        if (model == MODEL_FF || model == MODEL_FE) {
        #elif BOARD_MODEL == BOARD_TBEAM
index 64f138d7f0fa121c14b98be5a73f354fb91c53f8..5548d5150f97864d258685fe642e35cb59976eaf 100644 (file)
@@ -106,7 +106,12 @@ void sx127x::flush() { }
 bool sx127x::preInit() {
   pinMode(_ss, OUTPUT);
   digitalWrite(_ss, HIGH);
-  SPI.begin();
+  
+  #if BOARD_MODEL == BOARD_RNODE_NG_22
+    SPI.begin(pin_sclk, pin_miso, pin_mosi, pin_cs);
+  #else
+    SPI.begin();
+  #endif
 
   // Check modem version
   uint8_t version;