ST / stm-spirit1-rf-driver

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:
Thu Jul 06 11:13:31 2017 +0200
Revision:
67:93bec0baf1de
Parent:
34:edda6a7238ec
Clarify some comments

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wolfgang Betz 67:93bec0baf1de 1 /**
Wolfgang Betz 67:93bec0baf1de 2 * @file MCU_Interface.h
Wolfgang Betz 67:93bec0baf1de 3 * @author VMA division - AMS
Wolfgang Betz 67:93bec0baf1de 4 * @version V2.0.2
Wolfgang Betz 67:93bec0baf1de 5 * @date Febrary 7, 2015
Wolfgang Betz 67:93bec0baf1de 6 * @brief Header file for low level SPIRIT SPI driver.
Wolfgang Betz 67:93bec0baf1de 7 * @details
Wolfgang Betz 67:93bec0baf1de 8 *
Wolfgang Betz 67:93bec0baf1de 9 * This header file constitutes an interface to the SPI driver used to
Wolfgang Betz 67:93bec0baf1de 10 * communicate with Spirit.
Wolfgang Betz 67:93bec0baf1de 11 * It exports some function prototypes to write/read registers and FIFOs
Wolfgang Betz 67:93bec0baf1de 12 * and to send command strobes.
Wolfgang Betz 67:93bec0baf1de 13 * Since the Spirit libraries are totally platform independent, the implementation
Wolfgang Betz 67:93bec0baf1de 14 * of these functions are not provided here. The user have to implement these functions
Wolfgang Betz 67:93bec0baf1de 15 * taking care to keep the exported prototypes.
Wolfgang Betz 67:93bec0baf1de 16 *
Wolfgang Betz 67:93bec0baf1de 17 * These functions are:
Wolfgang Betz 67:93bec0baf1de 18 *
Wolfgang Betz 67:93bec0baf1de 19 * <ul>
Wolfgang Betz 67:93bec0baf1de 20 * <li>SpiritSpiInit</i>
Wolfgang Betz 67:93bec0baf1de 21 * <li>SpiritSpiWriteRegisters</i>
Wolfgang Betz 67:93bec0baf1de 22 * <li>SpiritSpiReadRegisters</i>
Wolfgang Betz 67:93bec0baf1de 23 * <li>SpiritSpiCommandStrobes</i>
Wolfgang Betz 67:93bec0baf1de 24 * <li>SpiritSpiWriteLinearFifo</i>
Wolfgang Betz 67:93bec0baf1de 25 * <li>SpiritSpiReadLinearFifo</i>
Wolfgang Betz 67:93bec0baf1de 26 * </ul>
Wolfgang Betz 67:93bec0baf1de 27 *
Wolfgang Betz 67:93bec0baf1de 28 * @note An example of SPI driver implementation is available in the <i>Sdk_Eval</i> library.
Wolfgang Betz 67:93bec0baf1de 29 *
Wolfgang Betz 67:93bec0baf1de 30 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
Wolfgang Betz 67:93bec0baf1de 31 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
Wolfgang Betz 67:93bec0baf1de 32 * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
Wolfgang Betz 67:93bec0baf1de 33 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
Wolfgang Betz 67:93bec0baf1de 34 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
Wolfgang Betz 67:93bec0baf1de 35 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
Wolfgang Betz 67:93bec0baf1de 36 *
Wolfgang Betz 67:93bec0baf1de 37 * THIS SOURCE CODE IS PROTECTED BY A LICENSE.
Wolfgang Betz 67:93bec0baf1de 38 * FOR MORE INFORMATION PLEASE CAREFULLY READ THE LICENSE AGREEMENT FILE LOCATED
Wolfgang Betz 67:93bec0baf1de 39 * IN THE ROOT DIRECTORY OF THIS FIRMWARE PACKAGE.
Wolfgang Betz 67:93bec0baf1de 40 *
Wolfgang Betz 67:93bec0baf1de 41 * <h2><center>&copy; COPYRIGHT 2015 STMicroelectronics</center></h2>
Wolfgang Betz 67:93bec0baf1de 42 */
Wolfgang Betz 67:93bec0baf1de 43
Wolfgang Betz 67:93bec0baf1de 44
Wolfgang Betz 67:93bec0baf1de 45 /* Define to prevent recursive inclusion -------------------------------------*/
Wolfgang Betz 67:93bec0baf1de 46 #ifndef __MCU_INTERFACE_H
Wolfgang Betz 67:93bec0baf1de 47 #define __MCU_INTERFACE_H
Wolfgang Betz 67:93bec0baf1de 48
Wolfgang Betz 67:93bec0baf1de 49
Wolfgang Betz 67:93bec0baf1de 50 /* Includes ------------------------------------------------------------------*/
Wolfgang Betz 67:93bec0baf1de 51 #include "SPIRIT_Types.h"
Wolfgang Betz 67:93bec0baf1de 52
Wolfgang Betz 67:93bec0baf1de 53
Wolfgang Betz 67:93bec0baf1de 54 #ifdef __cplusplus
Wolfgang Betz 67:93bec0baf1de 55 extern "C" {
Wolfgang Betz 67:93bec0baf1de 56 #endif
Wolfgang Betz 67:93bec0baf1de 57
Wolfgang Betz 67:93bec0baf1de 58
Wolfgang Betz 67:93bec0baf1de 59 /** @addtogroup SPIRIT_Libraries
Wolfgang Betz 67:93bec0baf1de 60 * @{
Wolfgang Betz 67:93bec0baf1de 61 */
Wolfgang Betz 67:93bec0baf1de 62
Wolfgang Betz 67:93bec0baf1de 63
Wolfgang Betz 67:93bec0baf1de 64 /** @defgroup SPIRIT_SPI_Driver SPI Driver
Wolfgang Betz 67:93bec0baf1de 65 * @brief Header file for low level SPIRIT SPI driver.
Wolfgang Betz 67:93bec0baf1de 66 * @details See the file <i>@ref MCU_Interface.h</i> for more details.
Wolfgang Betz 67:93bec0baf1de 67 * @{
Wolfgang Betz 67:93bec0baf1de 68 */
Wolfgang Betz 67:93bec0baf1de 69
Wolfgang Betz 67:93bec0baf1de 70
Wolfgang Betz 67:93bec0baf1de 71
Wolfgang Betz 67:93bec0baf1de 72 /** @defgroup SPI_Exported_Types SPI Exported Types
Wolfgang Betz 67:93bec0baf1de 73 * @{
Wolfgang Betz 67:93bec0baf1de 74 */
Wolfgang Betz 67:93bec0baf1de 75
Wolfgang Betz 67:93bec0baf1de 76 /**
Wolfgang Betz 67:93bec0baf1de 77 * @}
Wolfgang Betz 67:93bec0baf1de 78 */
Wolfgang Betz 67:93bec0baf1de 79
Wolfgang Betz 67:93bec0baf1de 80
Wolfgang Betz 67:93bec0baf1de 81
Wolfgang Betz 67:93bec0baf1de 82 /** @defgroup SPI_Exported_Constants SPI Exported Constants
Wolfgang Betz 67:93bec0baf1de 83 * @{
Wolfgang Betz 67:93bec0baf1de 84 */
Wolfgang Betz 67:93bec0baf1de 85
Wolfgang Betz 67:93bec0baf1de 86 /**
Wolfgang Betz 67:93bec0baf1de 87 * @}
Wolfgang Betz 67:93bec0baf1de 88 */
Wolfgang Betz 67:93bec0baf1de 89
Wolfgang Betz 67:93bec0baf1de 90
Wolfgang Betz 67:93bec0baf1de 91
Wolfgang Betz 67:93bec0baf1de 92 /** @defgroup SPI_Exported_Macros SPI Exported Macros
Wolfgang Betz 67:93bec0baf1de 93 * @{
Wolfgang Betz 67:93bec0baf1de 94 */
Wolfgang Betz 67:93bec0baf1de 95
Wolfgang Betz 67:93bec0baf1de 96 /**
Wolfgang Betz 67:93bec0baf1de 97 * @}
Wolfgang Betz 67:93bec0baf1de 98 */
Wolfgang Betz 67:93bec0baf1de 99
Wolfgang Betz 67:93bec0baf1de 100
Wolfgang Betz 67:93bec0baf1de 101
Wolfgang Betz 67:93bec0baf1de 102 /** @defgroup SPI_Exported_Functions SPI Exported Functions
Wolfgang Betz 67:93bec0baf1de 103 * @{
Wolfgang Betz 67:93bec0baf1de 104 */
Wolfgang Betz 67:93bec0baf1de 105
Wolfgang Betz 67:93bec0baf1de 106 typedef SpiritStatus StatusBytes;
Wolfgang Betz 67:93bec0baf1de 107
Wolfgang Betz 67:93bec0baf1de 108 void SdkEvalSpiInit(void);
Wolfgang Betz 67:93bec0baf1de 109 StatusBytes SdkEvalSpiWriteRegisters(uint8_t cRegAddress, uint8_t cNbBytes, uint8_t* pcBuffer);
Wolfgang Betz 67:93bec0baf1de 110 StatusBytes SdkEvalSpiReadRegisters(uint8_t cRegAddress, uint8_t cNbBytes, uint8_t* pcBuffer);
Wolfgang Betz 67:93bec0baf1de 111 StatusBytes SdkEvalSpiCommandStrobes(uint8_t cCommandCode);
Wolfgang Betz 67:93bec0baf1de 112 StatusBytes SdkEvalSpiWriteFifo(uint8_t cNbBytes, uint8_t* pcBuffer);
Wolfgang Betz 67:93bec0baf1de 113 StatusBytes SdkEvalSpiReadFifo(uint8_t cNbBytes, uint8_t* pcBuffer);
Wolfgang Betz 67:93bec0baf1de 114
Wolfgang Betz 67:93bec0baf1de 115 void SdkEvalEnterShutdown(void);
Wolfgang Betz 67:93bec0baf1de 116 void SdkEvalExitShutdown(void);
Wolfgang Betz 67:93bec0baf1de 117 SpiritFlagStatus SdkEvalCheckShutdown(void);
Wolfgang Betz 67:93bec0baf1de 118
Wolfgang Betz 67:93bec0baf1de 119 #define SpiritEnterShutdown SdkEvalEnterShutdown
Wolfgang Betz 67:93bec0baf1de 120 #define SpiritExitShutdown SdkEvalExitShutdown
Wolfgang Betz 67:93bec0baf1de 121 #define SpiritCheckShutdown (SpiritFlagStatus)SdkEvalCheckShutdown
Wolfgang Betz 67:93bec0baf1de 122
Wolfgang Betz 67:93bec0baf1de 123
Wolfgang Betz 67:93bec0baf1de 124 #define SpiritSpiInit SdkEvalSpiInit
Wolfgang Betz 67:93bec0baf1de 125 #define SpiritSpiWriteRegisters(cRegAddress, cNbBytes, pcBuffer) SdkEvalSpiWriteRegisters(cRegAddress, cNbBytes, pcBuffer)
Wolfgang Betz 67:93bec0baf1de 126 #define SpiritSpiReadRegisters(cRegAddress, cNbBytes, pcBuffer) SdkEvalSpiReadRegisters(cRegAddress, cNbBytes, pcBuffer)
Wolfgang Betz 67:93bec0baf1de 127 #define SpiritSpiCommandStrobes(cCommandCode) SdkEvalSpiCommandStrobes(cCommandCode)
Wolfgang Betz 67:93bec0baf1de 128 #define SpiritSpiWriteLinearFifo(cNbBytes, pcBuffer) SdkEvalSpiWriteFifo(cNbBytes, pcBuffer)
Wolfgang Betz 67:93bec0baf1de 129 #define SpiritSpiReadLinearFifo(cNbBytes, pcBuffer) SdkEvalSpiReadFifo(cNbBytes, pcBuffer)
Wolfgang Betz 67:93bec0baf1de 130
Wolfgang Betz 67:93bec0baf1de 131 /**
Wolfgang Betz 67:93bec0baf1de 132 * @}
Wolfgang Betz 67:93bec0baf1de 133 */
Wolfgang Betz 67:93bec0baf1de 134
Wolfgang Betz 67:93bec0baf1de 135 /**
Wolfgang Betz 67:93bec0baf1de 136 * @}
Wolfgang Betz 67:93bec0baf1de 137 */
Wolfgang Betz 67:93bec0baf1de 138
Wolfgang Betz 67:93bec0baf1de 139
Wolfgang Betz 67:93bec0baf1de 140 /**
Wolfgang Betz 67:93bec0baf1de 141 * @}
Wolfgang Betz 67:93bec0baf1de 142 */
Wolfgang Betz 67:93bec0baf1de 143
Wolfgang Betz 67:93bec0baf1de 144
Wolfgang Betz 67:93bec0baf1de 145
Wolfgang Betz 67:93bec0baf1de 146 #ifdef __cplusplus
Wolfgang Betz 67:93bec0baf1de 147 }
Wolfgang Betz 67:93bec0baf1de 148 #endif
Wolfgang Betz 67:93bec0baf1de 149
Wolfgang Betz 67:93bec0baf1de 150 #endif
Wolfgang Betz 67:93bec0baf1de 151
Wolfgang Betz 67:93bec0baf1de 152 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/