Prototype RF driver for STM Sub-1 GHz RF expansion board based on the SPSGRF-868 module for STM32 Nucleo.

Prototype RF Driver for STM Sub-1 GHz RF Expansion Boards based on the SPSGRF-868 and SPSGRF-915 Modules for STM32 Nucleo

Currently supported boards:

Note, in order to use expansion board X-NUCLEO-IDS01A4 in mbed you need to perform the following HW modifications on the board:

  • Unmount resistor R4
  • Mount resistor R7

Furthermore, on some Nucleo development boards (e.g. the NUCLEO_F429ZI), in order to be able to use Ethernet together with these Sub-1 GHz RF expansion boards, you need to compile this driver with macro SPIRIT1_SPI_MOSI=PB_5 defined, while the development board typically requires some HW modification as e.g. described here!

This driver can be used together with the 6LoWPAN stack (a.k.a. Nanostack).

Committer:
Wolfgang Betz
Date:
Wed Nov 30 11:58:18 2016 +0100
Revision:
41:ebaceefad0de
Parent:
38:5deec3ab2025
Child:
54:0f6612d36a29
Add 'PB5_ETH_PATCH'

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wolfgang Betz 38:5deec3ab2025 1 #ifndef NANOSTACK_RF_PHY_SPIRIT1_H_
Wolfgang Betz 38:5deec3ab2025 2 #define NANOSTACK_RF_PHY_SPIRIT1_H_
Wolfgang Betz 38:5deec3ab2025 3
Wolfgang Betz 38:5deec3ab2025 4 #include <stdint.h>
Wolfgang Betz 38:5deec3ab2025 5
Wolfgang Betz 38:5deec3ab2025 6 #include "NanostackRfPhy.h"
Wolfgang Betz 38:5deec3ab2025 7 #include "PinNames.h"
Wolfgang Betz 38:5deec3ab2025 8
Wolfgang Betz 38:5deec3ab2025 9 // Arduino pin defaults for convenience
Wolfgang Betz 38:5deec3ab2025 10 #if !defined(SPIRIT1_SPI_MOSI)
Wolfgang Betz 41:ebaceefad0de 11 #ifdef PB5_ETH_PATCH
Wolfgang Betz 41:ebaceefad0de 12 #define SPIRIT1_SPI_MOSI PB_5
Wolfgang Betz 41:ebaceefad0de 13 #else // !PB5_ETH_PATCH
Wolfgang Betz 38:5deec3ab2025 14 #define SPIRIT1_SPI_MOSI D11
Wolfgang Betz 41:ebaceefad0de 15 #endif // !PB5_ETH_PATCH
Wolfgang Betz 38:5deec3ab2025 16 #endif
Wolfgang Betz 38:5deec3ab2025 17 #if !defined(SPIRIT1_SPI_MISO)
Wolfgang Betz 38:5deec3ab2025 18 #define SPIRIT1_SPI_MISO D12
Wolfgang Betz 38:5deec3ab2025 19 #endif
Wolfgang Betz 38:5deec3ab2025 20 #if !defined(SPIRIT1_SPI_SCLK)
Wolfgang Betz 38:5deec3ab2025 21 #define SPIRIT1_SPI_SCLK D13
Wolfgang Betz 38:5deec3ab2025 22 #endif
Wolfgang Betz 38:5deec3ab2025 23 #if !defined(SPIRIT1_DEV_IRQ)
Wolfgang Betz 38:5deec3ab2025 24 #define SPIRIT1_DEV_IRQ D9
Wolfgang Betz 38:5deec3ab2025 25 #endif
Wolfgang Betz 38:5deec3ab2025 26 #if !defined(SPIRIT1_DEV_CS)
Wolfgang Betz 38:5deec3ab2025 27 #define SPIRIT1_DEV_CS D10
Wolfgang Betz 38:5deec3ab2025 28 #endif
Wolfgang Betz 38:5deec3ab2025 29 #if !defined(SPIRIT1_DEV_SDN)
Wolfgang Betz 38:5deec3ab2025 30 #define SPIRIT1_DEV_SDN D2
Wolfgang Betz 38:5deec3ab2025 31 #endif
Wolfgang Betz 38:5deec3ab2025 32 #if !defined(SPIRIT1_BRD_LED)
Wolfgang Betz 38:5deec3ab2025 33 #define SPIRIT1_BRD_LED NC
Wolfgang Betz 38:5deec3ab2025 34 #endif
Wolfgang Betz 38:5deec3ab2025 35
Wolfgang Betz 38:5deec3ab2025 36 class NanostackRfPhySpirit1 : public NanostackRfPhy {
Wolfgang Betz 38:5deec3ab2025 37 public:
Wolfgang Betz 38:5deec3ab2025 38 NanostackRfPhySpirit1(PinName spi_mosi, PinName spi_miso, PinName spi_sclk,
Wolfgang Betz 38:5deec3ab2025 39 PinName dev_irq, PinName dev_cs, PinName dev_sdn, PinName brd_led);
Wolfgang Betz 38:5deec3ab2025 40 ~NanostackRfPhySpirit1();
Wolfgang Betz 38:5deec3ab2025 41 int8_t rf_register();
Wolfgang Betz 38:5deec3ab2025 42 void rf_unregister();
Wolfgang Betz 38:5deec3ab2025 43 void get_mac_address(uint8_t *mac);
Wolfgang Betz 38:5deec3ab2025 44 void set_mac_address(uint8_t *mac);
Wolfgang Betz 38:5deec3ab2025 45
Wolfgang Betz 38:5deec3ab2025 46 private:
Wolfgang Betz 38:5deec3ab2025 47 void rf_init(void);
Wolfgang Betz 38:5deec3ab2025 48
Wolfgang Betz 38:5deec3ab2025 49 const PinName _spi_mosi;
Wolfgang Betz 38:5deec3ab2025 50 const PinName _spi_miso;
Wolfgang Betz 38:5deec3ab2025 51 const PinName _spi_sclk;
Wolfgang Betz 38:5deec3ab2025 52 const PinName _dev_irq;
Wolfgang Betz 38:5deec3ab2025 53 const PinName _dev_cs;
Wolfgang Betz 38:5deec3ab2025 54 const PinName _dev_sdn;
Wolfgang Betz 38:5deec3ab2025 55 const PinName _brd_led;
Wolfgang Betz 38:5deec3ab2025 56 };
Wolfgang Betz 38:5deec3ab2025 57
Wolfgang Betz 38:5deec3ab2025 58 #endif /* NANOSTACK_RF_PHY_SPIRIT1_H_ */