From d42fc188b164844fc9db9ad5772ff92f7bedcbe1 Mon Sep 17 00:00:00 2001 From: "jacob.eva" Date: Thu, 29 May 2025 17:51:35 +0100 Subject: [PATCH] Added new SX1280 board ramp values --- Boards.h | 6 ++-- Radio.cpp | 92 +++++++++++++++++++++++++++---------------------------- 2 files changed, 48 insertions(+), 50 deletions(-) diff --git a/Boards.h b/Boards.h index 0a871de..649495e 100644 --- a/Boards.h +++ b/Boards.h @@ -101,12 +101,12 @@ #define BOARD_RAK4631 0x51 #define MODEL_11 0x11 // RAK4631, 433 MHz #define MODEL_12 0x12 // RAK4631, 868 MHz - #define MODEL_13 0x13 // RAK4631, 433MHz with WisBlock SX1280 module (LIBSYS002) - #define MODEL_14 0x14 // RAK4631, 868/915 MHz with WisBlock SX1280 module (LIBSYS002) + #define MODEL_13 0x13 // RAK4631, 433MHz with WisBlock SX1280 module (LIBSYS002 rev 1.3) + #define MODEL_14 0x14 // RAK4631, 868/915 MHz with WisBlock SX1280 module (LIBSYS002 rev 1.3) #define PRODUCT_OPENCOM_XL 0x20 // openCom XL - sold by Liberated Embedded Systems #define BOARD_OPENCOM_XL 0x52 - #define MODEL_21 0x21 // openCom XL, 868/915 MHz + #define MODEL_21 0x21 // openCom XL v1, 868/915 MHz #define BOARD_E22_ESP32 0x45 // Custom Ebyte E22 board design for meshtastic, source: // https://github.com/NanoVHF/Meshtastic-DIY/blob/main/Schematics/E-Byte_E22/Mesh_Ebyte_E22-XXXM30S.pdf diff --git a/Radio.cpp b/Radio.cpp index 46100f9..52364dd 100644 --- a/Radio.cpp +++ b/Radio.cpp @@ -2147,102 +2147,100 @@ void sx128x::disableTCXO() { void sx128x::setTxPower(int level, int outputPin) { uint8_t tx_buf[2]; - #if BOARD_VARIANT == MODEL_13 || BOARD_VARIANT == MODEL_21 - // RAK4631 with WisBlock SX1280 module (LIBSYS002) - if (level > 27) { level = 27; } - else if (level < 0) { level = 0; } + #if BOARD_VARIANT == MODEL_13 || BOARD_VARIANT == MODEL_14 || BOARD_VARIANT == MODEL_21 + // RAK4631 with WisBlock SX1280 module (LIBSYS002 rev 1.3) + // Power range on this model is roughly -6 dBm to 20 dBm + if (level > 20) { level = 20; } + else if (level < -6) { level = -6; } _txp = level; int reg_value; switch (level) { + case -6: + reg_value = -18; // -6.3 dBm + break; + case -5: + reg_value = -17; // -5.4 dBm + break; + case -4: + reg_value = -16; // -3.9 dBm + break; + case -3: + reg_value = -15; // -2.9 dBm + break; + case -2: + reg_value = -14; // -2 dBm + break; + case -1: + reg_value = -13; // CANNOT SET, BUG?? + break; case 0: - reg_value = -18; + reg_value = -12; // -0.4 dBm break; case 1: - reg_value = -16; + reg_value = -10; // 1.1 dBm break; case 2: - reg_value = -15; + reg_value = -9; // 2.4 dBm break; case 3: - reg_value = -14; + reg_value = -8; // 3 dBm break; case 4: - reg_value = -13; + reg_value = -7; // 4.1 dBm break; case 5: - reg_value = -12; + reg_value = -6; // 5.1 dBm break; case 6: - reg_value = -11; + reg_value = -5; // 6 dBm break; case 7: - reg_value = -9; + reg_value = -4; // 7.3 dBm break; case 8: - reg_value = -8; + reg_value = -3; // 8.3 dBm break; case 9: - reg_value = -7; + reg_value = -2; // 9.2 dBm break; case 10: - reg_value = -6; + reg_value = -1; // 10.3 dBm break; case 11: - reg_value = -5; + reg_value = 0; // 11.4 dBm break; case 12: - reg_value = -4; + reg_value = 1; // 12.4 dBm break; case 13: - reg_value = -3; + reg_value = 2; // 13.5 dBm break; case 14: - reg_value = -2; + reg_value = 2; // 13.5 dBm break; case 15: - reg_value = -1; + reg_value = 3; // 14.3 dBm break; case 16: - reg_value = 0; + reg_value = 5; // 16.4 dBm break; case 17: - reg_value = 1; + reg_value = 6; // 17.1 dBm break; case 18: - reg_value = 2; + reg_value = 8; // 18.5 dBm break; case 19: - reg_value = 3; + reg_value = 10; // 19.2 dBm break; case 20: - reg_value = 4; - break; - case 21: - reg_value = 5; - break; - case 22: - reg_value = 6; - break; - case 23: - reg_value = 7; - break; - case 24: - reg_value = 8; - break; - case 25: - reg_value = 9; - break; - case 26: - reg_value = 12; - break; - case 27: - reg_value = 13; + reg_value = 13; // 20.1 dBm break; default: - reg_value = 0; + reg_value = -18; break; }