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 #include "platform.h"
Wayne Roberts 5:1652e04809fb 2
Wayne Roberts 5:1652e04809fb 3 SPI spi(PA_7, PA_6, PB_3); // mosi, miso, sclk
Wayne Roberts 5:1652e04809fb 4 // dio0, dio1, nss, spi, rst
Wayne Roberts 5:1652e04809fb 5 SX127x radio(PB_4, PB_1, PA_15, spi, PC_0);
Wayne Roberts 5:1652e04809fb 6
Wayne Roberts 5:1652e04809fb 7 #define CRF1 PA_1
Wayne Roberts 5:1652e04809fb 8 #define CRF2 PC_2
Wayne Roberts 5:1652e04809fb 9 #define CRF3 PC_1
Wayne Roberts 5:1652e04809fb 10 DigitalOut Vctl1(CRF1);
Wayne Roberts 5:1652e04809fb 11 DigitalOut Vctl2(CRF2);
Wayne Roberts 5:1652e04809fb 12 DigitalOut Vctl3(CRF3);
Wayne Roberts 5:1652e04809fb 13
Wayne Roberts 5:1652e04809fb 14 void rfsw_callback()
Wayne Roberts 5:1652e04809fb 15 {
Wayne Roberts 5:1652e04809fb 16 if (radio.RegOpMode.bits.Mode == RF_OPMODE_TRANSMITTER) {
Wayne Roberts 5:1652e04809fb 17 Vctl1 = 0;
Wayne Roberts 5:1652e04809fb 18 if (radio.RegPaConfig.bits.PaSelect) {
Wayne Roberts 5:1652e04809fb 19 Vctl2 = 0;
Wayne Roberts 5:1652e04809fb 20 Vctl3 = 1;
Wayne Roberts 5:1652e04809fb 21 } else {
Wayne Roberts 5:1652e04809fb 22 Vctl2 = 1;
Wayne Roberts 5:1652e04809fb 23 Vctl3 = 0;
Wayne Roberts 5:1652e04809fb 24 }
Wayne Roberts 5:1652e04809fb 25 } else {
Wayne Roberts 5:1652e04809fb 26 if (radio.RegOpMode.bits.Mode == RF_OPMODE_RECEIVER || radio.RegOpMode.bits.Mode == RF_OPMODE_RECEIVER_SINGLE)
Wayne Roberts 5:1652e04809fb 27 Vctl1 = 1;
Wayne Roberts 5:1652e04809fb 28 else
Wayne Roberts 5:1652e04809fb 29 Vctl1 = 0;
Wayne Roberts 5:1652e04809fb 30
Wayne Roberts 5:1652e04809fb 31 Vctl2 = 0;
Wayne Roberts 5:1652e04809fb 32 Vctl3 = 0;
Wayne Roberts 5:1652e04809fb 33 }
Wayne Roberts 5:1652e04809fb 34 }
Wayne Roberts 5:1652e04809fb 35
Wayne Roberts 5:1652e04809fb 36 DigitalIn pinA(PB_12);
Wayne Roberts 5:1652e04809fb 37 DigitalIn pinB(PB_13);
Wayne Roberts 5:1652e04809fb 38 DigitalIn pinC(PB_14);
Wayne Roberts 5:1652e04809fb 39 DigitalIn pinD(PB_15);
Wayne Roberts 5:1652e04809fb 40
Wayne Roberts 5:1652e04809fb 41
Wayne Roberts 5:1652e04809fb 42 void cmd_op(int dbm)
Wayne Roberts 5:1652e04809fb 43 {
Wayne Roberts 5:1652e04809fb 44 int i = dbm;
Wayne Roberts 5:1652e04809fb 45 RegPdsTrim1_t pds_trim;
Wayne Roberts 5:1652e04809fb 46 uint8_t adr;
Wayne Roberts 5:1652e04809fb 47 if (radio.type == SX1276)
Wayne Roberts 5:1652e04809fb 48 adr = REG_PDSTRIM1_SX1276;
Wayne Roberts 5:1652e04809fb 49 else
Wayne Roberts 5:1652e04809fb 50 adr = REG_PDSTRIM1_SX1272;
Wayne Roberts 5:1652e04809fb 51
Wayne Roberts 5:1652e04809fb 52 pds_trim.octet = radio.read_reg(adr);
Wayne Roberts 5:1652e04809fb 53
Wayne Roberts 5:1652e04809fb 54 if (radio.RegPaConfig.bits.PaSelect) {
Wayne Roberts 5:1652e04809fb 55 /* PABOOST used: +2dbm to +17, or +20 */
Wayne Roberts 5:1652e04809fb 56 if (i == 20) {
Wayne Roberts 5:1652e04809fb 57 printf("+20dBm PADAC bias\r\n");
Wayne Roberts 5:1652e04809fb 58 i -= 3;
Wayne Roberts 5:1652e04809fb 59 pds_trim.bits.prog_txdac = 7;
Wayne Roberts 5:1652e04809fb 60 radio.write_reg(adr, pds_trim.octet);
Wayne Roberts 5:1652e04809fb 61 cmd_ocp(150);
Wayne Roberts 5:1652e04809fb 62 }
Wayne Roberts 5:1652e04809fb 63 if (i > 1)
Wayne Roberts 5:1652e04809fb 64 radio.RegPaConfig.bits.OutputPower = i - 2;
Wayne Roberts 5:1652e04809fb 65 } else {
Wayne Roberts 5:1652e04809fb 66 /* RFO used: -1 to +14dbm */
Wayne Roberts 5:1652e04809fb 67 if (i < 15)
Wayne Roberts 5:1652e04809fb 68 radio.RegPaConfig.bits.OutputPower = i + 1;
Wayne Roberts 5:1652e04809fb 69 }
Wayne Roberts 5:1652e04809fb 70 radio.write_reg(REG_PACONFIG, radio.RegPaConfig.octet);
Wayne Roberts 5:1652e04809fb 71
Wayne Roberts 5:1652e04809fb 72 radio.RegPaConfig.octet = radio.read_reg(REG_PACONFIG);
Wayne Roberts 5:1652e04809fb 73 if (radio.RegPaConfig.bits.PaSelect) {
Wayne Roberts 5:1652e04809fb 74 printf("PA_BOOST ");
Wayne Roberts 5:1652e04809fb 75 dbm = radio.RegPaConfig.bits.OutputPower + pds_trim.bits.prog_txdac - 2;
Wayne Roberts 5:1652e04809fb 76 } else {
Wayne Roberts 5:1652e04809fb 77 printf("RFO ");
Wayne Roberts 5:1652e04809fb 78 dbm = radio.RegPaConfig.bits.OutputPower - 1;
Wayne Roberts 5:1652e04809fb 79 }
Wayne Roberts 5:1652e04809fb 80 printf("OutputPower:%ddBm\r\n", dbm);
Wayne Roberts 5:1652e04809fb 81 }
Wayne Roberts 5:1652e04809fb 82
Wayne Roberts 5:1652e04809fb 83 void board_init()
Wayne Roberts 5:1652e04809fb 84 {
Wayne Roberts 5:1652e04809fb 85 radio.RegPaConfig.bits.PaSelect = 1;
Wayne Roberts 5:1652e04809fb 86 cmd_op(20);
Wayne Roberts 5:1652e04809fb 87 }