Loren Geilen
/
sx126x_simple_TX_shield_Aug_2020_Final
Test Commit
main.cpp@2:72f1cb514754, 2020-08-22 (annotated)
- Committer:
- lorgei
- Date:
- Sat Aug 22 00:35:04 2020 +0000
- Revision:
- 2:72f1cb514754
- Parent:
- 1:28d4b59feaf3
Test Commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Wayne Roberts |
1:28d4b59feaf3 | 1 | #include "sx12xx.h" |
Wayne Roberts |
0:9b15629b3f0f | 2 | |
Wayne Roberts |
0:9b15629b3f0f | 3 | #ifdef TARGET_FF_ARDUINO /* pins of SX126xDVK1xAS board */ |
Wayne Roberts |
0:9b15629b3f0f | 4 | SPI spi(D11, D12, D13); // mosi, miso, sclk |
Wayne Roberts |
0:9b15629b3f0f | 5 | // spi, nss, busy, dio1 |
Wayne Roberts |
0:9b15629b3f0f | 6 | SX126x radio(spi, D7, D3, D5 ); |
Wayne Roberts |
0:9b15629b3f0f | 7 | #define CHIP_TYPE_SX1262 0 |
Wayne Roberts |
0:9b15629b3f0f | 8 | #define CHIP_TYPE_SX1261 1 |
Wayne Roberts |
0:9b15629b3f0f | 9 | DigitalIn chipType(A2); |
Wayne Roberts |
0:9b15629b3f0f | 10 | AnalogIn xtalSel(A3); |
Wayne Roberts |
0:9b15629b3f0f | 11 | DigitalOut antswPower(D8); |
Wayne Roberts |
0:9b15629b3f0f | 12 | #endif /* TARGET_FF_ARDUINO */ |
Wayne Roberts |
0:9b15629b3f0f | 13 | |
Wayne Roberts |
0:9b15629b3f0f | 14 | /**********************************************************************/ |
Wayne Roberts |
0:9b15629b3f0f | 15 | volatile bool txDone; |
Wayne Roberts |
0:9b15629b3f0f | 16 | |
Wayne Roberts |
0:9b15629b3f0f | 17 | void txDone_callback() |
Wayne Roberts |
0:9b15629b3f0f | 18 | { |
Wayne Roberts |
0:9b15629b3f0f | 19 | txDone = true; |
Wayne Roberts |
0:9b15629b3f0f | 20 | } |
Wayne Roberts |
0:9b15629b3f0f | 21 | |
Wayne Roberts |
0:9b15629b3f0f | 22 | int main() |
Wayne Roberts |
0:9b15629b3f0f | 23 | { |
Wayne Roberts |
0:9b15629b3f0f | 24 | uint8_t seq = 0; |
Wayne Roberts |
0:9b15629b3f0f | 25 | |
Wayne Roberts |
0:9b15629b3f0f | 26 | printf("\r\nreset-tx "); |
Wayne Roberts |
0:9b15629b3f0f | 27 | |
Wayne Roberts |
0:9b15629b3f0f | 28 | radio.setStandby(STBY_XOSC); |
Wayne Roberts |
0:9b15629b3f0f | 29 | radio.setPacketType(PACKET_TYPE_LORA); |
lorgei | 2:72f1cb514754 | 30 | radio.setMHz(915.5); |
Wayne Roberts |
0:9b15629b3f0f | 31 | |
Wayne Roberts |
0:9b15629b3f0f | 32 | { |
Wayne Roberts |
0:9b15629b3f0f | 33 | ModulationParams_t mp; |
Wayne Roberts |
0:9b15629b3f0f | 34 | |
lorgei | 2:72f1cb514754 | 35 | mp.lora.spreadingFactor = 11; |
lorgei | 2:72f1cb514754 | 36 | mp.lora.bandwidth = LORA_BW_500; |
Wayne Roberts |
0:9b15629b3f0f | 37 | mp.lora.codingRate = LORA_CR_4_5; |
Wayne Roberts |
0:9b15629b3f0f | 38 | mp.lora.LowDatarateOptimize = 0; |
Wayne Roberts |
0:9b15629b3f0f | 39 | |
lorgei | 2:72f1cb514754 | 40 | radio.xfer(OPCODE_SET_MODULATION_PARAMS, 4,0, mp.buf); |
Wayne Roberts |
0:9b15629b3f0f | 41 | } |
Wayne Roberts |
0:9b15629b3f0f | 42 | |
Wayne Roberts |
0:9b15629b3f0f | 43 | if (chipType == CHIP_TYPE_SX1262) |
lorgei | 2:72f1cb514754 | 44 | radio.set_tx_dbm(true, 22); |
Wayne Roberts |
0:9b15629b3f0f | 45 | else |
Wayne Roberts |
0:9b15629b3f0f | 46 | radio.set_tx_dbm(false, 14); |
Wayne Roberts |
0:9b15629b3f0f | 47 | |
Wayne Roberts |
0:9b15629b3f0f | 48 | |
Wayne Roberts |
0:9b15629b3f0f | 49 | { |
Wayne Roberts |
0:9b15629b3f0f | 50 | PacketParams_t p; |
Wayne Roberts |
0:9b15629b3f0f | 51 | |
Wayne Roberts |
0:9b15629b3f0f | 52 | p.lora.PreambleLengthHi = 0; |
Wayne Roberts |
0:9b15629b3f0f | 53 | p.lora.PreambleLengthLo = 8; |
Wayne Roberts |
0:9b15629b3f0f | 54 | p.lora.HeaderType = HEADER_TYPE_VARIABLE_LENGTH; |
Wayne Roberts |
0:9b15629b3f0f | 55 | /* constant payload length of one byte */ |
Wayne Roberts |
0:9b15629b3f0f | 56 | p.lora.PayloadLength = 1; |
lorgei | 2:72f1cb514754 | 57 | p.lora.CRCType = LORA_CRC_ON; |
Wayne Roberts |
0:9b15629b3f0f | 58 | p.lora.InvertIQ = STANDARD_IQ; |
Wayne Roberts |
0:9b15629b3f0f | 59 | |
lorgei | 2:72f1cb514754 | 60 | radio.xfer(OPCODE_SET_PACKET_PARAMS, 6,0, p.buf); |
Wayne Roberts |
0:9b15629b3f0f | 61 | } |
Wayne Roberts |
0:9b15629b3f0f | 62 | |
Wayne Roberts |
0:9b15629b3f0f | 63 | |
Wayne Roberts |
0:9b15629b3f0f | 64 | antswPower = 1; |
Wayne Roberts |
0:9b15629b3f0f | 65 | radio.SetDIO2AsRfSwitchCtrl(1); |
Wayne Roberts |
0:9b15629b3f0f | 66 | |
Wayne Roberts |
0:9b15629b3f0f | 67 | radio.txDone = txDone_callback; |
lorgei | 2:72f1cb514754 | 68 | |
lorgei | 2:72f1cb514754 | 69 | for (;;) { |
lorgei | 2:72f1cb514754 | 70 | |
lorgei | 2:72f1cb514754 | 71 | uint8_t buf[2]; |
lorgei | 2:72f1cb514754 | 72 | buf[0] = 0; // TX base address |
lorgei | 2:72f1cb514754 | 73 | buf[1] = 0; // RX base address |
lorgei | 2:72f1cb514754 | 74 | radio.xfer(OPCODE_SET_BUFFER_BASE_ADDR, 2,0, buf); |
lorgei | 2:72f1cb514754 | 75 | { |
lorgei | 2:72f1cb514754 | 76 | |
lorgei | 2:72f1cb514754 | 77 | } |
lorgei | 2:72f1cb514754 | 78 | |
Wayne Roberts |
0:9b15629b3f0f | 79 | radio.tx_buf[0] = seq; /* set payload */ |
Wayne Roberts |
0:9b15629b3f0f | 80 | txDone = false; |
Wayne Roberts |
0:9b15629b3f0f | 81 | radio.start_tx(1); /* begin transmission */ |
Wayne Roberts |
0:9b15629b3f0f | 82 | |
Wayne Roberts |
0:9b15629b3f0f | 83 | printf("sent\r\n"); |
Wayne Roberts |
0:9b15629b3f0f | 84 | while (!txDone) { |
Wayne Roberts |
0:9b15629b3f0f | 85 | radio.service(); |
Wayne Roberts |
0:9b15629b3f0f | 86 | } |
lorgei | 2:72f1cb514754 | 87 | printf("tx %x\r\n", seq); |
Wayne Roberts |
0:9b15629b3f0f | 88 | printf("got-tx-done\r\n"); |
Wayne Roberts |
0:9b15629b3f0f | 89 | |
Wayne Roberts |
0:9b15629b3f0f | 90 | wait(0.5); /* throttle sending rate */ |
Wayne Roberts |
0:9b15629b3f0f | 91 | seq++; /* change payload */ |
Wayne Roberts |
0:9b15629b3f0f | 92 | } |
Wayne Roberts |
0:9b15629b3f0f | 93 | } |
Wayne Roberts |
0:9b15629b3f0f | 94 |