May 2021 Commit
Dependencies: sx128x sx12xx_hal
Diff: main.cpp
- 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 (;;) }