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:
Thu Oct 13 15:41:39 2016 +0200
Revision:
0:4fb29d9ee571
Child:
5:c9c5bc673c64
First compiling version (without warnings)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wolfgang Betz 0:4fb29d9ee571 1 /**
Wolfgang Betz 0:4fb29d9ee571 2 ******************************************************************************
Wolfgang Betz 0:4fb29d9ee571 3 * @file SPIRIT_LinearFifo.c
Wolfgang Betz 0:4fb29d9ee571 4 * @author VMA division - AMS
Wolfgang Betz 0:4fb29d9ee571 5 * @version 3.2.2
Wolfgang Betz 0:4fb29d9ee571 6 * @date 08-July-2015
Wolfgang Betz 0:4fb29d9ee571 7 * @brief Configuration and management of SPIRIT Fifo.
Wolfgang Betz 0:4fb29d9ee571 8 * @details
Wolfgang Betz 0:4fb29d9ee571 9 *
Wolfgang Betz 0:4fb29d9ee571 10 * @attention
Wolfgang Betz 0:4fb29d9ee571 11 *
Wolfgang Betz 0:4fb29d9ee571 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
Wolfgang Betz 0:4fb29d9ee571 13 *
Wolfgang Betz 0:4fb29d9ee571 14 * Redistribution and use in source and binary forms, with or without modification,
Wolfgang Betz 0:4fb29d9ee571 15 * are permitted provided that the following conditions are met:
Wolfgang Betz 0:4fb29d9ee571 16 * 1. Redistributions of source code must retain the above copyright notice,
Wolfgang Betz 0:4fb29d9ee571 17 * this list of conditions and the following disclaimer.
Wolfgang Betz 0:4fb29d9ee571 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
Wolfgang Betz 0:4fb29d9ee571 19 * this list of conditions and the following disclaimer in the documentation
Wolfgang Betz 0:4fb29d9ee571 20 * and/or other materials provided with the distribution.
Wolfgang Betz 0:4fb29d9ee571 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Wolfgang Betz 0:4fb29d9ee571 22 * may be used to endorse or promote products derived from this software
Wolfgang Betz 0:4fb29d9ee571 23 * without specific prior written permission.
Wolfgang Betz 0:4fb29d9ee571 24 *
Wolfgang Betz 0:4fb29d9ee571 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Wolfgang Betz 0:4fb29d9ee571 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Wolfgang Betz 0:4fb29d9ee571 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Wolfgang Betz 0:4fb29d9ee571 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Wolfgang Betz 0:4fb29d9ee571 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Wolfgang Betz 0:4fb29d9ee571 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Wolfgang Betz 0:4fb29d9ee571 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Wolfgang Betz 0:4fb29d9ee571 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Wolfgang Betz 0:4fb29d9ee571 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Wolfgang Betz 0:4fb29d9ee571 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Wolfgang Betz 0:4fb29d9ee571 35 *
Wolfgang Betz 0:4fb29d9ee571 36 ******************************************************************************
Wolfgang Betz 0:4fb29d9ee571 37 */
Wolfgang Betz 0:4fb29d9ee571 38
Wolfgang Betz 0:4fb29d9ee571 39 /* Includes ------------------------------------------------------------------*/
Wolfgang Betz 0:4fb29d9ee571 40 #include "SPIRIT_LinearFifo.h"
Wolfgang Betz 0:4fb29d9ee571 41 #include "MCU_Interface.h"
Wolfgang Betz 0:4fb29d9ee571 42
Wolfgang Betz 0:4fb29d9ee571 43
Wolfgang Betz 0:4fb29d9ee571 44 /**
Wolfgang Betz 0:4fb29d9ee571 45 * @addtogroup SPIRIT_Libraries
Wolfgang Betz 0:4fb29d9ee571 46 * @{
Wolfgang Betz 0:4fb29d9ee571 47 */
Wolfgang Betz 0:4fb29d9ee571 48
Wolfgang Betz 0:4fb29d9ee571 49
Wolfgang Betz 0:4fb29d9ee571 50 /**
Wolfgang Betz 0:4fb29d9ee571 51 * @addtogroup SPIRIT_LinearFifo
Wolfgang Betz 0:4fb29d9ee571 52 * @{
Wolfgang Betz 0:4fb29d9ee571 53 */
Wolfgang Betz 0:4fb29d9ee571 54
Wolfgang Betz 0:4fb29d9ee571 55
Wolfgang Betz 0:4fb29d9ee571 56 /**
Wolfgang Betz 0:4fb29d9ee571 57 * @defgroup LinearFifo_Private_TypesDefinitions Linear FIFO Private Types Definitions
Wolfgang Betz 0:4fb29d9ee571 58 * @{
Wolfgang Betz 0:4fb29d9ee571 59 */
Wolfgang Betz 0:4fb29d9ee571 60
Wolfgang Betz 0:4fb29d9ee571 61 /**
Wolfgang Betz 0:4fb29d9ee571 62 *@}
Wolfgang Betz 0:4fb29d9ee571 63 */
Wolfgang Betz 0:4fb29d9ee571 64
Wolfgang Betz 0:4fb29d9ee571 65
Wolfgang Betz 0:4fb29d9ee571 66 /**
Wolfgang Betz 0:4fb29d9ee571 67 * @defgroup LinearFifo_Private_Defines Linear FIFO Private Defines
Wolfgang Betz 0:4fb29d9ee571 68 * @{
Wolfgang Betz 0:4fb29d9ee571 69 */
Wolfgang Betz 0:4fb29d9ee571 70
Wolfgang Betz 0:4fb29d9ee571 71 /**
Wolfgang Betz 0:4fb29d9ee571 72 *@}
Wolfgang Betz 0:4fb29d9ee571 73 */
Wolfgang Betz 0:4fb29d9ee571 74
Wolfgang Betz 0:4fb29d9ee571 75
Wolfgang Betz 0:4fb29d9ee571 76 /**
Wolfgang Betz 0:4fb29d9ee571 77 * @defgroup LinearFifo_Private_Macros Linear FIFO Private Macros
Wolfgang Betz 0:4fb29d9ee571 78 * @{
Wolfgang Betz 0:4fb29d9ee571 79 */
Wolfgang Betz 0:4fb29d9ee571 80
Wolfgang Betz 0:4fb29d9ee571 81 /**
Wolfgang Betz 0:4fb29d9ee571 82 *@}
Wolfgang Betz 0:4fb29d9ee571 83 */
Wolfgang Betz 0:4fb29d9ee571 84
Wolfgang Betz 0:4fb29d9ee571 85
Wolfgang Betz 0:4fb29d9ee571 86 /**
Wolfgang Betz 0:4fb29d9ee571 87 * @defgroup LinearFifo_Private_Variables Linear FIFO Private Variables
Wolfgang Betz 0:4fb29d9ee571 88 * @{
Wolfgang Betz 0:4fb29d9ee571 89 */
Wolfgang Betz 0:4fb29d9ee571 90
Wolfgang Betz 0:4fb29d9ee571 91 /**
Wolfgang Betz 0:4fb29d9ee571 92 *@}
Wolfgang Betz 0:4fb29d9ee571 93 */
Wolfgang Betz 0:4fb29d9ee571 94
Wolfgang Betz 0:4fb29d9ee571 95
Wolfgang Betz 0:4fb29d9ee571 96 /**
Wolfgang Betz 0:4fb29d9ee571 97 * @defgroup LinearFifo_Private_FunctionPrototypes Linear FIFO Private Function Prototypes
Wolfgang Betz 0:4fb29d9ee571 98 * @{
Wolfgang Betz 0:4fb29d9ee571 99 */
Wolfgang Betz 0:4fb29d9ee571 100
Wolfgang Betz 0:4fb29d9ee571 101 /**
Wolfgang Betz 0:4fb29d9ee571 102 *@}
Wolfgang Betz 0:4fb29d9ee571 103 */
Wolfgang Betz 0:4fb29d9ee571 104
Wolfgang Betz 0:4fb29d9ee571 105
Wolfgang Betz 0:4fb29d9ee571 106 /**
Wolfgang Betz 0:4fb29d9ee571 107 * @defgroup LinearFifo_Private_Functions Linear FIFO Private Functions
Wolfgang Betz 0:4fb29d9ee571 108 * @{
Wolfgang Betz 0:4fb29d9ee571 109 */
Wolfgang Betz 0:4fb29d9ee571 110
Wolfgang Betz 0:4fb29d9ee571 111 /**
Wolfgang Betz 0:4fb29d9ee571 112 * @brief Returns the number of elements in the Rx FIFO.
Wolfgang Betz 0:4fb29d9ee571 113 * @param None.
Wolfgang Betz 0:4fb29d9ee571 114 * @retval uint8_t Number of elements in the Rx FIFO.
Wolfgang Betz 0:4fb29d9ee571 115 */
Wolfgang Betz 0:4fb29d9ee571 116 uint8_t SpiritLinearFifoReadNumElementsRxFifo(void)
Wolfgang Betz 0:4fb29d9ee571 117 {
Wolfgang Betz 0:4fb29d9ee571 118 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 119
Wolfgang Betz 0:4fb29d9ee571 120 /* Reads the register value */
Wolfgang Betz 0:4fb29d9ee571 121 g_xStatus = SpiritSpiReadRegisters(LINEAR_FIFO_STATUS0_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 122
Wolfgang Betz 0:4fb29d9ee571 123 /* Build and return value */
Wolfgang Betz 0:4fb29d9ee571 124 return (tempRegValue & 0x7F);
Wolfgang Betz 0:4fb29d9ee571 125
Wolfgang Betz 0:4fb29d9ee571 126 }
Wolfgang Betz 0:4fb29d9ee571 127
Wolfgang Betz 0:4fb29d9ee571 128
Wolfgang Betz 0:4fb29d9ee571 129 /**
Wolfgang Betz 0:4fb29d9ee571 130 * @brief Returns the number of elements in the Tx FIFO.
Wolfgang Betz 0:4fb29d9ee571 131 * @param None.
Wolfgang Betz 0:4fb29d9ee571 132 * @retval uint8_t Number of elements in the Tx FIFO.
Wolfgang Betz 0:4fb29d9ee571 133 */
Wolfgang Betz 0:4fb29d9ee571 134 uint8_t SpiritLinearFifoReadNumElementsTxFifo(void)
Wolfgang Betz 0:4fb29d9ee571 135 {
Wolfgang Betz 0:4fb29d9ee571 136 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 137
Wolfgang Betz 0:4fb29d9ee571 138 /* Reads the number of elements in TX FIFO and return the value */
Wolfgang Betz 0:4fb29d9ee571 139 g_xStatus = SpiritSpiReadRegisters(LINEAR_FIFO_STATUS1_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 140
Wolfgang Betz 0:4fb29d9ee571 141 /* Build and return value */
Wolfgang Betz 0:4fb29d9ee571 142 return (tempRegValue & 0x7F);
Wolfgang Betz 0:4fb29d9ee571 143
Wolfgang Betz 0:4fb29d9ee571 144 }
Wolfgang Betz 0:4fb29d9ee571 145
Wolfgang Betz 0:4fb29d9ee571 146
Wolfgang Betz 0:4fb29d9ee571 147 /**
Wolfgang Betz 0:4fb29d9ee571 148 * @brief Sets the almost full threshold for the Rx FIFO. When the number of elements in RX FIFO reaches this value an interrupt can be generated to the MCU.
Wolfgang Betz 0:4fb29d9ee571 149 * @note The almost full threshold is encountered from the top of the FIFO. For example, if it is set to 7 the almost
Wolfgang Betz 0:4fb29d9ee571 150 * full FIFO irq will be raised when the number of elements is equals to 96-7 = 89.
Wolfgang Betz 0:4fb29d9ee571 151 * @param cThrRxFifo almost full threshold.
Wolfgang Betz 0:4fb29d9ee571 152 * This parameter is an uint8_t.
Wolfgang Betz 0:4fb29d9ee571 153 * @retval None.
Wolfgang Betz 0:4fb29d9ee571 154 */
Wolfgang Betz 0:4fb29d9ee571 155 void SpiritLinearFifoSetAlmostFullThresholdRx(uint8_t cThrRxFifo)
Wolfgang Betz 0:4fb29d9ee571 156 {
Wolfgang Betz 0:4fb29d9ee571 157 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 158
Wolfgang Betz 0:4fb29d9ee571 159 /* Check the parameters */
Wolfgang Betz 0:4fb29d9ee571 160 s_assert_param(IS_FIFO_THR(cThrRxFifo));
Wolfgang Betz 0:4fb29d9ee571 161
Wolfgang Betz 0:4fb29d9ee571 162 /* Build the register value */
Wolfgang Betz 0:4fb29d9ee571 163 tempRegValue = cThrRxFifo & 0x7F;
Wolfgang Betz 0:4fb29d9ee571 164
Wolfgang Betz 0:4fb29d9ee571 165 /* Writes the Almost Full threshold for RX in the corresponding register */
Wolfgang Betz 0:4fb29d9ee571 166 g_xStatus = SpiritSpiWriteRegisters(FIFO_CONFIG3_RXAFTHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 167
Wolfgang Betz 0:4fb29d9ee571 168 }
Wolfgang Betz 0:4fb29d9ee571 169
Wolfgang Betz 0:4fb29d9ee571 170
Wolfgang Betz 0:4fb29d9ee571 171 /**
Wolfgang Betz 0:4fb29d9ee571 172 * @brief Returns the almost full threshold for RX FIFO.
Wolfgang Betz 0:4fb29d9ee571 173 * @note The almost full threshold is encountered from the top of the FIFO. For example, if it is 7 the almost
Wolfgang Betz 0:4fb29d9ee571 174 * full FIFO irq will be raised when the number of elements is equals to 96-7 = 89.
Wolfgang Betz 0:4fb29d9ee571 175 * @param None.
Wolfgang Betz 0:4fb29d9ee571 176 * @retval uint8_t Almost full threshold for Rx FIFO.
Wolfgang Betz 0:4fb29d9ee571 177 */
Wolfgang Betz 0:4fb29d9ee571 178 uint8_t SpiritLinearFifoGetAlmostFullThresholdRx(void)
Wolfgang Betz 0:4fb29d9ee571 179 {
Wolfgang Betz 0:4fb29d9ee571 180 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 181
Wolfgang Betz 0:4fb29d9ee571 182 /* Reads the almost full threshold for RX FIFO and return the value */
Wolfgang Betz 0:4fb29d9ee571 183 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG3_RXAFTHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 184
Wolfgang Betz 0:4fb29d9ee571 185 /* Build and return value */
Wolfgang Betz 0:4fb29d9ee571 186 return (tempRegValue & 0x7F);
Wolfgang Betz 0:4fb29d9ee571 187
Wolfgang Betz 0:4fb29d9ee571 188 }
Wolfgang Betz 0:4fb29d9ee571 189
Wolfgang Betz 0:4fb29d9ee571 190
Wolfgang Betz 0:4fb29d9ee571 191 /**
Wolfgang Betz 0:4fb29d9ee571 192 * @brief Sets the almost empty threshold for the Rx FIFO. When the number of elements in RX FIFO reaches this value an interrupt can be generated to the MCU.
Wolfgang Betz 0:4fb29d9ee571 193 * @param cThrRxFifo almost empty threshold.
Wolfgang Betz 0:4fb29d9ee571 194 * This parameter is an uint8_t.
Wolfgang Betz 0:4fb29d9ee571 195 * @retval None.
Wolfgang Betz 0:4fb29d9ee571 196 */
Wolfgang Betz 0:4fb29d9ee571 197 void SpiritLinearFifoSetAlmostEmptyThresholdRx(uint8_t cThrRxFifo)
Wolfgang Betz 0:4fb29d9ee571 198 {
Wolfgang Betz 0:4fb29d9ee571 199 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 200
Wolfgang Betz 0:4fb29d9ee571 201 /* Check the parameters */
Wolfgang Betz 0:4fb29d9ee571 202 s_assert_param(IS_FIFO_THR(cThrRxFifo));
Wolfgang Betz 0:4fb29d9ee571 203
Wolfgang Betz 0:4fb29d9ee571 204 /* Build the register value */
Wolfgang Betz 0:4fb29d9ee571 205 tempRegValue = cThrRxFifo & 0x7F;
Wolfgang Betz 0:4fb29d9ee571 206
Wolfgang Betz 0:4fb29d9ee571 207 /* Writes the Almost Empty threshold for RX in the corresponding register */
Wolfgang Betz 0:4fb29d9ee571 208 g_xStatus = SpiritSpiWriteRegisters(FIFO_CONFIG2_RXAETHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 209
Wolfgang Betz 0:4fb29d9ee571 210 }
Wolfgang Betz 0:4fb29d9ee571 211
Wolfgang Betz 0:4fb29d9ee571 212
Wolfgang Betz 0:4fb29d9ee571 213 /**
Wolfgang Betz 0:4fb29d9ee571 214 * @brief Returns the almost empty threshold for Rx FIFO.
Wolfgang Betz 0:4fb29d9ee571 215 * @param None.
Wolfgang Betz 0:4fb29d9ee571 216 * @retval uint8_t Almost empty threshold for Rx FIFO.
Wolfgang Betz 0:4fb29d9ee571 217 */
Wolfgang Betz 0:4fb29d9ee571 218 uint8_t SpiritLinearFifoGetAlmostEmptyThresholdRx(void)
Wolfgang Betz 0:4fb29d9ee571 219 {
Wolfgang Betz 0:4fb29d9ee571 220 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 221
Wolfgang Betz 0:4fb29d9ee571 222 /* Reads the almost empty threshold for RX FIFO and returns the value */
Wolfgang Betz 0:4fb29d9ee571 223 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG2_RXAETHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 224
Wolfgang Betz 0:4fb29d9ee571 225 /* Build and return value */
Wolfgang Betz 0:4fb29d9ee571 226 return (tempRegValue & 0x7F);
Wolfgang Betz 0:4fb29d9ee571 227
Wolfgang Betz 0:4fb29d9ee571 228 }
Wolfgang Betz 0:4fb29d9ee571 229
Wolfgang Betz 0:4fb29d9ee571 230
Wolfgang Betz 0:4fb29d9ee571 231 /**
Wolfgang Betz 0:4fb29d9ee571 232 * @brief Sets the almost full threshold for the Tx FIFO. When the number of elements in TX FIFO reaches this value an interrupt can be generated to the MCU.
Wolfgang Betz 0:4fb29d9ee571 233 * @note The almost full threshold is encountered from the top of the FIFO. For example, if it is set to 7 the almost
Wolfgang Betz 0:4fb29d9ee571 234 * full FIFO irq will be raised when the number of elements is equals to 96-7 = 89.
Wolfgang Betz 0:4fb29d9ee571 235 * @param cThrTxFifo almost full threshold.
Wolfgang Betz 0:4fb29d9ee571 236 * This parameter is an uint8_t.
Wolfgang Betz 0:4fb29d9ee571 237 * @retval None.
Wolfgang Betz 0:4fb29d9ee571 238 */
Wolfgang Betz 0:4fb29d9ee571 239 void SpiritLinearFifoSetAlmostFullThresholdTx(uint8_t cThrTxFifo)
Wolfgang Betz 0:4fb29d9ee571 240 {
Wolfgang Betz 0:4fb29d9ee571 241 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 242
Wolfgang Betz 0:4fb29d9ee571 243 /* Check the parameters */
Wolfgang Betz 0:4fb29d9ee571 244 s_assert_param(IS_FIFO_THR(cThrTxFifo));
Wolfgang Betz 0:4fb29d9ee571 245
Wolfgang Betz 0:4fb29d9ee571 246 /* Reads the register value */
Wolfgang Betz 0:4fb29d9ee571 247 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG1_TXAFTHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 248
Wolfgang Betz 0:4fb29d9ee571 249 /* Build the register value */
Wolfgang Betz 0:4fb29d9ee571 250 tempRegValue &= 0x80;
Wolfgang Betz 0:4fb29d9ee571 251 tempRegValue |= cThrTxFifo;
Wolfgang Betz 0:4fb29d9ee571 252
Wolfgang Betz 0:4fb29d9ee571 253 /* Writes the Almost Full threshold for Tx in the corresponding register */
Wolfgang Betz 0:4fb29d9ee571 254 g_xStatus = SpiritSpiWriteRegisters(FIFO_CONFIG1_TXAFTHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 255
Wolfgang Betz 0:4fb29d9ee571 256 }
Wolfgang Betz 0:4fb29d9ee571 257
Wolfgang Betz 0:4fb29d9ee571 258
Wolfgang Betz 0:4fb29d9ee571 259 /**
Wolfgang Betz 0:4fb29d9ee571 260 * @brief Returns the almost full threshold for Tx FIFO.
Wolfgang Betz 0:4fb29d9ee571 261 * @note The almost full threshold is encountered from the top of the FIFO. For example, if it is set to 7 the almost
Wolfgang Betz 0:4fb29d9ee571 262 * full FIFO irq will be raised when the number of elements is equals to 96-7 = 89.
Wolfgang Betz 0:4fb29d9ee571 263 * @param None.
Wolfgang Betz 0:4fb29d9ee571 264 * @retval uint8_t Almost full threshold for Tx FIFO.
Wolfgang Betz 0:4fb29d9ee571 265 */
Wolfgang Betz 0:4fb29d9ee571 266 uint8_t SpiritLinearFifoGetAlmostFullThresholdTx(void)
Wolfgang Betz 0:4fb29d9ee571 267 {
Wolfgang Betz 0:4fb29d9ee571 268 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 269
Wolfgang Betz 0:4fb29d9ee571 270 /* Reads the almost full threshold for Tx FIFO and returns the value */
Wolfgang Betz 0:4fb29d9ee571 271 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG1_TXAFTHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 272
Wolfgang Betz 0:4fb29d9ee571 273 /* Build and returns value */
Wolfgang Betz 0:4fb29d9ee571 274 return (tempRegValue & 0x7F);
Wolfgang Betz 0:4fb29d9ee571 275
Wolfgang Betz 0:4fb29d9ee571 276 }
Wolfgang Betz 0:4fb29d9ee571 277
Wolfgang Betz 0:4fb29d9ee571 278
Wolfgang Betz 0:4fb29d9ee571 279 /**
Wolfgang Betz 0:4fb29d9ee571 280 * @brief Sets the almost empty threshold for the Tx FIFO. When the number of elements in Tx FIFO reaches this value an interrupt can can be generated to the MCU.
Wolfgang Betz 0:4fb29d9ee571 281 * @param cThrTxFifo: almost empty threshold.
Wolfgang Betz 0:4fb29d9ee571 282 * This parameter is an uint8_t.
Wolfgang Betz 0:4fb29d9ee571 283 * @retval None.
Wolfgang Betz 0:4fb29d9ee571 284 */
Wolfgang Betz 0:4fb29d9ee571 285 void SpiritLinearFifoSetAlmostEmptyThresholdTx(uint8_t cThrTxFifo)
Wolfgang Betz 0:4fb29d9ee571 286 {
Wolfgang Betz 0:4fb29d9ee571 287 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 288
Wolfgang Betz 0:4fb29d9ee571 289 /* Check the parameters */
Wolfgang Betz 0:4fb29d9ee571 290 s_assert_param(IS_FIFO_THR(cThrTxFifo));
Wolfgang Betz 0:4fb29d9ee571 291
Wolfgang Betz 0:4fb29d9ee571 292 /* Reads the register value */
Wolfgang Betz 0:4fb29d9ee571 293 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG0_TXAETHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 294
Wolfgang Betz 0:4fb29d9ee571 295 /* Build the register value */
Wolfgang Betz 0:4fb29d9ee571 296 tempRegValue &= 0x80;
Wolfgang Betz 0:4fb29d9ee571 297 tempRegValue |= cThrTxFifo;
Wolfgang Betz 0:4fb29d9ee571 298
Wolfgang Betz 0:4fb29d9ee571 299 /* Writes the Almost Empty threshold for Tx in the corresponding register */
Wolfgang Betz 0:4fb29d9ee571 300 g_xStatus = SpiritSpiWriteRegisters(FIFO_CONFIG0_TXAETHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 301
Wolfgang Betz 0:4fb29d9ee571 302 }
Wolfgang Betz 0:4fb29d9ee571 303
Wolfgang Betz 0:4fb29d9ee571 304
Wolfgang Betz 0:4fb29d9ee571 305 /**
Wolfgang Betz 0:4fb29d9ee571 306 * @brief Returns the almost empty threshold for Tx FIFO.
Wolfgang Betz 0:4fb29d9ee571 307 * @param None.
Wolfgang Betz 0:4fb29d9ee571 308 * @retval uint8_t Almost empty threshold for Tx FIFO.
Wolfgang Betz 0:4fb29d9ee571 309 */
Wolfgang Betz 0:4fb29d9ee571 310 uint8_t SpiritLinearFifoGetAlmostEmptyThresholdTx(void)
Wolfgang Betz 0:4fb29d9ee571 311 {
Wolfgang Betz 0:4fb29d9ee571 312 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 313
Wolfgang Betz 0:4fb29d9ee571 314 /* Reads the almost empty threshold for TX FIFO and returns the value */
Wolfgang Betz 0:4fb29d9ee571 315 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG0_TXAETHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 316
Wolfgang Betz 0:4fb29d9ee571 317 /* Build and return value */
Wolfgang Betz 0:4fb29d9ee571 318 return (tempRegValue & 0x7F);
Wolfgang Betz 0:4fb29d9ee571 319
Wolfgang Betz 0:4fb29d9ee571 320 }
Wolfgang Betz 0:4fb29d9ee571 321
Wolfgang Betz 0:4fb29d9ee571 322
Wolfgang Betz 0:4fb29d9ee571 323 /**
Wolfgang Betz 0:4fb29d9ee571 324 *@}
Wolfgang Betz 0:4fb29d9ee571 325 */
Wolfgang Betz 0:4fb29d9ee571 326
Wolfgang Betz 0:4fb29d9ee571 327 /**
Wolfgang Betz 0:4fb29d9ee571 328 *@}
Wolfgang Betz 0:4fb29d9ee571 329 */
Wolfgang Betz 0:4fb29d9ee571 330
Wolfgang Betz 0:4fb29d9ee571 331
Wolfgang Betz 0:4fb29d9ee571 332 /**
Wolfgang Betz 0:4fb29d9ee571 333 *@}
Wolfgang Betz 0:4fb29d9ee571 334 */
Wolfgang Betz 0:4fb29d9ee571 335
Wolfgang Betz 0:4fb29d9ee571 336
Wolfgang Betz 0:4fb29d9ee571 337
Wolfgang Betz 0:4fb29d9ee571 338 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/