This program is guided to help establish a connection between two RFM95 900MHz LoRa radio modules using Maxim Integrated's Feather MCUs (MAX32630FTHR Mbed and the MAX32620FTHR Mbed). Once the radios are configured after powering on and if the radios are wired correctly, the two radios will self identify as either a master or a slave, and will then proceed to PING and PONG back and forth. Information about what is happening between the radios can be seen if the two boards are hooked up to a USB COM port through the included DAPLINK/MAX32625PICO modules.

Dependencies:   BufferedSerial SX1276GenericLib USBDeviceHT max32630fthr

Fork of MAX326xxFTHR_LoRa_PingPong by Devin Alexander

Committer:
Helmut64
Date:
Thu Feb 22 11:12:24 2018 +0000
Revision:
16:675f4d0ee9e9
Parent:
15:c70f65d606c4
Child:
17:98f2528e8399
Added proper PinMap for the Heltec Board; updated libs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Helmut64 0:c43b6919ae15 1 /*
Helmut64 0:c43b6919ae15 2 * Copyright (c) 2017 Helmut Tschemernjak
Helmut64 0:c43b6919ae15 3 * 30826 Garbsen (Hannover) Germany
Helmut64 0:c43b6919ae15 4 * Licensed under the Apache License, Version 2.0);
Helmut64 0:c43b6919ae15 5 */
Helmut64 0:c43b6919ae15 6
Helmut64 0:c43b6919ae15 7
Helmut64 0:c43b6919ae15 8
Helmut64 0:c43b6919ae15 9 #ifdef TARGET_NUCLEO_L476RG
Helmut64 16:675f4d0ee9e9 10 #define FEATURE_LORA
Helmut64 16:675f4d0ee9e9 11
Helmut64 9:2f9e4be4d046 12 #elif TARGET_DISCO_L072CZ_LRWAN1
Helmut64 16:675f4d0ee9e9 13 #define FEATURE_LORA
Helmut64 16:675f4d0ee9e9 14
Helmut64 16:675f4d0ee9e9 15 #elif TARGET_STM32L432KC
Helmut64 16:675f4d0ee9e9 16 #define HELTEC_STM32L4
Helmut64 16:675f4d0ee9e9 17 #define FEATURE_LORA
Helmut64 16:675f4d0ee9e9 18 #define FEATURE_USBSERIAL
Helmut64 0:c43b6919ae15 19 #endif
Helmut64 0:c43b6919ae15 20
Helmut64 0:c43b6919ae15 21
Helmut64 0:c43b6919ae15 22
Helmut64 13:5a32a1922fbc 23 #if defined(TARGET_DISCO_L072CZ_LRWAN1)
Helmut64 0:c43b6919ae15 24
Helmut64 0:c43b6919ae15 25 #define LORA_SPI_MOSI PA_7
Helmut64 0:c43b6919ae15 26 #define LORA_SPI_MISO PA_6
Helmut64 0:c43b6919ae15 27 #define LORA_SPI_SCLK PB_3
Helmut64 0:c43b6919ae15 28 #define LORA_CS PA_15
Helmut64 0:c43b6919ae15 29 #define LORA_RESET PC_0
Helmut64 0:c43b6919ae15 30 #define LORA_DIO0 PB_4
Helmut64 0:c43b6919ae15 31 #define LORA_DIO1 PB_1
Helmut64 0:c43b6919ae15 32 #define LORA_DIO2 PB_0
Helmut64 13:5a32a1922fbc 33 #define LORA_DIO3 PC_13
Helmut64 0:c43b6919ae15 34 #define LORA_DIO4 PA_5
Helmut64 0:c43b6919ae15 35 #define LORA_DIO5 PA_4
Helmut64 0:c43b6919ae15 36 #define LORA_ANT_RX PA_1
Helmut64 0:c43b6919ae15 37 #define LORA_ANT_TX PC_2
Helmut64 0:c43b6919ae15 38 #define LORA_ANT_BOOST PC_1
Helmut64 0:c43b6919ae15 39 #define LORA_TCXO PA_12 // 32 MHz
Helmut64 0:c43b6919ae15 40
Helmut64 0:c43b6919ae15 41
Helmut64 0:c43b6919ae15 42
Helmut64 0:c43b6919ae15 43 #elif defined(TARGET_NUCLEO_L476RG) // using the RFM95 board
Helmut64 0:c43b6919ae15 44
Helmut64 0:c43b6919ae15 45 #define LORA_SPI_MOSI PC_12
Helmut64 0:c43b6919ae15 46 #define LORA_SPI_MISO PC_11
Helmut64 0:c43b6919ae15 47 #define LORA_SPI_SCLK PC_10
Helmut64 0:c43b6919ae15 48 #define LORA_CS PA_0
Helmut64 0:c43b6919ae15 49 #define LORA_RESET PA_1
Helmut64 0:c43b6919ae15 50 #define LORA_DIO0 PD_2 // DIO0=TxDone/RXDone
Helmut64 0:c43b6919ae15 51 #define LORA_DIO1 PB_7 //
Helmut64 0:c43b6919ae15 52 #define LORA_DIO2 PC_14 // DIO2=FhssChangeChannel
Helmut64 0:c43b6919ae15 53 #define LORA_DIO3 PC_15 // DIO3=CADDone
Helmut64 0:c43b6919ae15 54 #define LORA_DIO4 PH_0 // ????
Helmut64 0:c43b6919ae15 55 #define LORA_DIO5 NC // unused?
Helmut64 0:c43b6919ae15 56
Helmut64 16:675f4d0ee9e9 57 #elif defined (HELTEC_STM32L4)
Helmut64 16:675f4d0ee9e9 58
Helmut64 16:675f4d0ee9e9 59 #define POWER_VEXT PA_3
Helmut64 16:675f4d0ee9e9 60 #define POWER_VEXT_ON 0
Helmut64 16:675f4d0ee9e9 61 #define POWER_VEXT_OFF 1
Helmut64 16:675f4d0ee9e9 62
Helmut64 16:675f4d0ee9e9 63 #define LORA_SPI_MOSI PA_7
Helmut64 16:675f4d0ee9e9 64 #define LORA_SPI_MISO PA_6
Helmut64 16:675f4d0ee9e9 65 #define LORA_SPI_SCLK PB_5
Helmut64 16:675f4d0ee9e9 66 #define LORA_CS PA_4
Helmut64 16:675f4d0ee9e9 67 #define LORA_RESET PA_1
Helmut64 16:675f4d0ee9e9 68 #define LORA_DIO0 PA_0 // DIO0=TxDone/RXDone/CADDone
Helmut64 16:675f4d0ee9e9 69 #define LORA_DIO1 NC //
Helmut64 16:675f4d0ee9e9 70 #define LORA_DIO2 NC //
Helmut64 16:675f4d0ee9e9 71 #define LORA_DIO3 NC //
Helmut64 16:675f4d0ee9e9 72 #define LORA_DIO4 NC //
Helmut64 16:675f4d0ee9e9 73 #define LORA_DIO5 NC //
Helmut64 16:675f4d0ee9e9 74
Helmut64 15:c70f65d606c4 75 #elif defined(TARGET_NUCLEO_L432KC) // using the RFM95 board
Helmut64 15:c70f65d606c4 76
Helmut64 15:c70f65d606c4 77
Helmut64 15:c70f65d606c4 78 #define LORA_SPI_MOSI PC_12
Helmut64 15:c70f65d606c4 79 #define LORA_SPI_MISO PC_11
Helmut64 15:c70f65d606c4 80 #define LORA_SPI_SCLK PC_10
Helmut64 15:c70f65d606c4 81 #define LORA_CS PA_0
Helmut64 15:c70f65d606c4 82 #define LORA_RESET PA_1
Helmut64 15:c70f65d606c4 83 #define LORA_DIO0 PD_2 // DIO0=TxDone/RXDone/CADDone
Helmut64 15:c70f65d606c4 84 #define LORA_DIO1 NC //
Helmut64 15:c70f65d606c4 85 #define LORA_DIO2 NC //
Helmut64 15:c70f65d606c4 86 #define LORA_DIO3 NC //
Helmut64 15:c70f65d606c4 87 #define LORA_DIO4 NC //
Helmut64 16:675f4d0ee9e9 88 #define LORA_DIO5 NC //
Helmut64 16:675f4d0ee9e9 89
Helmut64 16:675f4d0ee9e9 90 #else
Helmut64 16:675f4d0ee9e9 91
Helmut64 16:675f4d0ee9e9 92 #error "unknown board"
Helmut64 16:675f4d0ee9e9 93
Helmut64 0:c43b6919ae15 94 #endif