mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-07-20 00:37:08 +00:00
add tower v2 PA control
This commit is contained in:
@@ -19,6 +19,7 @@ void HeltecTowerV2Board::initiateShutdown(uint8_t reason) {
|
||||
digitalWrite(PIN_GPS_STANDBY, LOW);
|
||||
pinMode(PIN_GPS_RESET, OUTPUT);
|
||||
digitalWrite(PIN_GPS_RESET, GPS_RESET_MODE);
|
||||
loRaFEMControl.setSleepModeEnable();
|
||||
|
||||
bool enable_lpcomp = (reason == SHUTDOWN_REASON_LOW_VOLTAGE ||
|
||||
reason == SHUTDOWN_REASON_BOOT_PROTECT);
|
||||
@@ -37,10 +38,8 @@ void HeltecTowerV2Board::initiateShutdown(uint8_t reason) {
|
||||
void HeltecTowerV2Board::begin() {
|
||||
NRF52Board::begin();
|
||||
|
||||
#ifdef P_LORA_TX_LED
|
||||
pinMode(P_LORA_TX_LED, OUTPUT);
|
||||
digitalWrite(P_LORA_TX_LED, !LED_STATE_ON);
|
||||
#endif
|
||||
|
||||
pinMode(PIN_BAT_CTL, OUTPUT);
|
||||
digitalWrite(PIN_BAT_CTL, LOW);
|
||||
@@ -58,17 +57,18 @@ void HeltecTowerV2Board::begin() {
|
||||
digitalWrite(PIN_GPS_RESET, GPS_RESET_MODE);
|
||||
pinMode(PIN_GPS_STANDBY, OUTPUT);
|
||||
digitalWrite(PIN_GPS_STANDBY, HIGH);
|
||||
loRaFEMControl.init();
|
||||
}
|
||||
|
||||
#ifdef P_LORA_TX_LED
|
||||
void HeltecTowerV2Board::onBeforeTransmit() {
|
||||
digitalWrite(P_LORA_TX_LED, LED_STATE_ON);
|
||||
loRaFEMControl.setTxModeEnable();
|
||||
}
|
||||
|
||||
void HeltecTowerV2Board::onAfterTransmit() {
|
||||
digitalWrite(P_LORA_TX_LED, !LED_STATE_ON);
|
||||
loRaFEMControl.setRxModeEnable();
|
||||
}
|
||||
#endif
|
||||
|
||||
uint16_t HeltecTowerV2Board::getBattMilliVolts() {
|
||||
analogReadResolution(12);
|
||||
@@ -95,6 +95,7 @@ void HeltecTowerV2Board::powerOff() {
|
||||
digitalWrite(PIN_GPS_STANDBY, LOW);
|
||||
pinMode(PIN_GPS_RESET, OUTPUT);
|
||||
digitalWrite(PIN_GPS_RESET, GPS_RESET_MODE);
|
||||
loRaFEMControl.setSleepModeEnable();
|
||||
pinMode(PIN_BAT_CTL, OUTPUT);
|
||||
digitalWrite(PIN_BAT_CTL, LOW);
|
||||
variant_shutdown();
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <Arduino.h>
|
||||
#include <MeshCore.h>
|
||||
#include <helpers/NRF52Board.h>
|
||||
#include "LoRaFEMControl.h"
|
||||
|
||||
class HeltecTowerV2Board : public NRF52BoardDCDC {
|
||||
protected:
|
||||
@@ -11,12 +12,12 @@ protected:
|
||||
#endif
|
||||
|
||||
public:
|
||||
LoRaFEMControl loRaFEMControl;
|
||||
|
||||
HeltecTowerV2Board() : NRF52Board("TOWER_V2_OTA") {}
|
||||
void begin();
|
||||
#ifdef P_LORA_TX_LED
|
||||
void onBeforeTransmit() override;
|
||||
void onAfterTransmit() override;
|
||||
#endif
|
||||
uint16_t getBattMilliVolts() override;
|
||||
const char* getManufacturerName() const override;
|
||||
void powerOff() override;
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
#include "LoRaFEMControl.h"
|
||||
|
||||
#include <Arduino.h>
|
||||
#include "variant.h"
|
||||
|
||||
static void enableFEMPower() {
|
||||
bool wasOff = digitalRead(LORA_KCT8103L_EN) != HIGH;
|
||||
digitalWrite(LORA_KCT8103L_EN, HIGH);
|
||||
if (wasOff) {
|
||||
delay(5);
|
||||
}
|
||||
}
|
||||
|
||||
void LoRaFEMControl::init() {
|
||||
pinMode(LORA_KCT8103L_EN, OUTPUT);
|
||||
digitalWrite(LORA_KCT8103L_EN, HIGH);
|
||||
delay(1);
|
||||
pinMode(LORA_KCT8103L_TX_RX, OUTPUT);
|
||||
digitalWrite(LORA_KCT8103L_TX_RX, LOW);
|
||||
}
|
||||
|
||||
void LoRaFEMControl::setSleepModeEnable() {
|
||||
pinMode(LORA_KCT8103L_EN, OUTPUT);
|
||||
digitalWrite(LORA_KCT8103L_EN, LOW);
|
||||
}
|
||||
|
||||
void LoRaFEMControl::setTxModeEnable() {
|
||||
enableFEMPower();
|
||||
digitalWrite(LORA_KCT8103L_TX_RX, HIGH);
|
||||
}
|
||||
|
||||
void LoRaFEMControl::setRxModeEnable() {
|
||||
enableFEMPower();
|
||||
digitalWrite(LORA_KCT8103L_TX_RX, LOW);
|
||||
}
|
||||
|
||||
void LoRaFEMControl::setRxModeEnableWhenMCUSleep() {
|
||||
enableFEMPower();
|
||||
digitalWrite(LORA_KCT8103L_TX_RX, LOW);
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
class LoRaFEMControl {
|
||||
public:
|
||||
LoRaFEMControl() {}
|
||||
virtual ~LoRaFEMControl() {}
|
||||
|
||||
void init();
|
||||
void setSleepModeEnable();
|
||||
void setTxModeEnable();
|
||||
void setRxModeEnable();
|
||||
void setRxModeEnableWhenMCUSleep();
|
||||
};
|
||||
@@ -11,7 +11,7 @@ build_flags = ${nrf52_base.build_flags}
|
||||
-D NRF52_POWER_MANAGEMENT
|
||||
-D RADIO_CLASS=CustomSX1262
|
||||
-D WRAPPER_CLASS=CustomSX1262Wrapper
|
||||
-D LORA_TX_POWER=22
|
||||
-D LORA_TX_POWER=12
|
||||
-D SX126X_CURRENT_LIMIT=140
|
||||
-D SX126X_RX_BOOSTED_GAIN=1
|
||||
build_src_filter = ${nrf52_base.build_src_filter}
|
||||
|
||||
@@ -19,7 +19,22 @@ void initVariant()
|
||||
|
||||
void variant_shutdown()
|
||||
{
|
||||
nrf_gpio_cfg_default(PIN_GPS_EN);
|
||||
nrf_gpio_cfg_default(PIN_GPS_PPS);
|
||||
nrf_gpio_cfg_default(PIN_GPS_RESET);
|
||||
nrf_gpio_cfg_default(PIN_GPS_STANDBY);
|
||||
nrf_gpio_cfg_default(GPS_RX_PIN);
|
||||
nrf_gpio_cfg_default(GPS_TX_PIN);
|
||||
nrf_gpio_cfg_default(LORA_KCT8103L_TX_RX);
|
||||
nrf_gpio_cfg_default(RF_PA_DETECT_PIN);
|
||||
nrf_gpio_cfg_default(SX126X_CS);
|
||||
nrf_gpio_cfg_default(SX126X_DIO1);
|
||||
nrf_gpio_cfg_default(SX126X_BUSY);
|
||||
nrf_gpio_cfg_default(SX126X_RESET);
|
||||
nrf_gpio_cfg_default(PIN_SPI_MISO);
|
||||
nrf_gpio_cfg_default(PIN_SPI_MOSI);
|
||||
nrf_gpio_cfg_default(PIN_SPI_SCK);
|
||||
nrf_gpio_cfg_default(PIN_LED);
|
||||
detachInterrupt(PIN_GPS_PPS);
|
||||
detachInterrupt(PIN_BUTTON1);
|
||||
}
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
#define NUM_ANALOG_OUTPUTS (0)
|
||||
|
||||
#define WIRE_INTERFACES_COUNT (1)
|
||||
#define PIN_WIRE_SDA (0 + 11)
|
||||
#define PIN_WIRE_SCL (0 + 12)
|
||||
#define PIN_WIRE_SDA (0 + 30)
|
||||
#define PIN_WIRE_SCL (0 + 5)
|
||||
#define PIN_BOARD_SDA PIN_WIRE_SDA
|
||||
#define PIN_BOARD_SCL PIN_WIRE_SCL
|
||||
|
||||
@@ -52,6 +52,13 @@
|
||||
#define P_LORA_MOSI PIN_SPI_MOSI
|
||||
#define P_LORA_SCLK PIN_SPI_SCK
|
||||
|
||||
#define USE_KCT8103L_PA_ONLY
|
||||
#define LORA_KCT8103L_EN (0 + 15)
|
||||
#define LORA_KCT8103L_TX_RX (0 + 16)
|
||||
#define LORA_PA_POWER LORA_KCT8103L_EN
|
||||
#define RF_PA_DETECT_PIN (0 + 13)
|
||||
#define RF_PA_HIGH_POWER_VALUE HIGH
|
||||
|
||||
#define GPS_L76K
|
||||
#define GPS_RESET_MODE LOW
|
||||
#define PIN_GPS_RESET (32 + 6)
|
||||
@@ -98,4 +105,4 @@
|
||||
#define NRF52_POWER_MANAGEMENT
|
||||
#define PWRMGT_VOLTAGE_BOOTLOCK 3100
|
||||
#define PWRMGT_LPCOMP_AIN 2
|
||||
#define PWRMGT_LPCOMP_REFSEL 1
|
||||
#define PWRMGT_LPCOMP_REFSEL 1
|
||||
|
||||
Reference in New Issue
Block a user