瀏覽代碼

Some fixes for range issue

Florent de Lamotte 1 年之前
父節點
當前提交
1ff3033372
共有 3 個文件被更改,包括 34 次插入11 次删除
  1. 2 0
      src/helpers/nrf52/T1000eBoard.cpp
  2. 2 0
      variants/t1000-e/platformio.ini
  3. 30 11
      variants/t1000-e/target.cpp

+ 2 - 0
src/helpers/nrf52/T1000eBoard.cpp

@@ -9,6 +9,8 @@ void T1000eBoard::begin() {
   startup_reason = BD_STARTUP_NORMAL;
   btn_prev_state = HIGH;
 
+  sd_power_mode_set(NRF_POWER_MODE_LOWPWR);
+
 #ifdef BUTTON_PIN
   pinMode(BATTERY_PIN, INPUT);
   pinMode(BUTTON_PIN, INPUT);

+ 2 - 0
variants/t1000-e/platformio.ini

@@ -43,6 +43,8 @@ build_flags = ${t1000-e.build_flags}
   -D BLE_DEBUG_LOGGING=1
   -D MESH_PACKET_LOGGING=1
   -D MESH_DEBUG=1
+  -D RX_BOOSTED_GAIN=true
+  -D RF_SWITCH_TABLE
   -D HAS_UI
 build_src_filter = ${t1000-e.build_src_filter}
   +<helpers/nrf52/SerialBLEInterface.cpp>

+ 30 - 11
variants/t1000-e/target.cpp

@@ -9,16 +9,38 @@ RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BU
   #define LORA_CR      5
 #endif
 
+#ifdef RF_SWITCH_TABLE
+static const uint32_t rfswitch_dios[Module::RFSWITCH_MAX_PINS] = {
+  RADIOLIB_LR11X0_DIO5,
+  RADIOLIB_LR11X0_DIO6,
+  RADIOLIB_LR11X0_DIO7,
+  RADIOLIB_LR11X0_DIO8, 
+  RADIOLIB_NC
+};
+
+static const Module::RfSwitchMode_t rfswitch_table[] = {
+  // mode                 DIO5  DIO6  DIO7  DIO8
+  { LR11x0::MODE_STBY,   {LOW,  LOW,  LOW,  LOW  }},  
+  { LR11x0::MODE_RX,     {HIGH, LOW,  LOW,  HIGH }},
+  { LR11x0::MODE_TX,     {HIGH, HIGH, LOW,  HIGH }},
+  { LR11x0::MODE_TX_HP,  {LOW,  HIGH, LOW,  HIGH }},
+  { LR11x0::MODE_TX_HF,  {LOW,  LOW,  LOW,  LOW  }}, 
+  { LR11x0::MODE_GNSS,   {LOW,  LOW,  HIGH, LOW  }},
+  { LR11x0::MODE_WIFI,   {LOW,  LOW,  LOW,  LOW  }},  
+  END_OF_MODE_TABLE,
+};
+#endif
+
 bool radio_init() {
-#ifdef SX126X_DIO3_TCXO_VOLTAGE
-  float tcxo = SX126X_DIO3_TCXO_VOLTAGE;
+#ifdef LR11X0_DIO3_TCXO_VOLTAGE
+  float tcxo = LR11X0_DIO3_TCXO_VOLTAGE;
 #else
   float tcxo = 1.6f;
 #endif
 
   SPI.setPins(P_LORA_MISO, P_LORA_SCLK, P_LORA_MOSI);
   SPI.begin();
-  int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 8, tcxo);
+  int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_LR11X0_LORA_SYNC_WORD_PRIVATE, LORA_TX_POWER, 8, tcxo);
   if (status != RADIOLIB_ERR_NONE) {
     Serial.print("ERROR: radio init failed: ");
     Serial.println(status);
@@ -26,15 +48,12 @@ bool radio_init() {
   }
   
   radio.setCRC(1);
-  
-#ifdef SX126X_CURRENT_LIMIT
-  radio.setCurrentLimit(SX126X_CURRENT_LIMIT);
-#endif
-#ifdef SX126X_DIO2_AS_RF_SWITCH
-  radio.setDio2AsRfSwitch(SX126X_DIO2_AS_RF_SWITCH);
+
+#ifdef RF_SWITCH_TABLE
+  radio.setRfSwitchTable(rfswitch_dios, rfswitch_table);
 #endif
-#ifdef SX126X_RX_BOOSTED_GAIN
-  radio.setRxBoostedGainMode(SX126X_RX_BOOSTED_GAIN);
+#ifdef RX_BOOSTED_GAIN
+  radio.setRxBoostedGainMode(RX_BOOSTED_GAIN);
 #endif
 
   return true;  // success