wayne roberts / Mbed OS alarm_master

Dependencies:   sx12xx_hal

Committer:
Wayne Roberts
Date:
Mon Feb 05 15:03:27 2018 -0800
Revision:
5:1652e04809fb
add target MOTE_L152RC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wayne Roberts 5:1652e04809fb 1 #if !defined(TARGET_MOTE_L152RC) && !defined(TARGET_DISCO_L072CZ_LRWAN1)
Wayne Roberts 5:1652e04809fb 2 #include "platform.h"
Wayne Roberts 5:1652e04809fb 3
Wayne Roberts 5:1652e04809fb 4 SPI spi(D11, D12, D13); // mosi, miso, sclk
Wayne Roberts 5:1652e04809fb 5 // dio0, dio1, nss, spi, rst
Wayne Roberts 5:1652e04809fb 6 SX127x radio( D2, D3, D10, spi, A0); // sx1276 arduino shield
Wayne Roberts 5:1652e04809fb 7
Wayne Roberts 5:1652e04809fb 8 DigitalInOut rfsw(A4); // for SX1276 arduino shield
Wayne Roberts 5:1652e04809fb 9
Wayne Roberts 5:1652e04809fb 10 void rfsw_callback()
Wayne Roberts 5:1652e04809fb 11 {
Wayne Roberts 5:1652e04809fb 12 if (radio.RegOpMode.bits.Mode == RF_OPMODE_TRANSMITTER) {
Wayne Roberts 5:1652e04809fb 13 rfsw = 1;
Wayne Roberts 5:1652e04809fb 14 } else {
Wayne Roberts 5:1652e04809fb 15 rfsw = 0;
Wayne Roberts 5:1652e04809fb 16 }
Wayne Roberts 5:1652e04809fb 17 }
Wayne Roberts 5:1652e04809fb 18
Wayne Roberts 5:1652e04809fb 19 DigitalIn pinA(PC_3);
Wayne Roberts 5:1652e04809fb 20 DigitalIn pinB(PC_2);
Wayne Roberts 5:1652e04809fb 21 DigitalIn pinC(PC_6);
Wayne Roberts 5:1652e04809fb 22 DigitalIn pinD(PC_8);
Wayne Roberts 5:1652e04809fb 23
Wayne Roberts 5:1652e04809fb 24 void cmd_op(int dbm)
Wayne Roberts 5:1652e04809fb 25 {
Wayne Roberts 5:1652e04809fb 26 int i = dbm;
Wayne Roberts 5:1652e04809fb 27 RegPdsTrim1_t pds_trim;
Wayne Roberts 5:1652e04809fb 28 uint8_t adr;
Wayne Roberts 5:1652e04809fb 29 if (radio.type == SX1276)
Wayne Roberts 5:1652e04809fb 30 adr = REG_PDSTRIM1_SX1276;
Wayne Roberts 5:1652e04809fb 31 else
Wayne Roberts 5:1652e04809fb 32 adr = REG_PDSTRIM1_SX1272;
Wayne Roberts 5:1652e04809fb 33
Wayne Roberts 5:1652e04809fb 34 pds_trim.octet = radio.read_reg(adr);
Wayne Roberts 5:1652e04809fb 35
Wayne Roberts 5:1652e04809fb 36 if (radio.RegPaConfig.bits.PaSelect) {
Wayne Roberts 5:1652e04809fb 37 /* PABOOST used: +2dbm to +17, or +20 */
Wayne Roberts 5:1652e04809fb 38 if (i == 20) {
Wayne Roberts 5:1652e04809fb 39 printf("+20dBm PADAC bias\r\n");
Wayne Roberts 5:1652e04809fb 40 i -= 3;
Wayne Roberts 5:1652e04809fb 41 pds_trim.bits.prog_txdac = 7;
Wayne Roberts 5:1652e04809fb 42 radio.write_reg(adr, pds_trim.octet);
Wayne Roberts 5:1652e04809fb 43 cmd_ocp(150);
Wayne Roberts 5:1652e04809fb 44 }
Wayne Roberts 5:1652e04809fb 45 if (i > 1)
Wayne Roberts 5:1652e04809fb 46 radio.RegPaConfig.bits.OutputPower = i - 2;
Wayne Roberts 5:1652e04809fb 47 } else {
Wayne Roberts 5:1652e04809fb 48 /* RFO used: -1 to +14dbm */
Wayne Roberts 5:1652e04809fb 49 if (i < 15)
Wayne Roberts 5:1652e04809fb 50 radio.RegPaConfig.bits.OutputPower = i + 1;
Wayne Roberts 5:1652e04809fb 51 }
Wayne Roberts 5:1652e04809fb 52 radio.write_reg(REG_PACONFIG, radio.RegPaConfig.octet);
Wayne Roberts 5:1652e04809fb 53
Wayne Roberts 5:1652e04809fb 54 radio.RegPaConfig.octet = radio.read_reg(REG_PACONFIG);
Wayne Roberts 5:1652e04809fb 55 if (radio.RegPaConfig.bits.PaSelect) {
Wayne Roberts 5:1652e04809fb 56 printf("PA_BOOST ");
Wayne Roberts 5:1652e04809fb 57 dbm = radio.RegPaConfig.bits.OutputPower + pds_trim.bits.prog_txdac - 2;
Wayne Roberts 5:1652e04809fb 58 } else {
Wayne Roberts 5:1652e04809fb 59 printf("RFO ");
Wayne Roberts 5:1652e04809fb 60 dbm = radio.RegPaConfig.bits.OutputPower - 1;
Wayne Roberts 5:1652e04809fb 61 }
Wayne Roberts 5:1652e04809fb 62 printf("OutputPower:%ddBm\r\n", dbm);
Wayne Roberts 5:1652e04809fb 63 }
Wayne Roberts 5:1652e04809fb 64
Wayne Roberts 5:1652e04809fb 65 void board_init()
Wayne Roberts 5:1652e04809fb 66 {
Wayne Roberts 5:1652e04809fb 67 radio.RegPaConfig.octet = radio.read_reg(REG_PACONFIG);
Wayne Roberts 5:1652e04809fb 68
Wayne Roberts 5:1652e04809fb 69 /* RFO or PABOOST choice:
Wayne Roberts 5:1652e04809fb 70 * SX1276 shield: RFO if using 900MHz, or PA_BOOST if using 433MHz
Wayne Roberts 5:1652e04809fb 71 */
Wayne Roberts 5:1652e04809fb 72 rfsw.input();
Wayne Roberts 5:1652e04809fb 73 if (rfsw.read()) {
Wayne Roberts 5:1652e04809fb 74 printf("LAS\r\n");
Wayne Roberts 5:1652e04809fb 75 /* LAS HF=PA_BOOST LF=RFO */
Wayne Roberts 5:1652e04809fb 76 if (radio.HF)
Wayne Roberts 5:1652e04809fb 77 radio.RegPaConfig.bits.PaSelect = 1;
Wayne Roberts 5:1652e04809fb 78 else
Wayne Roberts 5:1652e04809fb 79 radio.RegPaConfig.bits.PaSelect = 0;
Wayne Roberts 5:1652e04809fb 80 cmd_op(20);
Wayne Roberts 5:1652e04809fb 81 } else {
Wayne Roberts 5:1652e04809fb 82 /* MAS shield board, only RFO TX */
Wayne Roberts 5:1652e04809fb 83 radio.RegPaConfig.bits.PaSelect = 0;
Wayne Roberts 5:1652e04809fb 84 printf("MAS\r\n");
Wayne Roberts 5:1652e04809fb 85 cmd_op(14);
Wayne Roberts 5:1652e04809fb 86 }
Wayne Roberts 5:1652e04809fb 87 rfsw.output();
Wayne Roberts 5:1652e04809fb 88
Wayne Roberts 5:1652e04809fb 89 radio.write_reg(REG_PACONFIG, radio.RegPaConfig.octet);
Wayne Roberts 5:1652e04809fb 90 }
Wayne Roberts 5:1652e04809fb 91 #endif /* !defined(TARGET_MOTE_L152RC) && !defined(TARGET_DISCO_L072CZ_LRWAN1) */