Update PA curve

This commit is contained in:
Jacob Eva 2025-03-29 17:45:14 +00:00
parent c5e84eab6c
commit a384c25143

View File

@ -2261,8 +2261,12 @@ void sx128x::setTxPower(int level, int outputPin) {
// Higher voltage batteries may cause your device to operate illegally due // Higher voltage batteries may cause your device to operate illegally due
// to the resulting increase in transmission power. Beware! // to the resulting increase in transmission power. Beware!
if (level > 27) { // TODO: in the future it may be possible to read the battery voltage and
level = 27; // compensate for the lower voltage causing a lower transmit power. Need to
// look into this.
if (level > 25) {
level = 25;
} else if (level < 0) { } else if (level < 0) {
level = 0; level = 0;
} }
@ -2274,93 +2278,93 @@ void sx128x::setTxPower(int level, int outputPin) {
switch (level) { switch (level) {
case 0: case 0:
reg_value = -18; reg_value = -18;
_txp_dc = 55; _txp_dc = 131;
break; break;
case 1: case 1:
reg_value = -16; reg_value = -16;
_txp_dc = 64; _txp_dc = 137;
break; break;
case 2: case 2:
reg_value = -15; reg_value = -15;
_txp_dc = 73; _txp_dc = 142;
break; break;
case 3: case 3:
reg_value = -14; reg_value = -14;
_txp_dc = 81; _txp_dc = 148;
break; break;
case 4: case 4:
reg_value = -13; reg_value = -13;
_txp_dc = 90; _txp_dc = 154;
break; break;
case 5: case 5:
reg_value = -12; reg_value = -12;
_txp_dc = 100; _txp_dc = 159;
break; break;
case 6: case 6:
reg_value = -11; reg_value = -11;
_txp_dc = 108; _txp_dc = 163;
break; break;
case 7: case 7:
reg_value = -9; reg_value = -9;
_txp_dc = 117; _txp_dc = 168;
break; break;
case 8: case 8:
reg_value = -8; reg_value = -8;
_txp_dc = 126; _txp_dc = 174;
break; break;
case 9: case 9:
reg_value = -7; reg_value = -7;
_txp_dc = 135; _txp_dc = 178;
break; break;
case 10: case 10:
reg_value = -6; reg_value = -6;
_txp_dc = 144; _txp_dc = 184;
break; break;
case 11: case 11:
reg_value = -5; reg_value = -5;
_txp_dc = 153; _txp_dc = 189;
break; break;
case 12: case 12:
reg_value = -4; reg_value = -4;
_txp_dc = 161; _txp_dc = 194;
break; break;
case 13: case 13:
reg_value = -3; reg_value = -3;
_txp_dc = 170; _txp_dc = 199;
break; break;
case 14: case 14:
reg_value = -2; reg_value = -2;
_txp_dc = 180; _txp_dc = 199;
break; break;
case 15: case 15:
reg_value = -1; reg_value = -1;
// Capped to ensure it doesn't exceed 15dBm // Capped to ensure it doesn't exceed 15dBm
_txp_dc = 183; _txp_dc = 202;
break; break;
case 16: case 16:
reg_value = 0; reg_value = 0;
// Capped to ensure it doesn't exceed 16dBm // Capped to ensure it doesn't exceed 16dBm
_txp_dc = 190; _txp_dc = 208;
break; break;
case 17: case 17:
reg_value = 1; reg_value = 1;
// Capped to ensure it doesn't exceed 17dBm // Capped to ensure it doesn't exceed 17dBm
_txp_dc = 200; _txp_dc = 214;
break; break;
case 18: case 18:
reg_value = 2; reg_value = 2;
// Capped to ensure it doesn't exceed 18dBm // Capped to ensure it doesn't exceed 18dBm
_txp_dc = 209; _txp_dc = 222;
break; break;
case 19: case 19:
reg_value = 3; reg_value = 3;
// Capped to ensure it doesn't exceed 19dBm // Capped to ensure it doesn't exceed 19dBm
_txp_dc = 218; _txp_dc = 228;
break; break;
case 20: case 20:
reg_value = 4; reg_value = 4;
// Capped to ensure it doesn't exceed 20dBm // Capped to ensure it doesn't exceed 20dBm
_txp_dc = 227; _txp_dc = 234;
break; break;
case 21: case 21:
reg_value = 5; reg_value = 5;
@ -2392,7 +2396,7 @@ void sx128x::setTxPower(int level, int outputPin) {
break; break;
default: default:
reg_value = -18; reg_value = -18;
_txp_dc = 55; _txp_dc = 131;
break; break;
} }