May 2021 test

Dependencies:   sx128x sx12xx_hal

Revision:
2:bf201940a9db
Parent:
1:6a3a48d657a9
Child:
3:f81d64ff0164
--- a/main.cpp	Thu Aug 31 23:14:55 2017 +0000
+++ b/main.cpp	Fri Jan 26 01:19:39 2018 +0000
@@ -1,35 +1,78 @@
 #include "sx127x_lora.h"
  
 DigitalOut myled(LED1);
- 
-SPI spi(D11, D12, D13); // mosi, miso, sclk
-//           dio0, dio1, nss, spi, rst
-SX127x radio(  D2,   D3, D10, spi, A0); // sx1276 arduino shield
- 
+#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;        
+        }
+    }    
+    
+    DigitalOut pinA(PB_12);
+    DigitalOut pinB(PB_13);
+    DigitalOut pinC(PB_14);
+    DigitalOut 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;
+    }
+    
+    DigitalOut pinA(PC_3);
+    DigitalOut pinB(PC_2);
+    DigitalOut pinC(PC_6);
+    DigitalOut pinD(PC_8);
+#endif /* !TARGET_DISCO_L072CZ_LRWAN1 */
+
+/**********************************************************************/
 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;
-}
-/**********************************************************************/
-DigitalOut pc3(PC_3);
-DigitalOut pc2(PC_2);
-DigitalOut pc6(PC_6);
-DigitalOut pc8(PC_8);
+
 DigitalOut* pin; 
 Timeout to;
 
 #define PIN_ASSERT_us       500000
 
-#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
 
 void alarm_pin_clr()
 {
@@ -76,7 +119,7 @@
     if (crc == rx_crc) {
         uint8_t c = radio.rx_buf[0];
         //if (radio.rx_buf[0] == CMD_ALARM)
-        if (c == CMD_PC2 || c == CMD_PC3 || c == CMD_PC6 || c == CMD_PC8) {
+        if (c == CMD_PINA || c == CMD_PINB || c == CMD_PINC || c == CMD_PIND) {
             unsigned delay;
             delay = radio.rx_buf[1];
             delay <<= 8;
@@ -86,10 +129,10 @@
             delay <<= 8;
             delay += radio.rx_buf[4];
             switch (c) {
-                case CMD_PC2: pin = &pc2; break;
-                case CMD_PC3: pin = &pc3; break;
-                case CMD_PC6: pin = &pc6; break;
-                case CMD_PC8: pin = &pc8; break;
+                case CMD_PINA: pin = &pinA; break;
+                case CMD_PINB: pin = &pinB; break;
+                case CMD_PINC: pin = &pinC; break;
+                case CMD_PIND: pin = &pinD; break;
             }
             to.attach_us(&alarm_pin_set, delay);
             printf("delay:%u\r\n", delay);
@@ -109,6 +152,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
      */
@@ -126,6 +173,7 @@
         printf("MAS\r\n");
     }
     rfsw.output();
+#endif /* !TARGET_DISCO_L072CZ_LRWAN1 */
     radio.write_reg(REG_PACONFIG, radio.RegPaConfig.octet);
                 
     lora.start_rx(RF_OPMODE_RECEIVER);