Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
TARGET_DISCO_L072CZ_LRWAN1/board.cpp@5:1652e04809fb, 2018-02-05 (annotated)
- 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?
User | Revision | Line number | New 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 | } |