HelloWorld_IDS01A4 mbed application for Spirit1 P2P demo.

Dependencies:   mbed

Fork of HelloWorld_IDS01A5_Program by rosarium pila

mbed 2.0 (a.k.a classic) HelloWorld example for Spirit1 to transfer data from one node to another.
To send the predefined data packet from the sender to the receiver, user needs to press User Button on the board. The LED on the receiver expansion board will toggle on reception of data successfully.
Data packets sent and received can be seen on USB serial terminal.

EVALUATION BOARDS RF FREQUENCY DESCRIPTION :
X-NUCLEO-IDS01A4 868 MHz 868 MHz RF expansion board based on SPIRIT1

Committer:
rosarium
Date:
Thu May 25 16:38:55 2017 +0000
Revision:
0:2ddc0583bcec
First draft version of HelloWorld_IDS01A5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rosarium 0:2ddc0583bcec 1 /**
rosarium 0:2ddc0583bcec 2 ******************************************************************************
rosarium 0:2ddc0583bcec 3 * @file radio_spi.h
rosarium 0:2ddc0583bcec 4 * @author System Lab - NOIDA
rosarium 0:2ddc0583bcec 5 * @version V1.0.0
rosarium 0:2ddc0583bcec 6 * @date 15-May-2014
rosarium 0:2ddc0583bcec 7 * @brief This file contains all the functions prototypes for SPI .
rosarium 0:2ddc0583bcec 8 ******************************************************************************
rosarium 0:2ddc0583bcec 9 * @attention
rosarium 0:2ddc0583bcec 10 *
rosarium 0:2ddc0583bcec 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 12 *
rosarium 0:2ddc0583bcec 13 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 14 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 15 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 16 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 18 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 19 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 21 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 22 * without specific prior written permission.
rosarium 0:2ddc0583bcec 23 *
rosarium 0:2ddc0583bcec 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 34 *
rosarium 0:2ddc0583bcec 35 ******************************************************************************
rosarium 0:2ddc0583bcec 36 */
rosarium 0:2ddc0583bcec 37
rosarium 0:2ddc0583bcec 38
rosarium 0:2ddc0583bcec 39 /* Define to prevent recursive inclusion -------------------------------------*/
rosarium 0:2ddc0583bcec 40 #ifndef __RADIO_SPI_H
rosarium 0:2ddc0583bcec 41 #define __RADIO_SPI_H
rosarium 0:2ddc0583bcec 42 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 43 extern "C" {
rosarium 0:2ddc0583bcec 44 #endif
rosarium 0:2ddc0583bcec 45
rosarium 0:2ddc0583bcec 46 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 47 #ifdef USE_STM32L1XX_NUCLEO
rosarium 0:2ddc0583bcec 48 // #include "stm32l1xx_hal.h"
rosarium 0:2ddc0583bcec 49 #endif
rosarium 0:2ddc0583bcec 50
rosarium 0:2ddc0583bcec 51 #ifdef USE_STM32F4XX_NUCLEO
rosarium 0:2ddc0583bcec 52 // #include "stm32f4xx_hal.h"
rosarium 0:2ddc0583bcec 53 #endif
rosarium 0:2ddc0583bcec 54 #include "SPIRIT_Config.h"
rosarium 0:2ddc0583bcec 55 #include "radio_spi.h"
rosarium 0:2ddc0583bcec 56 // #include "spirit1-arch.h"
rosarium 0:2ddc0583bcec 57
rosarium 0:2ddc0583bcec 58 /**
rosarium 0:2ddc0583bcec 59 * @addtogroup BSP
rosarium 0:2ddc0583bcec 60 * @{
rosarium 0:2ddc0583bcec 61 */
rosarium 0:2ddc0583bcec 62
rosarium 0:2ddc0583bcec 63 /* Exported types ------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 64
rosarium 0:2ddc0583bcec 65
rosarium 0:2ddc0583bcec 66 /* Exported constants --------------------------------------------------------*/
rosarium 0:2ddc0583bcec 67
rosarium 0:2ddc0583bcec 68
rosarium 0:2ddc0583bcec 69 /* Exported macro ------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 70 /* Define for SPIRIT1 board */
rosarium 0:2ddc0583bcec 71 #if !defined (USE_SPIRIT1_DEFAULT)
rosarium 0:2ddc0583bcec 72 #define USE_SPIRIT1_DEFAULT
rosarium 0:2ddc0583bcec 73 #endif
rosarium 0:2ddc0583bcec 74
rosarium 0:2ddc0583bcec 75 /* SPIRIT1_Spi_config */
rosarium 0:2ddc0583bcec 76 /* SPI1 */
rosarium 0:2ddc0583bcec 77 #define RADIO_SPI SPI1
rosarium 0:2ddc0583bcec 78 #define RADIO_SPI_CLK_ENABLE() __SPI1_CLK_ENABLE()
rosarium 0:2ddc0583bcec 79 #define RADIO_SPI_CLK_DISABLE() __SPI1_CLK_DISABLE()
rosarium 0:2ddc0583bcec 80
rosarium 0:2ddc0583bcec 81 #define RADIO_SPI_MISO_PORT GPIOA
rosarium 0:2ddc0583bcec 82 #define RADIO_SPI_MISO_PIN GPIO_PIN_6
rosarium 0:2ddc0583bcec 83 #define RADIO_SPI_MISO_CLOCK_ENABLE() __GPIOA_CLK_ENABLE()
rosarium 0:2ddc0583bcec 84 #define RADIO_SPI_MISO_CLOCK_DISABLE() __GPIOA_CLK_DISABLE()
rosarium 0:2ddc0583bcec 85
rosarium 0:2ddc0583bcec 86 #define RADIO_SPI_MOSI_PORT GPIOA
rosarium 0:2ddc0583bcec 87 #define RADIO_SPI_MOSI_PIN GPIO_PIN_7
rosarium 0:2ddc0583bcec 88 #define RADIO_SPI_MOSI_CLOCK_ENABLE() __GPIOA_CLK_ENABLE()
rosarium 0:2ddc0583bcec 89 #define RADIO_SPI_MOSI_CLOCK_DISABLE() __GPIOA_CLK_DISABLE()
rosarium 0:2ddc0583bcec 90
rosarium 0:2ddc0583bcec 91
rosarium 0:2ddc0583bcec 92
rosarium 0:2ddc0583bcec 93 #ifdef USE_SPIRIT1_DEFAULT
rosarium 0:2ddc0583bcec 94
rosarium 0:2ddc0583bcec 95 #define RADIO_SPI_SCK_PORT GPIOB
rosarium 0:2ddc0583bcec 96 #define RADIO_SPI_SCK_PIN GPIO_PIN_3
rosarium 0:2ddc0583bcec 97 #define RADIO_SPI_SCK_CLOCK_ENABLE() __GPIOB_CLK_ENABLE()
rosarium 0:2ddc0583bcec 98 #define RADIO_SPI_SCK_CLOCK_DISABLE() __GPIOB_CLK_DISABLE()
rosarium 0:2ddc0583bcec 99
rosarium 0:2ddc0583bcec 100
rosarium 0:2ddc0583bcec 101 #define RADIO_SPI_CS_PORT GPIOB
rosarium 0:2ddc0583bcec 102 #define RADIO_SPI_CS_PIN GPIO_PIN_6
rosarium 0:2ddc0583bcec 103 #define RADIO_SPI_CS_CLOCK_ENABLE() __GPIOB_CLK_ENABLE()
rosarium 0:2ddc0583bcec 104 #define RADIO_SPI_CS_CLOCK_DISABLE() __GPIOB_CLK_DISABLE()
rosarium 0:2ddc0583bcec 105
rosarium 0:2ddc0583bcec 106 #else
rosarium 0:2ddc0583bcec 107
rosarium 0:2ddc0583bcec 108 #define RADIO_SPI_SCK_PORT GPIOB
rosarium 0:2ddc0583bcec 109 #define RADIO_SPI_SCK_PIN GPIO_PIN_3
rosarium 0:2ddc0583bcec 110 #define RADIO_SPI_SCK_CLOCK_ENABLE() __GPIOB_CLK_ENABLE()
rosarium 0:2ddc0583bcec 111 #define RADIO_SPI_SCK_CLOCK_DISABLE() __GPIOB_CLK_DISABLE()
rosarium 0:2ddc0583bcec 112
rosarium 0:2ddc0583bcec 113
rosarium 0:2ddc0583bcec 114 #define RADIO_SPI_CS_PORT GPIOB
rosarium 0:2ddc0583bcec 115 #define RADIO_SPI_CS_PIN GPIO_PIN_6
rosarium 0:2ddc0583bcec 116 #define RADIO_SPI_CS_CLOCK_ENABLE() __GPIOB_CLK_ENABLE()
rosarium 0:2ddc0583bcec 117 #define RADIO_SPI_CS_CLOCK_DISABLE() __GPIOB_CLK_DISABLE()
rosarium 0:2ddc0583bcec 118
rosarium 0:2ddc0583bcec 119 #endif
rosarium 0:2ddc0583bcec 120
rosarium 0:2ddc0583bcec 121 /* Maximum Timeout values for flags waiting loops. These timeouts are not based
rosarium 0:2ddc0583bcec 122 on accurate values, they just guarantee that the application will not remain
rosarium 0:2ddc0583bcec 123 stuck if the SPI communication is corrupted.
rosarium 0:2ddc0583bcec 124 You may modify these timeout values depending on CPU frequency and application
rosarium 0:2ddc0583bcec 125 conditions (interrupts routines ...) */
rosarium 0:2ddc0583bcec 126 #define RADIO_SPI_TIMEOUT_MAX ((uint32_t)1000)
rosarium 0:2ddc0583bcec 127
rosarium 0:2ddc0583bcec 128 /* SPIRIT1_Spi_config_Private_Defines */
rosarium 0:2ddc0583bcec 129 #define CS_TO_SCLK_DELAY 0x0200//FIXME what is this doing?
rosarium 0:2ddc0583bcec 130 #define CLK_TO_CS_DELAY 0x0001
rosarium 0:2ddc0583bcec 131
rosarium 0:2ddc0583bcec 132 /* SPIRIT1_Spi_config_Headers */
rosarium 0:2ddc0583bcec 133 #define HEADER_WRITE_MASK 0x00 /*!< Write mask for header byte*/
rosarium 0:2ddc0583bcec 134 #define HEADER_READ_MASK 0x01 /*!< Read mask for header byte*/
rosarium 0:2ddc0583bcec 135 #define HEADER_ADDRESS_MASK 0x00 /*!< Address mask for header byte*/
rosarium 0:2ddc0583bcec 136 #define HEADER_COMMAND_MASK 0x80 /*!< Command mask for header byte*/
rosarium 0:2ddc0583bcec 137
rosarium 0:2ddc0583bcec 138 #define LINEAR_FIFO_ADDRESS 0xFF /*!< Linear FIFO address*/
rosarium 0:2ddc0583bcec 139
rosarium 0:2ddc0583bcec 140 /* SPIRIT1_Spi_config_Private_FunctionPrototypes */
rosarium 0:2ddc0583bcec 141 #define SPI_ENTER_CRITICAL() IRQ_DISABLE()
rosarium 0:2ddc0583bcec 142 #define SPI_EXIT_CRITICAL() IRQ_ENABLE()
rosarium 0:2ddc0583bcec 143
rosarium 0:2ddc0583bcec 144 /* SPIRIT1_Spi_config_Private_Functions */
rosarium 0:2ddc0583bcec 145 #define RadioSpiCSLow() HAL_GPIO_WritePin(RADIO_SPI_CS_PORT, RADIO_SPI_CS_PIN, GPIO_PIN_RESET)
rosarium 0:2ddc0583bcec 146 #define RadioSpiCSHigh() HAL_GPIO_WritePin(RADIO_SPI_CS_PORT, RADIO_SPI_CS_PIN, GPIO_PIN_SET)
rosarium 0:2ddc0583bcec 147
rosarium 0:2ddc0583bcec 148 /* SPIRIT1_Spi_config_Private_Macros */
rosarium 0:2ddc0583bcec 149 #define BUILT_HEADER(add_comm, w_r) (add_comm | w_r) /*!< macro to build the header byte*/
rosarium 0:2ddc0583bcec 150 #define WRITE_HEADER BUILT_HEADER(HEADER_ADDRESS_MASK, HEADER_WRITE_MASK) /*!< macro to build the write
rosarium 0:2ddc0583bcec 151 header byte*/
rosarium 0:2ddc0583bcec 152 #define READ_HEADER BUILT_HEADER(HEADER_ADDRESS_MASK, HEADER_READ_MASK) /*!< macro to build the read
rosarium 0:2ddc0583bcec 153 header byte*/
rosarium 0:2ddc0583bcec 154 #define COMMAND_HEADER BUILT_HEADER(HEADER_COMMAND_MASK, HEADER_WRITE_MASK) /*!< macro to build the command
rosarium 0:2ddc0583bcec 155 header byte*/
rosarium 0:2ddc0583bcec 156
rosarium 0:2ddc0583bcec 157
rosarium 0:2ddc0583bcec 158
rosarium 0:2ddc0583bcec 159 /* Exported Variables --------------------------------------------------------*/
rosarium 0:2ddc0583bcec 160
rosarium 0:2ddc0583bcec 161
rosarium 0:2ddc0583bcec 162 /* Exported functions ------------------------------------------------------- */
rosarium 0:2ddc0583bcec 163 void SdkEvalSpiInit(void);
rosarium 0:2ddc0583bcec 164 // void SpiCSGpioSetLevel(GPIO_PinState xState);
rosarium 0:2ddc0583bcec 165 StatusBytes SdkEvalSpiWriteRegisters(uint8_t cRegAddress, uint8_t cNbBytes, uint8_t* pcBuffer);
rosarium 0:2ddc0583bcec 166 StatusBytes SdkEvalSpiReadRegisters(uint8_t cRegAddress, uint8_t cNbBytes, uint8_t* pcBuffer);
rosarium 0:2ddc0583bcec 167 StatusBytes SdkEvalSpiCommandStrobes(uint8_t cCommandCode);
rosarium 0:2ddc0583bcec 168 StatusBytes SdkEvalSpiWriteFifo(uint8_t cNbBytes, uint8_t* pcBuffer);
rosarium 0:2ddc0583bcec 169 StatusBytes SdkEvalSpiReadFifo(uint8_t cNbBytes, uint8_t* pcBuffer);
rosarium 0:2ddc0583bcec 170
rosarium 0:2ddc0583bcec 171
rosarium 0:2ddc0583bcec 172 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 173 }
rosarium 0:2ddc0583bcec 174 #endif
rosarium 0:2ddc0583bcec 175 #endif /*__RADIO_SPI_H */
rosarium 0:2ddc0583bcec 176
rosarium 0:2ddc0583bcec 177 /**
rosarium 0:2ddc0583bcec 178 * @}
rosarium 0:2ddc0583bcec 179 */
rosarium 0:2ddc0583bcec 180
rosarium 0:2ddc0583bcec 181 /**
rosarium 0:2ddc0583bcec 182 * @}
rosarium 0:2ddc0583bcec 183 */
rosarium 0:2ddc0583bcec 184
rosarium 0:2ddc0583bcec 185 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/