Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions src/helpers/radiolib/CustomSX1262.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,19 +87,21 @@ class CustomSX1262 : public SX1262 {
setRfSwitchPins(SX126X_RXEN, SX126X_TXEN);
#endif

// for improved RX with Heltec v4
#ifdef SX126X_REGISTER_PATCH
uint8_t r_data = 0;
readRegister(0x8B5, &r_data, 1);
r_data |= 0x01;
writeRegister(0x8B5, &r_data, 1);
#endif
applyAgcLockupFix();

MESH_DEBUG_PRINTLN("SX1262 status=0x%02X device_errors=0x%04X", getStatus(), getDeviceErrors());

return true; // success
}

// Prevent AGC lockup under strong off-channel interference.
void applyAgcLockupFix() {
uint8_t r_data = 0;
readRegister(0x8B5, &r_data, 1);
r_data |= 0x01;
writeRegister(0x8B5, &r_data, 1);
}

int16_t startReceive() override {
// include the PREAMBLE_DETECTED irq bit in reported flags
return SX1262::startReceive(RADIOLIB_SX126X_RX_TIMEOUT_INF, RADIOLIB_IRQ_RX_DEFAULT_FLAGS | (1UL << RADIOLIB_IRQ_PREAMBLE_DETECTED), RADIOLIB_IRQ_RX_DEFAULT_MASK, 0);
Expand Down
6 changes: 5 additions & 1 deletion src/helpers/radiolib/CustomSX1262Wrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,9 @@ class CustomSX1262Wrapper : public RadioLibWrapper {
return ((CustomSX1262 *)_radio)->getRxBoostedGainMode();
}

void doResetAGC() override { sx126xResetAGC((SX126x *)_radio, getRxBoostedGainMode()); }
void doResetAGC() override {
auto radio = (CustomSX1262 *)_radio;
sx126xResetAGC(radio, getRxBoostedGainMode());
radio->applyAgcLockupFix();
}
};
6 changes: 0 additions & 6 deletions src/helpers/radiolib/SX126xReset.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,4 @@ inline void sx126xResetAGC(SX126x* radio, bool rx_boost_gain) {
#endif
// always reapply: the gain may have been changed at runtime even when no build default is set
radio->setRxBoostedGainMode(rx_boost_gain);
#ifdef SX126X_REGISTER_PATCH
uint8_t r_data = 0;
radio->readRegister(0x8B5, &r_data, 1);
r_data |= 0x01;
radio->writeRegister(0x8B5, &r_data, 1);
#endif
}
2 changes: 2 additions & 0 deletions variants/ebyte_eora_s3/target.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ bool radio_init() {
radio.setRxBoostedGainMode(SX126X_RX_BOOSTED_GAIN);
#endif

radio.applyAgcLockupFix();

return true; // success
}

Expand Down
1 change: 0 additions & 1 deletion variants/heltec_rc32/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ build_flags =
-D SX126X_DIO3_TCXO_VOLTAGE=1.8
-D SX126X_CURRENT_LIMIT=140
-D SX126X_RX_BOOSTED_GAIN=1
-D SX126X_REGISTER_PATCH=1 ; Patch register 0x8B5 for improved RX
build_src_filter = ${esp32_base.build_src_filter}
+<../variants/heltec_rc32>
+<helpers/sensors>
Expand Down
1 change: 0 additions & 1 deletion variants/heltec_tracker_v2/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ build_flags =
-D SX126X_DIO3_TCXO_VOLTAGE=1.8
-D SX126X_CURRENT_LIMIT=140
-D SX126X_RX_BOOSTED_GAIN=1
-D SX126X_REGISTER_PATCH=1
-D PIN_BOARD_SDA=6
-D PIN_BOARD_SCL=17
-D PIN_USER_BTN=0
Expand Down
1 change: 0 additions & 1 deletion variants/heltec_v4/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ build_flags =
-D PIN_VEXT_EN_ACTIVE=HIGH
-D LORA_TX_POWER=10 ;If it is configured as 10 here, the final output will be 22 dbm.
-D MAX_LORA_TX_POWER=22 ; Max SX1262 output
-D SX126X_REGISTER_PATCH=1 ; Patch register 0x8B5 for improved RX
-D SX126X_DIO2_AS_RF_SWITCH=true ; GC1109 CTX is controlled by SX1262 DIO2
-D SX126X_DIO3_TCXO_VOLTAGE=1.8
-D SX126X_CURRENT_LIMIT=140
Expand Down
1 change: 0 additions & 1 deletion variants/heltec_v4_r8/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ build_flags =
-D PIN_VBAT_READ=1
-D LORA_TX_POWER=10
-D MAX_LORA_TX_POWER=22
-D SX126X_REGISTER_PATCH=1
-D SX126X_DIO2_AS_RF_SWITCH=true
-D SX126X_DIO3_TCXO_VOLTAGE=1.8
-D SX126X_CURRENT_LIMIT=140
Expand Down
1 change: 0 additions & 1 deletion variants/rak3401/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ build_flags = ${nrf52_base.build_flags}
-D LORA_TX_POWER=22
-D SX126X_CURRENT_LIMIT=140
-D SX126X_RX_BOOSTED_GAIN=1
-D SX126X_REGISTER_PATCH=1 ; Patch register 0x8B5 for improved RX with SKY66122 FEM
build_src_filter = ${nrf52_base.build_src_filter}
+<../variants/rak3401>
+<helpers/sensors>
Expand Down