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.
board_shield.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 | #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) */ |