]> git.tnoah.ca Git - lora-radio.git/commitdiff
Added TCXO control functions
authorMark Qvist <mark@unsigned.io>
Wed, 7 Jun 2023 18:49:26 +0000 (20:49 +0200)
committerMark Qvist <mark@unsigned.io>
Wed, 7 Jun 2023 18:49:26 +0000 (20:49 +0200)
Config.h
LoRa.cpp
LoRa.h

index d48b2e387f56e560a573c3de44e321ea3c72ef18..b17f694e585942087899b436712c46e874f624a4 100644 (file)
--- a/Config.h
+++ b/Config.h
@@ -87,6 +87,7 @@
 
     #define HAS_DISPLAY false
     #define HAS_BLUETOOTH false
+    #define HAS_TCXO false
     #define HAS_PMU false
     #define HAS_NP false
 
                        const int pin_led_tx = 4;
             #define HAS_DISPLAY true
             #define HAS_PMU true
+            #define HAS_TCXO true
             #define HAS_BLUETOOTH true
             #define HAS_CONSOLE true
             #define HAS_SD false
index 6725e75acd17658ec2b1cbdf5ef14c49ad52ad82..af644806234e0f703ed1adc83514a756d767fdfc 100644 (file)
--- a/LoRa.cpp
+++ b/LoRa.cpp
@@ -67,6 +67,7 @@
 #define REG_HIGH_BW_OPTIMIZE_2   0x3a
 #define REG_DIO_MAPPING_1        0x40
 #define REG_VERSION              0x42
+#define REG_TCXO                 0x4b
 #define REG_PA_DAC               0x4d
 
 // Modes
@@ -424,6 +425,16 @@ void LoRaClass::sleep()
   writeRegister(REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_SLEEP);
 }
 
+void LoRaClass::enableTCXO() {
+  uint8_t tcxo_reg = readRegister(REG_TCXO);
+  writeRegister(REG_TCXO, tcxo_reg | 0x10);
+}
+
+void LoRaClass::disableTCXO() {
+  uint8_t tcxo_reg = readRegister(REG_TCXO);
+  writeRegister(REG_TCXO, tcxo_reg & 0xEF);
+}
+
 void LoRaClass::setTxPower(int level, int outputPin) {
   if (PA_OUTPUT_RFO_PIN == outputPin) {
     // RFO
diff --git a/LoRa.h b/LoRa.h
index e9efd2cac24bf566f5dba182645c962a7e43dbff..c4c290e605b411e0de07e1e4829fd13e705a99c0 100644 (file)
--- a/LoRa.h
+++ b/LoRa.h
@@ -68,6 +68,8 @@ public:
   uint8_t modemStatus();
   void enableCrc();
   void disableCrc();
+  void enableTCXO();
+  void disableTCXO();
 
   // deprecated
   void crc() { enableCrc(); }