diff --git a/Boards.h b/Boards.h index c23fff2..a6e9e61 100644 --- a/Boards.h +++ b/Boards.h @@ -64,6 +64,10 @@ #define MODEL_DB 0xDB // LilyGO T-Beam Supreme, 433 MHz #define MODEL_DC 0xDC // LilyGO T-Beam Supreme, 868 MHz + #define PRODUCT_XIAO_ESP32S3 0xEB // Xiao ESP32S3 - sold by Seeed Studio + #define BOARD_XIAO_ESP32S3 0x3E + #define MODEL_DD 0xDD // Xiao ESP32S3, 868 MHz + #define PRODUCT_T32_10 0xB2 // T3 v1.0 - sold by LilyGO #define BOARD_LORA32_V1_0 0x39 #define MODEL_BA 0xBA // LilyGO T3 v1.0, 433 MHz @@ -90,7 +94,7 @@ #define MODEL_CA 0xCA // Heltec Lora32 v3, 868 MHz #define PRODUCT_H_W_PAPER 0xC3 - #define BOARD_H_W_PAPER 0x3E + #define BOARD_H_W_PAPER 0x3F #define MODEL_C8 0xC8 #define PRODUCT_RAK4631 0x10 // RAK4631 - sold by RAKWireless @@ -1023,6 +1027,79 @@ -1 // pin_tcxo_enable } }; + #elif BOARD_MODEL == BOARD_XIAO_ESP32S3 + #define IS_ESP32S3 true + + #define HAS_DISPLAY true + #define DISPLAY OLED + //#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 true + #define HAS_SLEEP true + #define PIN_WAKEUP GPIO_NUM_21 + #define WAKEUP_LEVEL 0 + + #define INTERFACE_COUNT 1 + +// #define PMU_IRQ 40 +// #define I2C_SCL 41 +// #define I2C_SDA 42 + + // Wio-SX1262 button pulls down GPIO21 + // THis is shared with the Yellow LED + // on the ESP32S3 (also active Low) + const int pin_btn_usr1 = 21; + + const uint8_t interfaces[INTERFACE_COUNT] = {SX1262}; + const bool interface_cfg[INTERFACE_COUNT][3] = { + // SX1262 + { + true, // DEFAULT_SPI + true, // HAS_TCXO + true // DIO2_AS_RF_SWITCH + }, + }; + const int8_t interface_pins[INTERFACE_COUNT][10] = { + // SX1262 + { + 41, // pin_ss + 7, // pin_sclk + 9, // pin_mosi + 8, // pin_miso + 40, // pin_busy + 39, // pin_dio + 42, // pin_reset + -1, // pin_txen + -1, // pin_rxen + -1 // pin_tcxo_enable + } + }; + +// 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 Wio board - 48 Hi/ON + // LED 21 on ESP board - Lo/ON/Yellow + // shared with button input. + #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 diff --git a/Makefile b/Makefile index 7a2634f..5d0f28f 100644 --- a/Makefile +++ b/Makefile @@ -128,6 +128,9 @@ firmware-heltec32_v3: firmware-heltec_w_paper: arduino-cli compile --fqbn esp32:esp32:heltec_wifi_lora_32_V3 $(COMMON_BUILD_FLAGS) --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3E\"" +firmware-xiao_esp32s3: + arduino-cli compile --fqbn esp32:esp32:XIAO_ESP32S3 $(COMMON_BUILD_FLAGS) --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3E\"" + firmware-rnode_ng_20: check_bt_buffers arduino-cli compile --fqbn esp32:esp32:ttgo-lora32 $(COMMON_BUILD_FLAGS) --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x40\"" @@ -246,6 +249,13 @@ upload-featheresp32: @sleep 3 python ./Release/esptool/esptool.py --port $(or $(port), /dev/ttyUSB0) $(COMMON_UPLOAD_FLAGS) ./Release/console_image.bin +upload-xiao_esp32s3: + arduino-cli upload -p $(or $(port), /dev/ttyACM0) --fqbn esp32:esp32:XIAO_ESP32S3 + @sleep 1 + rnodeconf $(or $(port), /dev/ttyACM0) --firmware-hash $$(./partition_hashes ./build/esp32.esp32.XIAO_ESP32S3/RNode_Firmware_CE.ino.bin) + @sleep 3 + python ./Release/esptool/esptool.py --port $(or $(port), /dev/ttyACM0) --chip esp32-s3 --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-opencom-xl upload-rak4631: arduino-cli upload -p $(or $(port), /dev/ttyACM0) --fqbn rakwireless:nrf52:WisCoreRAK4631Board unzip -o build/rakwireless.nrf52.WisCoreRAK4631Board/RNode_Firmware_CE.ino.zip -d build/rakwireless.nrf52.WisCoreRAK4631Board diff --git a/RNode_Firmware_CE.ino b/RNode_Firmware_CE.ino index b80b930..7db1c8f 100644 --- a/RNode_Firmware_CE.ino +++ b/RNode_Firmware_CE.ino @@ -1623,7 +1623,7 @@ void process_serial() { void sleep_now() { #if HAS_SLEEP == true #if PLATFORM == PLATFORM_ESP32 - #if BOARD_MODEL == BOARD_T3S3 + #if BOARD_MODEL == BOARD_T3S3 || BOARD_MODEL == BOARD_XIAO_ESP32C3 display_intensity = 0; update_display(true); #endif diff --git a/Radio.cpp b/Radio.cpp index 3af22e4..5a9ef69 100644 --- a/Radio.cpp +++ b/Radio.cpp @@ -697,7 +697,7 @@ void sx126x::sleep() void sx126x::enableTCXO() { if (_tcxo) { - #if BOARD_MODEL == BOARD_RAK4631 || BOARD_MODEL == BOARD_OPENCOM_XL || BOARD_MODEL == BOARD_HELTEC32_V3 + #if BOARD_MODEL == BOARD_RAK4631 || BOARD_MODEL == BOARD_OPENCOM_XL || BOARD_MODEL == BOARD_HELTEC32_V3 || BOARD_MODEL == BOARD_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}; diff --git a/Utilities.h b/Utilities.h index 738e265..edaea76 100644 --- a/Utilities.h +++ b/Utilities.h @@ -286,6 +286,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_XIAO_ESP32S3 + void led_rx_on() {} + void led_rx_off() {} + void led_tx_on() { digitalWrite(pin_led_tx, LED_ON); } + void led_tx_off() { digitalWrite(pin_led_tx, LED_OFF); } + void led_id_on() {} + void led_id_off() {} #elif BOARD_MODEL == BOARD_GENERIC_ESP32 void led_rx_on() { digitalWrite(pin_led_rx, HIGH); } void led_rx_off() { digitalWrite(pin_led_rx, LOW); } @@ -1243,6 +1250,8 @@ void setTXPower(RadioInterface* radio, int txp) { if (model == MODEL_DB) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN); if (model == MODEL_DC) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN); + if (model == MODEL_DD) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN); + if (model == MODEL_E4) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN); if (model == MODEL_E9) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN); if (model == MODEL_E3) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN); @@ -1472,7 +1481,7 @@ bool eeprom_product_valid() { #endif #if 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 || rval == PRODUCT_H_W_PAPER) { + 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_H_W_PAPER || rval == PRODUCT_XIAO_ESP32S3) { #elif PLATFORM == PLATFORM_NRF52 if (rval == PRODUCT_RAK4631 || rval == PRODUCT_HELTEC_T114 || rval == PRODUCT_OPENCOM_XL || rval == PRODUCT_TECHO || rval == PRODUCT_HMBRW) { #else @@ -1508,6 +1517,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_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