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 SPIRIT_Gpio.h
rosarium 0:2ddc0583bcec 4 * @author VMA division - AMS
rosarium 0:2ddc0583bcec 5 * @version 3.2.2
rosarium 0:2ddc0583bcec 6 * @date 08-July-2015
rosarium 0:2ddc0583bcec 7 * @brief This file provides all the low level API to manage SPIRIT GPIO.
rosarium 0:2ddc0583bcec 8 *
rosarium 0:2ddc0583bcec 9 * @details
rosarium 0:2ddc0583bcec 10 *
rosarium 0:2ddc0583bcec 11 * This module can be used to configure the Spirit GPIO pins to perform
rosarium 0:2ddc0583bcec 12 * specific functions.
rosarium 0:2ddc0583bcec 13 * The structure <i>@ref gpioIRQ</i> can be used to specify these features for
rosarium 0:2ddc0583bcec 14 * one of the four Spirit Gpio pin.
rosarium 0:2ddc0583bcec 15 * The following example shows how to configure a pin (GPIO 3) to be used as an IRQ source
rosarium 0:2ddc0583bcec 16 * for a microcontroller using the <i>@ref SpiritGpioInit()</i> function.
rosarium 0:2ddc0583bcec 17 *
rosarium 0:2ddc0583bcec 18 * <b>Example:</b>
rosarium 0:2ddc0583bcec 19 * @code
rosarium 0:2ddc0583bcec 20 *
rosarium 0:2ddc0583bcec 21 * SGpioInit gpioIRQ={
rosarium 0:2ddc0583bcec 22 * SPIRIT_GPIO_3,
rosarium 0:2ddc0583bcec 23 * SPIRIT_GPIO_MODE_DIGITAL_OUTPUT_LP,
rosarium 0:2ddc0583bcec 24 * SPIRIT_GPIO_DIG_OUT_IRQ
rosarium 0:2ddc0583bcec 25 * };
rosarium 0:2ddc0583bcec 26 *
rosarium 0:2ddc0583bcec 27 * ...
rosarium 0:2ddc0583bcec 28 *
rosarium 0:2ddc0583bcec 29 * SpiritGpioInit(&gpioIRQ);
rosarium 0:2ddc0583bcec 30 *
rosarium 0:2ddc0583bcec 31 * @endcode
rosarium 0:2ddc0583bcec 32 *
rosarium 0:2ddc0583bcec 33 * @note Please read the functions documentation for the other GPIO features.
rosarium 0:2ddc0583bcec 34 *
rosarium 0:2ddc0583bcec 35 *
rosarium 0:2ddc0583bcec 36 * @attention
rosarium 0:2ddc0583bcec 37 *
rosarium 0:2ddc0583bcec 38 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 39 *
rosarium 0:2ddc0583bcec 40 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 41 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 42 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 43 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 44 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 45 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 46 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 47 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 48 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 49 * without specific prior written permission.
rosarium 0:2ddc0583bcec 50 *
rosarium 0:2ddc0583bcec 51 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 52 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 53 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 54 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 55 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 56 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 57 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 58 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 59 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 60 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 61 *
rosarium 0:2ddc0583bcec 62 ******************************************************************************
rosarium 0:2ddc0583bcec 63 */
rosarium 0:2ddc0583bcec 64
rosarium 0:2ddc0583bcec 65 /* Define to prevent recursive inclusion -------------------------------------*/
rosarium 0:2ddc0583bcec 66 #ifndef __SPIRIT_GPIO_H
rosarium 0:2ddc0583bcec 67 #define __SPIRIT_GPIO_H
rosarium 0:2ddc0583bcec 68
rosarium 0:2ddc0583bcec 69
rosarium 0:2ddc0583bcec 70 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 71
rosarium 0:2ddc0583bcec 72 #include "SPIRIT_Regs.h"
rosarium 0:2ddc0583bcec 73 #include "SPIRIT_Types.h"
rosarium 0:2ddc0583bcec 74
rosarium 0:2ddc0583bcec 75
rosarium 0:2ddc0583bcec 76 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 77 extern "C" {
rosarium 0:2ddc0583bcec 78 #endif
rosarium 0:2ddc0583bcec 79
rosarium 0:2ddc0583bcec 80
rosarium 0:2ddc0583bcec 81 /** @addtogroup SPIRIT_Libraries
rosarium 0:2ddc0583bcec 82 * @{
rosarium 0:2ddc0583bcec 83 */
rosarium 0:2ddc0583bcec 84
rosarium 0:2ddc0583bcec 85
rosarium 0:2ddc0583bcec 86 /** @defgroup SPIRIT_Gpio GPIO
rosarium 0:2ddc0583bcec 87 * @brief Configuration and management of SPIRIT GPIO.
rosarium 0:2ddc0583bcec 88 * @details See the file <i>@ref SPIRIT_Gpio.h</i> for more details.
rosarium 0:2ddc0583bcec 89 * @{
rosarium 0:2ddc0583bcec 90 */
rosarium 0:2ddc0583bcec 91
rosarium 0:2ddc0583bcec 92
rosarium 0:2ddc0583bcec 93
rosarium 0:2ddc0583bcec 94 /** @defgroup Gpio_Exported_Types GPIO Exported Types
rosarium 0:2ddc0583bcec 95 * @{
rosarium 0:2ddc0583bcec 96 */
rosarium 0:2ddc0583bcec 97
rosarium 0:2ddc0583bcec 98 /**
rosarium 0:2ddc0583bcec 99 * @brief SPIRIT GPIO pin enumeration.
rosarium 0:2ddc0583bcec 100 */
rosarium 0:2ddc0583bcec 101 typedef enum
rosarium 0:2ddc0583bcec 102 {
rosarium 0:2ddc0583bcec 103 SPIRIT_GPIO_0 = GPIO0_CONF_BASE, /*!< GPIO_0 selected */
rosarium 0:2ddc0583bcec 104 SPIRIT_GPIO_1 = GPIO1_CONF_BASE, /*!< GPIO_1 selected */
rosarium 0:2ddc0583bcec 105 SPIRIT_GPIO_2 = GPIO2_CONF_BASE, /*!< GPIO_2 selected */
rosarium 0:2ddc0583bcec 106 SPIRIT_GPIO_3 = GPIO3_CONF_BASE /*!< GPIO_3 selected */
rosarium 0:2ddc0583bcec 107 }SpiritGpioPin;
rosarium 0:2ddc0583bcec 108
rosarium 0:2ddc0583bcec 109
rosarium 0:2ddc0583bcec 110 #define IS_SPIRIT_GPIO(PIN) ((PIN == SPIRIT_GPIO_0) || \
rosarium 0:2ddc0583bcec 111 (PIN == SPIRIT_GPIO_1) || \
rosarium 0:2ddc0583bcec 112 (PIN == SPIRIT_GPIO_2) || \
rosarium 0:2ddc0583bcec 113 (PIN == SPIRIT_GPIO_3))
rosarium 0:2ddc0583bcec 114
rosarium 0:2ddc0583bcec 115
rosarium 0:2ddc0583bcec 116 /**
rosarium 0:2ddc0583bcec 117 * @brief SPIRIT GPIO mode enumeration.
rosarium 0:2ddc0583bcec 118 */
rosarium 0:2ddc0583bcec 119 typedef enum
rosarium 0:2ddc0583bcec 120 {
rosarium 0:2ddc0583bcec 121 SPIRIT_GPIO_MODE_DIGITAL_INPUT = 0x01, /*!< Digital Input on GPIO */
rosarium 0:2ddc0583bcec 122 SPIRIT_GPIO_MODE_DIGITAL_OUTPUT_LP = 0x02, /*!< Digital Output on GPIO (low current) */
rosarium 0:2ddc0583bcec 123 SPIRIT_GPIO_MODE_DIGITAL_OUTPUT_HP = 0x03 /*!< Digital Output on GPIO (high current) */
rosarium 0:2ddc0583bcec 124 }SpiritGpioMode;
rosarium 0:2ddc0583bcec 125
rosarium 0:2ddc0583bcec 126 #define IS_SPIRIT_GPIO_MODE(MODE) ((MODE == SPIRIT_GPIO_MODE_DIGITAL_INPUT) || \
rosarium 0:2ddc0583bcec 127 (MODE == SPIRIT_GPIO_MODE_DIGITAL_OUTPUT_LP) || \
rosarium 0:2ddc0583bcec 128 (MODE == SPIRIT_GPIO_MODE_DIGITAL_OUTPUT_HP))
rosarium 0:2ddc0583bcec 129
rosarium 0:2ddc0583bcec 130
rosarium 0:2ddc0583bcec 131
rosarium 0:2ddc0583bcec 132 /**
rosarium 0:2ddc0583bcec 133 * @brief SPIRIT I/O selection enumeration.
rosarium 0:2ddc0583bcec 134 */
rosarium 0:2ddc0583bcec 135 typedef enum
rosarium 0:2ddc0583bcec 136 {
rosarium 0:2ddc0583bcec 137 SPIRIT_GPIO_DIG_OUT_IRQ = 0x00, /*!< nIRQ (Interrupt Request, active low) , default configuration after POR */
rosarium 0:2ddc0583bcec 138 SPIRIT_GPIO_DIG_OUT_POR_INV = 0x08, /*!< POR inverted (active low) */
rosarium 0:2ddc0583bcec 139 SPIRIT_GPIO_DIG_OUT_WUT_EXP = 0x10, /*!< Wake-Up Timer expiration: "1" when WUT has expired */
rosarium 0:2ddc0583bcec 140 SPIRIT_GPIO_DIG_OUT_LBD = 0x18, /*!< Low battery detection: "1" when battery is below threshold setting */
rosarium 0:2ddc0583bcec 141 SPIRIT_GPIO_DIG_OUT_TX_DATA = 0x20, /*!< TX data internal clock output (TX data are sampled on the rising edge of it) */
rosarium 0:2ddc0583bcec 142 SPIRIT_GPIO_DIG_OUT_TX_STATE = 0x28, /*!< TX state indication: "1" when Spirit1 is passing in the TX state */
rosarium 0:2ddc0583bcec 143 SPIRIT_GPIO_DIG_OUT_TX_FIFO_ALMOST_EMPTY = 0x30, /*!< TX FIFO Almost Empty Flag */
rosarium 0:2ddc0583bcec 144 SPIRIT_GPIO_DIG_OUT_TX_FIFO_ALMOST_FULL = 0x38, /*!< TX FIFO Almost Full Flag */
rosarium 0:2ddc0583bcec 145 SPIRIT_GPIO_DIG_OUT_RX_DATA = 0x40, /*!< RX data output */
rosarium 0:2ddc0583bcec 146 SPIRIT_GPIO_DIG_OUT_RX_CLOCK = 0x48, /*!< RX clock output (recovered from received data) */
rosarium 0:2ddc0583bcec 147 SPIRIT_GPIO_DIG_OUT_RX_STATE = 0x50, /*!< RX state indication: "1" when Spirit1 is passing in the RX state */
rosarium 0:2ddc0583bcec 148 SPIRIT_GPIO_DIG_OUT_RX_FIFO_ALMOST_FULL = 0x58, /*!< RX FIFO Almost Full Flag */
rosarium 0:2ddc0583bcec 149 SPIRIT_GPIO_DIG_OUT_RX_FIFO_ALMOST_EMPTY = 0x60, /*!< RX FIFO Almost Empty Flag */
rosarium 0:2ddc0583bcec 150 SPIRIT_GPIO_DIG_OUT_ANTENNA_SWITCH = 0x68, /*!< Antenna switch used for antenna diversity */
rosarium 0:2ddc0583bcec 151 SPIRIT_GPIO_DIG_OUT_VALID_PREAMBLE = 0x70, /*!< Valid Preamble Detected Flag */
rosarium 0:2ddc0583bcec 152 SPIRIT_GPIO_DIG_OUT_SYNC_DETECTED = 0x78, /*!< Sync WordSync Word Detected Flag */
rosarium 0:2ddc0583bcec 153 SPIRIT_GPIO_DIG_OUT_RSSI_THRESHOLD = 0x80, /*!< RSSI above threshold */
rosarium 0:2ddc0583bcec 154 SPIRIT_GPIO_DIG_OUT_MCU_CLOCK = 0x88, /*!< MCU Clock */
rosarium 0:2ddc0583bcec 155 SPIRIT_GPIO_DIG_OUT_TX_RX_MODE = 0x90, /*!< TX or RX mode indicator (to enable an external range extender) */
rosarium 0:2ddc0583bcec 156 SPIRIT_GPIO_DIG_OUT_VDD = 0x98, /*!< VDD (to emulate an additional GPIO of the MCU, programmable by SPI) */
rosarium 0:2ddc0583bcec 157 SPIRIT_GPIO_DIG_OUT_GND = 0xA0, /*!< GND (to emulate an additional GPIO of the MCU, programmable by SPI) */
rosarium 0:2ddc0583bcec 158 SPIRIT_GPIO_DIG_OUT_SMPS_EXT = 0xA8, /*!< External SMPS enable signal (active high) */
rosarium 0:2ddc0583bcec 159 SPIRIT_GPIO_DIG_OUT_SLEEP_OR_STANDBY = 0xB0,
rosarium 0:2ddc0583bcec 160 SPIRIT_GPIO_DIG_OUT_READY = 0xB8,
rosarium 0:2ddc0583bcec 161 SPIRIT_GPIO_DIG_OUT_LOCK = 0xC0,
rosarium 0:2ddc0583bcec 162 SPIRIT_GPIO_DIG_OUT_WAIT_FOR_LOCK_SIG = 0xC8,
rosarium 0:2ddc0583bcec 163 SPIRIT_GPIO_DIG_OUT_WAIT_FOR_TIMER_FOR_LOCK = 0xD0,
rosarium 0:2ddc0583bcec 164 SPIRIT_GPIO_DIG_OUT_WAIT_FOR_READY2_SIG = 0xD8,
rosarium 0:2ddc0583bcec 165 SPIRIT_GPIO_DIG_OUT_WAIT_FOR_TIMER_FOR_PM_SET = 0xE0,
rosarium 0:2ddc0583bcec 166 SPIRIT_GPIO_DIG_OUT_WAIT_VCO_CALIBRATION = 0xE8,
rosarium 0:2ddc0583bcec 167 SPIRIT_GPIO_DIG_OUT_ENABLE_SYNTH_FULL_CIRCUIT = 0xF0,
rosarium 0:2ddc0583bcec 168 SPIRIT_GPIO_DIG_OUT_WAIT_FOR_RCCAL_OK_SIG = 0xFF,
rosarium 0:2ddc0583bcec 169
rosarium 0:2ddc0583bcec 170 SPIRIT_GPIO_DIG_IN_TX_COMMAND = 0x00,
rosarium 0:2ddc0583bcec 171 SPIRIT_GPIO_DIG_IN_RX_COMMAND = 0x08,
rosarium 0:2ddc0583bcec 172 SPIRIT_GPIO_DIG_IN_TX_DATA_INPUT_FOR_DIRECTRF = 0x10,
rosarium 0:2ddc0583bcec 173 SPIRIT_GPIO_DIG_IN_DATA_WAKEUP = 0x18,
rosarium 0:2ddc0583bcec 174 SPIRIT_GPIO_DIG_IN_EXT_CLOCK_AT_34_7KHZ = 0x20
rosarium 0:2ddc0583bcec 175
rosarium 0:2ddc0583bcec 176 }SpiritGpioIO;
rosarium 0:2ddc0583bcec 177
rosarium 0:2ddc0583bcec 178 #define IS_SPIRIT_GPIO_IO(IO_SEL) ((IO_SEL == SPIRIT_GPIO_DIG_OUT_IRQ) || \
rosarium 0:2ddc0583bcec 179 (IO_SEL == SPIRIT_GPIO_DIG_OUT_POR_INV) || \
rosarium 0:2ddc0583bcec 180 (IO_SEL == SPIRIT_GPIO_DIG_OUT_WUT_EXP) || \
rosarium 0:2ddc0583bcec 181 (IO_SEL == SPIRIT_GPIO_DIG_OUT_LBD) || \
rosarium 0:2ddc0583bcec 182 (IO_SEL == SPIRIT_GPIO_DIG_OUT_TX_DATA) || \
rosarium 0:2ddc0583bcec 183 (IO_SEL == SPIRIT_GPIO_DIG_OUT_TX_STATE) || \
rosarium 0:2ddc0583bcec 184 (IO_SEL == SPIRIT_GPIO_DIG_OUT_TX_FIFO_ALMOST_EMPTY) || \
rosarium 0:2ddc0583bcec 185 (IO_SEL == SPIRIT_GPIO_DIG_OUT_TX_FIFO_ALMOST_FULL) || \
rosarium 0:2ddc0583bcec 186 (IO_SEL == SPIRIT_GPIO_DIG_OUT_RX_DATA) || \
rosarium 0:2ddc0583bcec 187 (IO_SEL == SPIRIT_GPIO_DIG_OUT_RX_CLOCK) || \
rosarium 0:2ddc0583bcec 188 (IO_SEL == SPIRIT_GPIO_DIG_OUT_RX_STATE) || \
rosarium 0:2ddc0583bcec 189 (IO_SEL == SPIRIT_GPIO_DIG_OUT_RX_FIFO_ALMOST_FULL) || \
rosarium 0:2ddc0583bcec 190 (IO_SEL == SPIRIT_GPIO_DIG_OUT_RX_FIFO_ALMOST_EMPTY) || \
rosarium 0:2ddc0583bcec 191 (IO_SEL == SPIRIT_GPIO_DIG_OUT_ANTENNA_SWITCH) || \
rosarium 0:2ddc0583bcec 192 (IO_SEL == SPIRIT_GPIO_DIG_OUT_VALID_PREAMBLE) || \
rosarium 0:2ddc0583bcec 193 (IO_SEL == SPIRIT_GPIO_DIG_OUT_SYNC_DETECTED) || \
rosarium 0:2ddc0583bcec 194 (IO_SEL == SPIRIT_GPIO_DIG_OUT_RSSI_THRESHOLD) || \
rosarium 0:2ddc0583bcec 195 (IO_SEL == SPIRIT_GPIO_DIG_OUT_MCU_CLOCK) || \
rosarium 0:2ddc0583bcec 196 (IO_SEL == SPIRIT_GPIO_DIG_OUT_TX_RX_MODE) || \
rosarium 0:2ddc0583bcec 197 (IO_SEL == SPIRIT_GPIO_DIG_OUT_VDD) || \
rosarium 0:2ddc0583bcec 198 (IO_SEL == SPIRIT_GPIO_DIG_OUT_GND) || \
rosarium 0:2ddc0583bcec 199 (IO_SEL == SPIRIT_GPIO_DIG_OUT_SMPS_EXT) ||\
rosarium 0:2ddc0583bcec 200 (IO_SEL == SPIRIT_GPIO_DIG_OUT_SLEEP_OR_STANDBY) ||\
rosarium 0:2ddc0583bcec 201 (IO_SEL == SPIRIT_GPIO_DIG_OUT_READY) ||\
rosarium 0:2ddc0583bcec 202 (IO_SEL == SPIRIT_GPIO_DIG_OUT_LOCK) ||\
rosarium 0:2ddc0583bcec 203 (IO_SEL == SPIRIT_GPIO_DIG_OUT_WAIT_FOR_LOCK_SIG) ||\
rosarium 0:2ddc0583bcec 204 (IO_SEL == SPIRIT_GPIO_DIG_OUT_WAIT_FOR_TIMER_FOR_LOCK) ||\
rosarium 0:2ddc0583bcec 205 (IO_SEL == SPIRIT_GPIO_DIG_OUT_WAIT_FOR_READY2_SIG) ||\
rosarium 0:2ddc0583bcec 206 (IO_SEL == SPIRIT_GPIO_DIG_OUT_WAIT_FOR_TIMER_FOR_PM_SET) ||\
rosarium 0:2ddc0583bcec 207 (IO_SEL == SPIRIT_GPIO_DIG_OUT_WAIT_VCO_CALIBRATION) ||\
rosarium 0:2ddc0583bcec 208 (IO_SEL == SPIRIT_GPIO_DIG_OUT_ENABLE_SYNTH_FULL_CIRCUIT) ||\
rosarium 0:2ddc0583bcec 209 (IO_SEL == SPIRIT_GPIO_DIG_OUT_WAIT_FOR_RCCAL_OK_SIG) ||\
rosarium 0:2ddc0583bcec 210 (IO_SEL == SPIRIT_GPIO_DIG_IN_TX_COMMAND) ||\
rosarium 0:2ddc0583bcec 211 (IO_SEL == SPIRIT_GPIO_DIG_IN_RX_COMMAND) ||\
rosarium 0:2ddc0583bcec 212 (IO_SEL == SPIRIT_GPIO_DIG_IN_TX_DATA_INPUT_FOR_DIRECTRF) ||\
rosarium 0:2ddc0583bcec 213 (IO_SEL == SPIRIT_GPIO_DIG_IN_DATA_WAKEUP) ||\
rosarium 0:2ddc0583bcec 214 (IO_SEL == SPIRIT_GPIO_DIG_IN_EXT_CLOCK_AT_34_7KHZ))
rosarium 0:2ddc0583bcec 215
rosarium 0:2ddc0583bcec 216 /**
rosarium 0:2ddc0583bcec 217 * @brief SPIRIT OutputLevel enumeration.
rosarium 0:2ddc0583bcec 218 */
rosarium 0:2ddc0583bcec 219
rosarium 0:2ddc0583bcec 220 typedef enum
rosarium 0:2ddc0583bcec 221 {
rosarium 0:2ddc0583bcec 222 LOW = 0,
rosarium 0:2ddc0583bcec 223 HIGH = !LOW
rosarium 0:2ddc0583bcec 224 }OutputLevel;
rosarium 0:2ddc0583bcec 225
rosarium 0:2ddc0583bcec 226 #define IS_SPIRIT_GPIO_LEVEL(LEVEL) ((LEVEL == LOW) || \
rosarium 0:2ddc0583bcec 227 (LEVEL == HIGH))
rosarium 0:2ddc0583bcec 228
rosarium 0:2ddc0583bcec 229
rosarium 0:2ddc0583bcec 230 /**
rosarium 0:2ddc0583bcec 231 * @brief SPIRIT GPIO Init structure definition.
rosarium 0:2ddc0583bcec 232 */
rosarium 0:2ddc0583bcec 233 typedef struct
rosarium 0:2ddc0583bcec 234 {
rosarium 0:2ddc0583bcec 235 SpiritGpioPin xSpiritGpioPin; /*!< Specifies the GPIO pins to be configured.
rosarium 0:2ddc0583bcec 236 This parameter can be any value of @ref SpiritGpioPin */
rosarium 0:2ddc0583bcec 237
rosarium 0:2ddc0583bcec 238 SpiritGpioMode xSpiritGpioMode; /*!< Specifies the operating mode for the selected pins.
rosarium 0:2ddc0583bcec 239 This parameter can be a value of @ref SpiritGpioMode */
rosarium 0:2ddc0583bcec 240
rosarium 0:2ddc0583bcec 241 SpiritGpioIO xSpiritGpioIO; /*!< Specifies the I/O selection for the selected pins.
rosarium 0:2ddc0583bcec 242 This parameter can be a value of @ref SpiritGpioIO */
rosarium 0:2ddc0583bcec 243
rosarium 0:2ddc0583bcec 244 }SGpioInit;
rosarium 0:2ddc0583bcec 245
rosarium 0:2ddc0583bcec 246
rosarium 0:2ddc0583bcec 247
rosarium 0:2ddc0583bcec 248 /**
rosarium 0:2ddc0583bcec 249 * @brief SPIRIT clock output XO prescaler enumeration.
rosarium 0:2ddc0583bcec 250 */
rosarium 0:2ddc0583bcec 251
rosarium 0:2ddc0583bcec 252 typedef enum
rosarium 0:2ddc0583bcec 253 {
rosarium 0:2ddc0583bcec 254 XO_RATIO_1 = 0x00, /*!< XO Clock signal available on the GPIO divided by 1 */
rosarium 0:2ddc0583bcec 255 XO_RATIO_2_3 = 0x02, /*!< XO Clock signal available on the GPIO divided by 2/3 */
rosarium 0:2ddc0583bcec 256 XO_RATIO_1_2 = 0x04, /*!< XO Clock signal available on the GPIO divided by 1/2 */
rosarium 0:2ddc0583bcec 257 XO_RATIO_1_3 = 0x06, /*!< XO Clock signal available on the GPIO divided by 1/3 */
rosarium 0:2ddc0583bcec 258 XO_RATIO_1_4 = 0x08, /*!< XO Clock signal available on the GPIO divided by 1/4 */
rosarium 0:2ddc0583bcec 259 XO_RATIO_1_6 = 0x0A, /*!< XO Clock signal available on the GPIO divided by 1/6 */
rosarium 0:2ddc0583bcec 260 XO_RATIO_1_8 = 0x0C, /*!< XO Clock signal available on the GPIO divided by 1/8 */
rosarium 0:2ddc0583bcec 261 XO_RATIO_1_12 = 0x0E, /*!< XO Clock signal available on the GPIO divided by 1/12 */
rosarium 0:2ddc0583bcec 262 XO_RATIO_1_16 = 0x10, /*!< XO Clock signal available on the GPIO divided by 1/16 */
rosarium 0:2ddc0583bcec 263 XO_RATIO_1_24 = 0x12, /*!< XO Clock signal available on the GPIO divided by 1/24 */
rosarium 0:2ddc0583bcec 264 XO_RATIO_1_36 = 0x14, /*!< XO Clock signal available on the GPIO divided by 1/36 */
rosarium 0:2ddc0583bcec 265 XO_RATIO_1_48 = 0x16, /*!< XO Clock signal available on the GPIO divided by 1/48 */
rosarium 0:2ddc0583bcec 266 XO_RATIO_1_64 = 0x18, /*!< XO Clock signal available on the GPIO divided by 1/64 */
rosarium 0:2ddc0583bcec 267 XO_RATIO_1_96 = 0x1A, /*!< XO Clock signal available on the GPIO divided by 1/96 */
rosarium 0:2ddc0583bcec 268 XO_RATIO_1_128 = 0x1C, /*!< XO Clock signal available on the GPIO divided by 1/128 */
rosarium 0:2ddc0583bcec 269 XO_RATIO_1_192 = 0x1E /*!< XO Clock signal available on the GPIO divided by 1/196 */
rosarium 0:2ddc0583bcec 270 }ClockOutputXOPrescaler;
rosarium 0:2ddc0583bcec 271
rosarium 0:2ddc0583bcec 272 #define IS_SPIRIT_CLOCK_OUTPUT_XO(RATIO) ((RATIO == XO_RATIO_1) || \
rosarium 0:2ddc0583bcec 273 (RATIO == XO_RATIO_2_3) || \
rosarium 0:2ddc0583bcec 274 (RATIO == XO_RATIO_1_2) || \
rosarium 0:2ddc0583bcec 275 (RATIO == XO_RATIO_1_3) || \
rosarium 0:2ddc0583bcec 276 (RATIO == XO_RATIO_1_4) || \
rosarium 0:2ddc0583bcec 277 (RATIO == XO_RATIO_1_6) || \
rosarium 0:2ddc0583bcec 278 (RATIO == XO_RATIO_1_8) || \
rosarium 0:2ddc0583bcec 279 (RATIO == XO_RATIO_1_12) || \
rosarium 0:2ddc0583bcec 280 (RATIO == XO_RATIO_1_16) || \
rosarium 0:2ddc0583bcec 281 (RATIO == XO_RATIO_1_24) || \
rosarium 0:2ddc0583bcec 282 (RATIO == XO_RATIO_1_36) || \
rosarium 0:2ddc0583bcec 283 (RATIO == XO_RATIO_1_48) || \
rosarium 0:2ddc0583bcec 284 (RATIO == XO_RATIO_1_64) || \
rosarium 0:2ddc0583bcec 285 (RATIO == XO_RATIO_1_96) || \
rosarium 0:2ddc0583bcec 286 (RATIO == XO_RATIO_1_128) || \
rosarium 0:2ddc0583bcec 287 (RATIO == XO_RATIO_1_192))
rosarium 0:2ddc0583bcec 288
rosarium 0:2ddc0583bcec 289 /**
rosarium 0:2ddc0583bcec 290 * @brief SPIRIT Clock Output RCO prescaler enumeration.
rosarium 0:2ddc0583bcec 291 */
rosarium 0:2ddc0583bcec 292
rosarium 0:2ddc0583bcec 293 typedef enum
rosarium 0:2ddc0583bcec 294 {
rosarium 0:2ddc0583bcec 295 RCO_RATIO_1 = 0x00, /*!< RCO Clock signal available on the GPIO divided by 1 */
rosarium 0:2ddc0583bcec 296 RCO_RATIO_1_128 = 0x01 /*!< RCO Clock signal available on the GPIO divided by 1/128 */
rosarium 0:2ddc0583bcec 297 }ClockOutputRCOPrescaler;
rosarium 0:2ddc0583bcec 298
rosarium 0:2ddc0583bcec 299 #define IS_SPIRIT_CLOCK_OUTPUT_RCO(RATIO) ((RATIO == RCO_RATIO_1) || \
rosarium 0:2ddc0583bcec 300 (RATIO == RCO_RATIO_1_128))
rosarium 0:2ddc0583bcec 301
rosarium 0:2ddc0583bcec 302 /**
rosarium 0:2ddc0583bcec 303 * @brief SPIRIT ExtraClockCycles enumeration.
rosarium 0:2ddc0583bcec 304 */
rosarium 0:2ddc0583bcec 305
rosarium 0:2ddc0583bcec 306 typedef enum
rosarium 0:2ddc0583bcec 307 {
rosarium 0:2ddc0583bcec 308 EXTRA_CLOCK_CYCLES_0 = 0x00, /*!< 0 extra clock cycles provided to the MCU before switching to STANDBY state */
rosarium 0:2ddc0583bcec 309 EXTRA_CLOCK_CYCLES_64 = 0x20, /*!< 64 extra clock cycles provided to the MCU before switching to STANDBY state */
rosarium 0:2ddc0583bcec 310 EXTRA_CLOCK_CYCLES_256 = 0x40, /*!< 256 extra clock cycles provided to the MCU before switching to STANDBY state */
rosarium 0:2ddc0583bcec 311 EXTRA_CLOCK_CYCLES_512 = 0x60 /*!< 512 extra clock cycles provided to the MCU before switching to STANDBY state */
rosarium 0:2ddc0583bcec 312 }ExtraClockCycles;
rosarium 0:2ddc0583bcec 313
rosarium 0:2ddc0583bcec 314 #define IS_SPIRIT_CLOCK_OUTPUT_EXTRA_CYCLES(CYCLES) ((CYCLES == EXTRA_CLOCK_CYCLES_0) || \
rosarium 0:2ddc0583bcec 315 (CYCLES == EXTRA_CLOCK_CYCLES_64) || \
rosarium 0:2ddc0583bcec 316 (CYCLES == EXTRA_CLOCK_CYCLES_256) || \
rosarium 0:2ddc0583bcec 317 (CYCLES == EXTRA_CLOCK_CYCLES_512))
rosarium 0:2ddc0583bcec 318
rosarium 0:2ddc0583bcec 319
rosarium 0:2ddc0583bcec 320 /**
rosarium 0:2ddc0583bcec 321 * @brief SPIRIT Clock Output initialization structure definition.
rosarium 0:2ddc0583bcec 322 */
rosarium 0:2ddc0583bcec 323 typedef struct
rosarium 0:2ddc0583bcec 324 {
rosarium 0:2ddc0583bcec 325 ClockOutputXOPrescaler xClockOutputXOPrescaler; /*!< Specifies the XO Ratio as clock output.
rosarium 0:2ddc0583bcec 326 This parameter can be any value of @ref ClockOutputXOPrescaler */
rosarium 0:2ddc0583bcec 327
rosarium 0:2ddc0583bcec 328 ClockOutputRCOPrescaler xClockOutputRCOPrescaler; /*!< Specifies the RCO Ratio as clock output.
rosarium 0:2ddc0583bcec 329 This parameter can be a value of @ref ClockOutputRCOPrescaler */
rosarium 0:2ddc0583bcec 330
rosarium 0:2ddc0583bcec 331 ExtraClockCycles xExtraClockCycles; /*!< Specifies the Extra Clock Cycles provided before entering in Standby State.
rosarium 0:2ddc0583bcec 332 This parameter can be a value of @ref ExtraClockCycles */
rosarium 0:2ddc0583bcec 333
rosarium 0:2ddc0583bcec 334 }ClockOutputInit;
rosarium 0:2ddc0583bcec 335
rosarium 0:2ddc0583bcec 336
rosarium 0:2ddc0583bcec 337
rosarium 0:2ddc0583bcec 338 /**
rosarium 0:2ddc0583bcec 339 * @}
rosarium 0:2ddc0583bcec 340 */
rosarium 0:2ddc0583bcec 341
rosarium 0:2ddc0583bcec 342
rosarium 0:2ddc0583bcec 343
rosarium 0:2ddc0583bcec 344 /** @defgroup Gpio_Exported_Constants GPIO Exported Constants
rosarium 0:2ddc0583bcec 345 * @{
rosarium 0:2ddc0583bcec 346 */
rosarium 0:2ddc0583bcec 347
rosarium 0:2ddc0583bcec 348
rosarium 0:2ddc0583bcec 349 /**
rosarium 0:2ddc0583bcec 350 * @}
rosarium 0:2ddc0583bcec 351 */
rosarium 0:2ddc0583bcec 352
rosarium 0:2ddc0583bcec 353
rosarium 0:2ddc0583bcec 354
rosarium 0:2ddc0583bcec 355 /** @defgroup Gpio_Exported_Macros GPIO Exported Macros
rosarium 0:2ddc0583bcec 356 * @{
rosarium 0:2ddc0583bcec 357 */
rosarium 0:2ddc0583bcec 358
rosarium 0:2ddc0583bcec 359
rosarium 0:2ddc0583bcec 360 /**
rosarium 0:2ddc0583bcec 361 * @}
rosarium 0:2ddc0583bcec 362 */
rosarium 0:2ddc0583bcec 363
rosarium 0:2ddc0583bcec 364
rosarium 0:2ddc0583bcec 365
rosarium 0:2ddc0583bcec 366 /** @defgroup Gpio_Exported_Functions GPIO Exported Functions
rosarium 0:2ddc0583bcec 367 * @{
rosarium 0:2ddc0583bcec 368 */
rosarium 0:2ddc0583bcec 369
rosarium 0:2ddc0583bcec 370 void SpiritGpioInit(SGpioInit* pxGpioInitStruct);
rosarium 0:2ddc0583bcec 371 void SpiritGpioTemperatureSensor(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 372 void SpiritGpioSetLevel(SpiritGpioPin xGpioX, OutputLevel xLevel);
rosarium 0:2ddc0583bcec 373 OutputLevel SpiritGpioGetLevel(SpiritGpioPin xGpioX);
rosarium 0:2ddc0583bcec 374 void SpiritGpioClockOutput(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 375 void SpiritGpioClockOutputInit(ClockOutputInit* pxClockOutputInitStruct);
rosarium 0:2ddc0583bcec 376 void SpiritGpioSetXOPrescaler(ClockOutputXOPrescaler xXOPrescaler);
rosarium 0:2ddc0583bcec 377 ClockOutputXOPrescaler SpiritGpioGetXOPrescaler(void);
rosarium 0:2ddc0583bcec 378 void SpiritGpioSetRCOPrescaler(ClockOutputRCOPrescaler xRCOPrescaler);
rosarium 0:2ddc0583bcec 379 ClockOutputRCOPrescaler SpiritGpioGetRCOPrescaler(void);
rosarium 0:2ddc0583bcec 380 void SpiritGpioSetExtraClockCycles(ExtraClockCycles xExtraCycles);
rosarium 0:2ddc0583bcec 381 ExtraClockCycles SpiritGpioGetExtraClockCycles(void);
rosarium 0:2ddc0583bcec 382
rosarium 0:2ddc0583bcec 383
rosarium 0:2ddc0583bcec 384 /**
rosarium 0:2ddc0583bcec 385 * @}
rosarium 0:2ddc0583bcec 386 */
rosarium 0:2ddc0583bcec 387
rosarium 0:2ddc0583bcec 388 /**
rosarium 0:2ddc0583bcec 389 * @}
rosarium 0:2ddc0583bcec 390 */
rosarium 0:2ddc0583bcec 391
rosarium 0:2ddc0583bcec 392
rosarium 0:2ddc0583bcec 393 /**
rosarium 0:2ddc0583bcec 394 * @}
rosarium 0:2ddc0583bcec 395 */
rosarium 0:2ddc0583bcec 396
rosarium 0:2ddc0583bcec 397
rosarium 0:2ddc0583bcec 398
rosarium 0:2ddc0583bcec 399 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 400 }
rosarium 0:2ddc0583bcec 401 #endif
rosarium 0:2ddc0583bcec 402
rosarium 0:2ddc0583bcec 403 #endif
rosarium 0:2ddc0583bcec 404
rosarium 0:2ddc0583bcec 405 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/