diff --git a/variants/lilygo_techo_lite/TechoBoard.cpp b/variants/lilygo_techo_lite/TechoBoard.cpp index 81d3d0c9af..819552fa94 100644 --- a/variants/lilygo_techo_lite/TechoBoard.cpp +++ b/variants/lilygo_techo_lite/TechoBoard.cpp @@ -28,4 +28,30 @@ uint16_t TechoBoard::getBattMilliVolts() { // divider into account (providing the actual LIPO voltage) return (uint16_t)((float)adcvalue * REAL_VBAT_MV_PER_LSB); } + +void TechoBoard::setRfSwitchTx(bool tx) { + if (tx) { // TX + digitalWrite(S68F_RF_VC1, HIGH); + digitalWrite(S68F_RF_VC2, LOW); + } else { // RX + digitalWrite(S68F_RF_VC1, LOW); + digitalWrite(S68F_RF_VC2, HIGH); + } +} + +void TechoBoard::onBeforeTransmit() { + // RF switching NOT handled by RadioLib via SX126X_DIO2_AS_RF_SWITCH and setRfSwitchPins() +#if defined(P_LORA_TX_LED) + digitalWrite(P_LORA_TX_LED, LOW); // TX LED on +#endif + TechoBoard::setRfSwitchTx(true); +} + +void TechoBoard::onAfterTransmit() { + TechoBoard::setRfSwitchTx(false); +#if defined(P_LORA_TX_LED) + digitalWrite(P_LORA_TX_LED, HIGH); // TX LED off +#endif +} + #endif diff --git a/variants/lilygo_techo_lite/TechoBoard.h b/variants/lilygo_techo_lite/TechoBoard.h index fda393e7f9..246c74226c 100644 --- a/variants/lilygo_techo_lite/TechoBoard.h +++ b/variants/lilygo_techo_lite/TechoBoard.h @@ -14,10 +14,14 @@ #define REAL_VBAT_MV_PER_LSB (VBAT_DIVIDER_COMP * VBAT_MV_PER_LSB) class TechoBoard : public NRF52BoardDCDC { +private: + void setRfSwitchTx(bool tx); public: TechoBoard() : NRF52Board("TECHO_OTA") {} void begin(); uint16_t getBattMilliVolts() override; + void onBeforeTransmit() override; + void onAfterTransmit() override; const char* getManufacturerName() const override { return "LilyGo T-Echo"; diff --git a/variants/lilygo_techo_lite/platformio.ini b/variants/lilygo_techo_lite/platformio.ini index 0ba6a19703..86fc28e734 100644 --- a/variants/lilygo_techo_lite/platformio.ini +++ b/variants/lilygo_techo_lite/platformio.ini @@ -14,7 +14,7 @@ build_flags = ${nrf52_base.build_flags} -D SX126X_POWER_EN=30 -D SX126X_CURRENT_LIMIT=140 -D SX126X_RX_BOOSTED_GAIN=1 - -D P_LORA_TX_LED=LED_GREEN + -D P_LORA_TX_LED=LED_RED -D DISABLE_DIAGNOSTIC_OUTPUT -D ENV_INCLUDE_GPS=1 -D GPS_BAUD_RATE=9600 diff --git a/variants/lilygo_techo_lite/variant.cpp b/variants/lilygo_techo_lite/variant.cpp index 3cd82d7090..a8daf6b71e 100644 --- a/variants/lilygo_techo_lite/variant.cpp +++ b/variants/lilygo_techo_lite/variant.cpp @@ -20,6 +20,12 @@ void initVariant() { pinMode(PIN_BUTTON1, INPUT_PULLUP); pinMode(PIN_BUTTON2, INPUT_PULLUP); + pinMode(S68F_RF_VC1, OUTPUT); + pinMode(S68F_RF_VC2, OUTPUT); + // TX + digitalWrite(S68F_RF_VC1, HIGH); + digitalWrite(S68F_RF_VC2, LOW); + pinMode(LED_RED, OUTPUT); pinMode(LED_GREEN, OUTPUT); pinMode(LED_BLUE, OUTPUT); diff --git a/variants/lilygo_techo_lite/variant.h b/variants/lilygo_techo_lite/variant.h index 16e0b5cb9d..315dd73c52 100644 --- a/variants/lilygo_techo_lite/variant.h +++ b/variants/lilygo_techo_lite/variant.h @@ -10,6 +10,27 @@ #include "WVariant.h" +// # T-Echo-Lite_V1.0.pdf +// S68F +// ==== +// * RF_VC1 <-- P0.27 +// * RF_VC2 <-- P1.01 +// * DIO1 <-> P1.08 +// * DIO2 <-> P0.05 +// +// # EK-S62F_UserGuide_Ver.A.pdf +// MODE A +// ------ +// Tx/Rx RF_VC1 RF_VC2 +// Tx H L +// Rx L H +// +// MODE B +// ------ +// DIO2 --- RF_VC1 +// RF_VC2 = H -> NON SLEEP +// RF_VC2 = L -> SLEEP + //////////////////////////////////////////////////////////////////////////////// // Low frequency clock source @@ -76,7 +97,7 @@ //////////////////////////////////////////////////////////////////////////////// // Builtin LEDs -#define LED_RED _PINNUM(1, 14) // LED_3 +#define LED_RED _PINNUM(1, 14) // LED_3 (CORE) #define LED_BLUE _PINNUM(1, 5) // LED_2 #define LED_GREEN _PINNUM(1, 7) // LED_1 @@ -107,8 +128,8 @@ #define SX126X_DIO1 _PINNUM(1, 8) #define SX126X_BUSY _PINNUM(0, 14) #define SX126X_RESET _PINNUM(0, 7) -#define SX126X_RF_VC1 _PINNUM(0, 27) -#define SX126X_RF_VC2 _PINNUM(0, 33) +#define S68F_RF_VC1 _PINNUM(0, 27) +#define S68F_RF_VC2 _PINNUM(1, 1) #define P_LORA_DIO_1 SX126X_DIO1 #define P_LORA_NSS LORA_CS