Loren Geilen
/
sx126x_simple_RX_shield_2020b
Test Commit
main.cpp@2:5e2bc143df58, 2020-08-20 (annotated)
- Committer:
- lorgei
- Date:
- Thu Aug 20 23:47:07 2020 +0000
- Revision:
- 2:5e2bc143df58
- Parent:
- 1:ce312fc7dd18
Test Commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Wayne Roberts |
1:ce312fc7dd18 | 1 | #include "sx12xx.h" |
Wayne Roberts |
1:ce312fc7dd18 | 2 | |
Wayne Roberts |
1:ce312fc7dd18 | 3 | DigitalOut myled(LED1); |
Wayne Roberts |
0:a64836ef007e | 4 | |
Wayne Roberts |
0:a64836ef007e | 5 | #ifdef TARGET_FF_ARDUINO /* pins of SX126xDVK1xAS board */ |
Wayne Roberts |
0:a64836ef007e | 6 | SPI spi(D11, D12, D13); // mosi, miso, sclk |
Wayne Roberts |
1:ce312fc7dd18 | 7 | //spi, nss, busy, dio1 |
Wayne Roberts |
1:ce312fc7dd18 | 8 | SX126x radio(spi, D7, D3, D5); |
Wayne Roberts |
1:ce312fc7dd18 | 9 | |
Wayne Roberts |
0:a64836ef007e | 10 | #define CHIP_TYPE_SX1262 0 |
Wayne Roberts |
0:a64836ef007e | 11 | #define CHIP_TYPE_SX1261 1 |
Wayne Roberts |
0:a64836ef007e | 12 | DigitalIn chipType(A2); |
Wayne Roberts |
0:a64836ef007e | 13 | AnalogIn xtalSel(A3); |
Wayne Roberts |
0:a64836ef007e | 14 | DigitalOut antswPower(D8); |
Wayne Roberts |
0:a64836ef007e | 15 | #endif /* TARGET_FF_ARDUINO */ |
Wayne Roberts |
0:a64836ef007e | 16 | |
Wayne Roberts |
0:a64836ef007e | 17 | /**********************************************************************/ |
Wayne Roberts |
1:ce312fc7dd18 | 18 | |
Wayne Roberts |
1:ce312fc7dd18 | 19 | void rx_done(uint8_t size, float rssi, float snr) |
Wayne Roberts |
1:ce312fc7dd18 | 20 | { |
Wayne Roberts |
1:ce312fc7dd18 | 21 | unsigned i; |
Wayne Roberts |
0:a64836ef007e | 22 | |
Wayne Roberts |
1:ce312fc7dd18 | 23 | myled.write(!myled.read()); // toggle LED |
Wayne Roberts |
1:ce312fc7dd18 | 24 | |
Wayne Roberts |
1:ce312fc7dd18 | 25 | printf("rssi:%.1fdBm, snr:%.1fdB ", rssi, snr); |
Wayne Roberts |
1:ce312fc7dd18 | 26 | for (i = 0; i < size; i++) { |
Wayne Roberts |
1:ce312fc7dd18 | 27 | printf("%02x ", radio.rx_buf[i]); |
Wayne Roberts |
1:ce312fc7dd18 | 28 | } |
Wayne Roberts |
1:ce312fc7dd18 | 29 | printf("\r\n"); |
Wayne Roberts |
0:a64836ef007e | 30 | } |
Wayne Roberts |
0:a64836ef007e | 31 | |
Wayne Roberts |
1:ce312fc7dd18 | 32 | |
Wayne Roberts |
0:a64836ef007e | 33 | int main() |
Wayne Roberts |
1:ce312fc7dd18 | 34 | { |
Wayne Roberts |
1:ce312fc7dd18 | 35 | printf("\r\nreset-rx\r\n"); |
Wayne Roberts |
0:a64836ef007e | 36 | |
Wayne Roberts |
0:a64836ef007e | 37 | radio.setStandby(STBY_XOSC); |
Wayne Roberts |
0:a64836ef007e | 38 | radio.setPacketType(PACKET_TYPE_LORA); |
Wayne Roberts |
0:a64836ef007e | 39 | radio.setMHz(915.0); |
Wayne Roberts |
0:a64836ef007e | 40 | |
Wayne Roberts |
0:a64836ef007e | 41 | { |
Wayne Roberts |
0:a64836ef007e | 42 | ModulationParams_t mp; |
Wayne Roberts |
0:a64836ef007e | 43 | |
Wayne Roberts |
0:a64836ef007e | 44 | mp.lora.spreadingFactor = 7; |
Wayne Roberts |
0:a64836ef007e | 45 | mp.lora.bandwidth = LORA_BW_125; |
Wayne Roberts |
0:a64836ef007e | 46 | mp.lora.codingRate = LORA_CR_4_5; |
Wayne Roberts |
0:a64836ef007e | 47 | mp.lora.LowDatarateOptimize = 0; |
Wayne Roberts |
0:a64836ef007e | 48 | |
Wayne Roberts |
0:a64836ef007e | 49 | radio.xfer(OPCODE_SET_MODULATION_PARAMS, 4, mp.buf); |
Wayne Roberts |
0:a64836ef007e | 50 | } |
Wayne Roberts |
0:a64836ef007e | 51 | |
Wayne Roberts |
0:a64836ef007e | 52 | { |
Wayne Roberts |
0:a64836ef007e | 53 | PacketParams_t p; |
Wayne Roberts |
0:a64836ef007e | 54 | |
Wayne Roberts |
0:a64836ef007e | 55 | p.lora.PreambleLengthHi = 0; |
Wayne Roberts |
0:a64836ef007e | 56 | p.lora.PreambleLengthLo = 8; |
Wayne Roberts |
0:a64836ef007e | 57 | p.lora.HeaderType = HEADER_TYPE_VARIABLE_LENGTH; |
Wayne Roberts |
1:ce312fc7dd18 | 58 | p.lora.PayloadLength = 0x40; // max limit in rx |
Wayne Roberts |
0:a64836ef007e | 59 | p.lora.CRCType = CRC_ON; |
Wayne Roberts |
0:a64836ef007e | 60 | p.lora.InvertIQ = STANDARD_IQ; |
Wayne Roberts |
0:a64836ef007e | 61 | |
Wayne Roberts |
0:a64836ef007e | 62 | radio.xfer(OPCODE_SET_PACKET_PARAMS, 6, p.buf); |
Wayne Roberts |
0:a64836ef007e | 63 | } |
Wayne Roberts |
1:ce312fc7dd18 | 64 | |
Wayne Roberts |
0:a64836ef007e | 65 | antswPower = 1; |
Wayne Roberts |
0:a64836ef007e | 66 | radio.SetDIO2AsRfSwitchCtrl(1); |
Wayne Roberts |
1:ce312fc7dd18 | 67 | |
Wayne Roberts |
1:ce312fc7dd18 | 68 | radio.rxDone = rx_done; |
Wayne Roberts |
1:ce312fc7dd18 | 69 | |
Wayne Roberts |
1:ce312fc7dd18 | 70 | radio.start_rx(RX_TIMEOUT_CONTINUOUS); |
Wayne Roberts |
0:a64836ef007e | 71 | |
lorgei | 2:5e2bc143df58 | 72 | for (;;) { |
lorgei | 2:5e2bc143df58 | 73 | |
lorgei | 2:5e2bc143df58 | 74 | // PacketParams_t p; |
lorgei | 2:5e2bc143df58 | 75 | |
lorgei | 2:5e2bc143df58 | 76 | // p.lora.PreambleLengthHi = 0; |
lorgei | 2:5e2bc143df58 | 77 | // p.lora.PreambleLengthLo = 8; |
lorgei | 2:5e2bc143df58 | 78 | // p.lora.HeaderType = HEADER_TYPE_VARIABLE_LENGTH; |
lorgei | 2:5e2bc143df58 | 79 | // p.lora.PayloadLength = 0x40; // max limit in rx |
lorgei | 2:5e2bc143df58 | 80 | // p.lora.CRCType = CRC_ON; |
lorgei | 2:5e2bc143df58 | 81 | // p.lora.InvertIQ = STANDARD_IQ; |
lorgei | 2:5e2bc143df58 | 82 | |
lorgei | 2:5e2bc143df58 | 83 | // radio.xfer(OPCODE_SET_PACKET_PARAMS, 6, p.buf); |
lorgei | 2:5e2bc143df58 | 84 | |
lorgei | 2:5e2bc143df58 | 85 | |
lorgei | 2:5e2bc143df58 | 86 | |
Wayne Roberts |
1:ce312fc7dd18 | 87 | radio.service(); |
lorgei | 2:5e2bc143df58 | 88 | uint8_t buf[2]; |
lorgei | 2:5e2bc143df58 | 89 | buf[0] = 0; // TX base address |
lorgei | 2:5e2bc143df58 | 90 | buf[1] = 0; // RX base address |
lorgei | 2:5e2bc143df58 | 91 | radio.xfer(OPCODE_SET_BUFFER_BASE_ADDR, 2, buf); |
Wayne Roberts |
0:a64836ef007e | 92 | } |
Wayne Roberts |
0:a64836ef007e | 93 | } |