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:
Fri Feb 23 12:57:25 2018 +0000
Revision:
17:98f2528e8399
Parent:
16:675f4d0ee9e9
Child:
18:d5527ce82e6b
Added Heltec L4 board Pins into PinMap.h; Added USBDevice library to support USBSerial console IO; Moved helper code into utils.cpp; Moved dprintf support with var args and serial or USBSerial output.; Added compile time version support to set RTC to compi...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Helmut64 0:c43b6919ae15 1 /*
Helmut64 17:98f2528e8399 2 * Copyright (c) 2018 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 17:98f2528e8399 24 #define LED LED2
Helmut64 0:c43b6919ae15 25
Helmut64 0:c43b6919ae15 26 #define LORA_SPI_MOSI PA_7
Helmut64 0:c43b6919ae15 27 #define LORA_SPI_MISO PA_6
Helmut64 0:c43b6919ae15 28 #define LORA_SPI_SCLK PB_3
Helmut64 0:c43b6919ae15 29 #define LORA_CS PA_15
Helmut64 0:c43b6919ae15 30 #define LORA_RESET PC_0
Helmut64 0:c43b6919ae15 31 #define LORA_DIO0 PB_4
Helmut64 0:c43b6919ae15 32 #define LORA_DIO1 PB_1
Helmut64 0:c43b6919ae15 33 #define LORA_DIO2 PB_0
Helmut64 13:5a32a1922fbc 34 #define LORA_DIO3 PC_13
Helmut64 0:c43b6919ae15 35 #define LORA_DIO4 PA_5
Helmut64 0:c43b6919ae15 36 #define LORA_DIO5 PA_4
Helmut64 0:c43b6919ae15 37 #define LORA_ANT_RX PA_1
Helmut64 0:c43b6919ae15 38 #define LORA_ANT_TX PC_2
Helmut64 0:c43b6919ae15 39 #define LORA_ANT_BOOST PC_1
Helmut64 0:c43b6919ae15 40 #define LORA_TCXO PA_12 // 32 MHz
Helmut64 0:c43b6919ae15 41
Helmut64 0:c43b6919ae15 42
Helmut64 0:c43b6919ae15 43
Helmut64 0:c43b6919ae15 44 #elif defined(TARGET_NUCLEO_L476RG) // using the RFM95 board
Helmut64 0:c43b6919ae15 45
Helmut64 0:c43b6919ae15 46 #define LORA_SPI_MOSI PC_12
Helmut64 0:c43b6919ae15 47 #define LORA_SPI_MISO PC_11
Helmut64 0:c43b6919ae15 48 #define LORA_SPI_SCLK PC_10
Helmut64 0:c43b6919ae15 49 #define LORA_CS PA_0
Helmut64 0:c43b6919ae15 50 #define LORA_RESET PA_1
Helmut64 0:c43b6919ae15 51 #define LORA_DIO0 PD_2 // DIO0=TxDone/RXDone
Helmut64 0:c43b6919ae15 52 #define LORA_DIO1 PB_7 //
Helmut64 0:c43b6919ae15 53 #define LORA_DIO2 PC_14 // DIO2=FhssChangeChannel
Helmut64 0:c43b6919ae15 54 #define LORA_DIO3 PC_15 // DIO3=CADDone
Helmut64 0:c43b6919ae15 55 #define LORA_DIO4 PH_0 // ????
Helmut64 0:c43b6919ae15 56 #define LORA_DIO5 NC // unused?
Helmut64 0:c43b6919ae15 57
Helmut64 16:675f4d0ee9e9 58 #elif defined (HELTEC_STM32L4)
Helmut64 16:675f4d0ee9e9 59
Helmut64 17:98f2528e8399 60 #define USER_BUTTON PH_3 // boot pin
Helmut64 17:98f2528e8399 61 #define LED PB_0 // red
Helmut64 17:98f2528e8399 62 #define LED2 PB_1 // green
Helmut64 17:98f2528e8399 63
Helmut64 16:675f4d0ee9e9 64 #define POWER_VEXT PA_3
Helmut64 16:675f4d0ee9e9 65 #define POWER_VEXT_ON 0
Helmut64 16:675f4d0ee9e9 66 #define POWER_VEXT_OFF 1
Helmut64 16:675f4d0ee9e9 67
Helmut64 17:98f2528e8399 68
Helmut64 16:675f4d0ee9e9 69 #define LORA_SPI_MOSI PA_7
Helmut64 16:675f4d0ee9e9 70 #define LORA_SPI_MISO PA_6
Helmut64 16:675f4d0ee9e9 71 #define LORA_SPI_SCLK PB_5
Helmut64 16:675f4d0ee9e9 72 #define LORA_CS PA_4
Helmut64 16:675f4d0ee9e9 73 #define LORA_RESET PA_1
Helmut64 16:675f4d0ee9e9 74 #define LORA_DIO0 PA_0 // DIO0=TxDone/RXDone/CADDone
Helmut64 16:675f4d0ee9e9 75 #define LORA_DIO1 NC //
Helmut64 16:675f4d0ee9e9 76 #define LORA_DIO2 NC //
Helmut64 16:675f4d0ee9e9 77 #define LORA_DIO3 NC //
Helmut64 16:675f4d0ee9e9 78 #define LORA_DIO4 NC //
Helmut64 16:675f4d0ee9e9 79 #define LORA_DIO5 NC //
Helmut64 16:675f4d0ee9e9 80
Helmut64 15:c70f65d606c4 81 #elif defined(TARGET_NUCLEO_L432KC) // using the RFM95 board
Helmut64 15:c70f65d606c4 82
Helmut64 17:98f2528e8399 83 // #define LED PB_3 // green
Helmut64 17:98f2528e8399 84 #define LED PB_5 // green
Helmut64 15:c70f65d606c4 85
Helmut64 17:98f2528e8399 86 #define LORA_SPI_MOSI PA_7
Helmut64 17:98f2528e8399 87 #define LORA_SPI_MISO PA_6
Helmut64 17:98f2528e8399 88 #define LORA_SPI_SCLK PB_5
Helmut64 17:98f2528e8399 89 #define LORA_CS PA_4
Helmut64 15:c70f65d606c4 90 #define LORA_RESET PA_1
Helmut64 17:98f2528e8399 91 #define LORA_DIO0 PA_0 // DIO0=TxDone/RXDone/CADDone
Helmut64 15:c70f65d606c4 92 #define LORA_DIO1 NC //
Helmut64 15:c70f65d606c4 93 #define LORA_DIO2 NC //
Helmut64 15:c70f65d606c4 94 #define LORA_DIO3 NC //
Helmut64 15:c70f65d606c4 95 #define LORA_DIO4 NC //
Helmut64 16:675f4d0ee9e9 96 #define LORA_DIO5 NC //
Helmut64 16:675f4d0ee9e9 97
Helmut64 17:98f2528e8399 98
Helmut64 16:675f4d0ee9e9 99 #else
Helmut64 16:675f4d0ee9e9 100
Helmut64 16:675f4d0ee9e9 101 #error "unknown board"
Helmut64 16:675f4d0ee9e9 102
Helmut64 0:c43b6919ae15 103 #endif