May 2021 Commit

Dependencies:   sx128x sx12xx_hal

Revision:
3:d8b57eca8c45
Parent:
2:0b7620bda2c9
Child:
4:19056d9707ef
--- a/main.cpp	Fri Sep 01 23:03:35 2017 +0000
+++ b/main.cpp	Fri Jan 26 01:19:48 2018 +0000
@@ -1,31 +1,74 @@
 #include "sx127x_lora.h"
  
-SPI spi(D11, D12, D13); // mosi, miso, sclk
-//           dio0, dio1, nss, spi, rst
-SX127x radio(  D2,   D3, D10, spi, A0); // sx1276 arduino shield
- 
-SX127x_lora lora(radio);
-DigitalInOut rfsw(A4);    // for SX1276 arduino shield
- 
-void rfsw_callback()
-{
-    if (radio.RegOpMode.bits.Mode == RF_OPMODE_TRANSMITTER) {
-        rfsw = 1;
-    } else {
-        rfsw = 0;
+#ifdef TARGET_DISCO_L072CZ_LRWAN1
+
+    SPI spi(PA_7, PA_6, PB_3); // mosi, miso, sclk
+    //           dio0, dio1,  nss,  spi,  rst
+    SX127x radio(PB_4, PB_1, PA_15, spi, PC_0);
+    
+    #define CRF1    PA_1
+    #define CRF2    PC_2
+    #define CRF3    PC_1
+    DigitalOut Vctl1(CRF1);
+    DigitalOut Vctl2(CRF2);
+    DigitalOut Vctl3(CRF3);    
+    
+    void rfsw_callback()
+    {
+        if (radio.RegOpMode.bits.Mode == RF_OPMODE_TRANSMITTER) {
+            Vctl1 = 0;        
+            if (radio.RegPaConfig.bits.PaSelect) {
+                Vctl2 = 0;
+                Vctl3 = 1;                        
+            } else {
+                Vctl2 = 1;
+                Vctl3 = 0;            
+            }
+        } else {
+            if (radio.RegOpMode.bits.Mode == RF_OPMODE_RECEIVER || radio.RegOpMode.bits.Mode == RF_OPMODE_RECEIVER_SINGLE)
+                Vctl1 = 1;
+            else
+                Vctl1 = 0;
+            
+            Vctl2 = 0;
+            Vctl3 = 0;        
+        }
+    }    
+    
+    DigitalIn pinA(PB_12);
+    DigitalIn pinB(PB_13);
+    DigitalIn pinC(PB_14);
+    DigitalIn pinD(PB_15);    
+#else
+    SPI spi(D11, D12, D13); // mosi, miso, sclk
+    //           dio0, dio1, nss, spi, rst
+    SX127x radio(  D2,   D3, D10, spi, A0); // sx1276 arduino shield
+     
+    DigitalInOut rfsw(A4);    // for SX1276 arduino shield
+     
+    void rfsw_callback()
+    {
+        if (radio.RegOpMode.bits.Mode == RF_OPMODE_TRANSMITTER) {
+            rfsw = 1;
+        } else {
+            rfsw = 0;
+        }
     }
-}
+    
+    DigitalIn pinA(PC_3);
+    DigitalIn pinB(PC_2);
+    DigitalIn pinC(PC_6);
+    DigitalIn pinD(PC_8);
+#endif /* !TARGET_DISCO_L072CZ_LRWAN1 */
+
 /**********************************************************************/
 
-DigitalIn pc3(PC_3);
-DigitalIn pc2(PC_2);
-DigitalIn pc6(PC_6);
-DigitalIn pc8(PC_8);
+SX127x_lora lora(radio);
 Timer t;
-#define CMD_PC2       0x02
-#define CMD_PC3       0x03
-#define CMD_PC6       0x06
-#define CMD_PC8       0x08
+#define CMD_PINA       0x02
+#define CMD_PINB       0x03
+#define CMD_PINC       0x06
+#define CMD_PIND       0x08
 
 static uint16_t crc_ccitt( uint8_t *buffer, uint16_t length )
 {
@@ -152,10 +195,10 @@
     printf("\r\nreset-tx\r\n");
     t.start();
 
-    pc3.mode(PullUp);
-    pc2.mode(PullUp);
-    pc6.mode(PullUp);
-    pc8.mode(PullUp);
+    pinA.mode(PullUp);
+    pinB.mode(PullUp);
+    pinC.mode(PullUp);
+    pinD.mode(PullUp);
 
     radio.rf_switch = rfsw_callback;
     
@@ -164,6 +207,10 @@
     lora.setBw_KHz(500);
     lora.setSf(11);
     
+    radio.RegPaConfig.octet = radio.read_reg(REG_PACONFIG);
+#ifdef TARGET_DISCO_L072CZ_LRWAN1
+    radio.RegPaConfig.bits.PaSelect = 1;
+#else    
     /* RFO or PABOOST choice:
      * SX1276 shield: RFO if using 900MHz, or PA_BOOST if using 433MHz
      */
@@ -183,6 +230,7 @@
         cmd_op(14);
     }
     rfsw.output();
+#endif /* !TARGET_DISCO_L072CZ_LRWAN1 */
     radio.write_reg(REG_PACONFIG, radio.RegPaConfig.octet);
                 
     /* constant payload length */
@@ -190,9 +238,9 @@
     radio.write_reg(REG_LR_PAYLOADLENGTH, lora.RegPayloadLength);
 
     for (;;) {       
-        debounce(&pc3, CMD_PC3);
-        debounce(&pc2, CMD_PC2);
-        debounce(&pc6, CMD_PC6);
-        debounce(&pc8, CMD_PC8);
+        debounce(&pinA, CMD_PINA);
+        debounce(&pinB, CMD_PINB);
+        debounce(&pinC, CMD_PINC);
+        debounce(&pinD, CMD_PIND);
     } // ..for (;;)
 }