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:
Mon Nov 21 13:26:17 2016 +0100
Revision:
33:c226804be492
Parent:
5:c9c5bc673c64
Slightly better send timeout handling

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 * @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 148 * @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 149 * full FIFO irq will be raised when the number of elements is equals to 96-7 = 89.
Wolfgang Betz 0:4fb29d9ee571 150 * @param cThrRxFifo almost full threshold.
Wolfgang Betz 0:4fb29d9ee571 151 * This parameter is an uint8_t.
Wolfgang Betz 0:4fb29d9ee571 152 * @retval None.
Wolfgang Betz 0:4fb29d9ee571 153 */
Wolfgang Betz 0:4fb29d9ee571 154 void SpiritLinearFifoSetAlmostFullThresholdRx(uint8_t cThrRxFifo)
Wolfgang Betz 0:4fb29d9ee571 155 {
Wolfgang Betz 0:4fb29d9ee571 156 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 157
Wolfgang Betz 0:4fb29d9ee571 158 /* Check the parameters */
Wolfgang Betz 0:4fb29d9ee571 159 s_assert_param(IS_FIFO_THR(cThrRxFifo));
Wolfgang Betz 0:4fb29d9ee571 160
Wolfgang Betz 0:4fb29d9ee571 161 /* Build the register value */
Wolfgang Betz 0:4fb29d9ee571 162 tempRegValue = cThrRxFifo & 0x7F;
Wolfgang Betz 0:4fb29d9ee571 163
Wolfgang Betz 0:4fb29d9ee571 164 /* Writes the Almost Full threshold for RX in the corresponding register */
Wolfgang Betz 0:4fb29d9ee571 165 g_xStatus = SpiritSpiWriteRegisters(FIFO_CONFIG3_RXAFTHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 166
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 * @brief Returns the almost full threshold for RX FIFO.
Wolfgang Betz 0:4fb29d9ee571 172 * @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 173 * full FIFO irq will be raised when the number of elements is equals to 96-7 = 89.
Wolfgang Betz 0:4fb29d9ee571 174 * @param None.
Wolfgang Betz 0:4fb29d9ee571 175 * @retval uint8_t Almost full threshold for Rx FIFO.
Wolfgang Betz 0:4fb29d9ee571 176 */
Wolfgang Betz 0:4fb29d9ee571 177 uint8_t SpiritLinearFifoGetAlmostFullThresholdRx(void)
Wolfgang Betz 0:4fb29d9ee571 178 {
Wolfgang Betz 0:4fb29d9ee571 179 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 180
Wolfgang Betz 0:4fb29d9ee571 181 /* Reads the almost full threshold for RX FIFO and return the value */
Wolfgang Betz 0:4fb29d9ee571 182 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG3_RXAFTHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 183
Wolfgang Betz 0:4fb29d9ee571 184 /* Build and return value */
Wolfgang Betz 0:4fb29d9ee571 185 return (tempRegValue & 0x7F);
Wolfgang Betz 0:4fb29d9ee571 186
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 * @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 192 * @param cThrRxFifo almost empty threshold.
Wolfgang Betz 0:4fb29d9ee571 193 * This parameter is an uint8_t.
Wolfgang Betz 0:4fb29d9ee571 194 * @retval None.
Wolfgang Betz 0:4fb29d9ee571 195 */
Wolfgang Betz 0:4fb29d9ee571 196 void SpiritLinearFifoSetAlmostEmptyThresholdRx(uint8_t cThrRxFifo)
Wolfgang Betz 0:4fb29d9ee571 197 {
Wolfgang Betz 0:4fb29d9ee571 198 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 199
Wolfgang Betz 0:4fb29d9ee571 200 /* Check the parameters */
Wolfgang Betz 0:4fb29d9ee571 201 s_assert_param(IS_FIFO_THR(cThrRxFifo));
Wolfgang Betz 0:4fb29d9ee571 202
Wolfgang Betz 0:4fb29d9ee571 203 /* Build the register value */
Wolfgang Betz 0:4fb29d9ee571 204 tempRegValue = cThrRxFifo & 0x7F;
Wolfgang Betz 0:4fb29d9ee571 205
Wolfgang Betz 0:4fb29d9ee571 206 /* Writes the Almost Empty threshold for RX in the corresponding register */
Wolfgang Betz 0:4fb29d9ee571 207 g_xStatus = SpiritSpiWriteRegisters(FIFO_CONFIG2_RXAETHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 208
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 * @brief Returns the almost empty threshold for Rx FIFO.
Wolfgang Betz 0:4fb29d9ee571 214 * @param None.
Wolfgang Betz 0:4fb29d9ee571 215 * @retval uint8_t Almost empty threshold for Rx FIFO.
Wolfgang Betz 0:4fb29d9ee571 216 */
Wolfgang Betz 0:4fb29d9ee571 217 uint8_t SpiritLinearFifoGetAlmostEmptyThresholdRx(void)
Wolfgang Betz 0:4fb29d9ee571 218 {
Wolfgang Betz 0:4fb29d9ee571 219 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 220
Wolfgang Betz 0:4fb29d9ee571 221 /* Reads the almost empty threshold for RX FIFO and returns the value */
Wolfgang Betz 0:4fb29d9ee571 222 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG2_RXAETHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 223
Wolfgang Betz 0:4fb29d9ee571 224 /* Build and return value */
Wolfgang Betz 0:4fb29d9ee571 225 return (tempRegValue & 0x7F);
Wolfgang Betz 0:4fb29d9ee571 226
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 * @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 232 * @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 233 * full FIFO irq will be raised when the number of elements is equals to 96-7 = 89.
Wolfgang Betz 0:4fb29d9ee571 234 * @param cThrTxFifo almost full threshold.
Wolfgang Betz 0:4fb29d9ee571 235 * This parameter is an uint8_t.
Wolfgang Betz 0:4fb29d9ee571 236 * @retval None.
Wolfgang Betz 0:4fb29d9ee571 237 */
Wolfgang Betz 0:4fb29d9ee571 238 void SpiritLinearFifoSetAlmostFullThresholdTx(uint8_t cThrTxFifo)
Wolfgang Betz 0:4fb29d9ee571 239 {
Wolfgang Betz 0:4fb29d9ee571 240 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 241
Wolfgang Betz 0:4fb29d9ee571 242 /* Check the parameters */
Wolfgang Betz 0:4fb29d9ee571 243 s_assert_param(IS_FIFO_THR(cThrTxFifo));
Wolfgang Betz 0:4fb29d9ee571 244
Wolfgang Betz 0:4fb29d9ee571 245 /* Reads the register value */
Wolfgang Betz 0:4fb29d9ee571 246 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG1_TXAFTHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 247
Wolfgang Betz 0:4fb29d9ee571 248 /* Build the register value */
Wolfgang Betz 0:4fb29d9ee571 249 tempRegValue &= 0x80;
Wolfgang Betz 0:4fb29d9ee571 250 tempRegValue |= cThrTxFifo;
Wolfgang Betz 0:4fb29d9ee571 251
Wolfgang Betz 0:4fb29d9ee571 252 /* Writes the Almost Full threshold for Tx in the corresponding register */
Wolfgang Betz 0:4fb29d9ee571 253 g_xStatus = SpiritSpiWriteRegisters(FIFO_CONFIG1_TXAFTHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 254
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 * @brief Returns the almost full threshold for Tx FIFO.
Wolfgang Betz 0:4fb29d9ee571 260 * @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 261 * full FIFO irq will be raised when the number of elements is equals to 96-7 = 89.
Wolfgang Betz 0:4fb29d9ee571 262 * @param None.
Wolfgang Betz 0:4fb29d9ee571 263 * @retval uint8_t Almost full threshold for Tx FIFO.
Wolfgang Betz 0:4fb29d9ee571 264 */
Wolfgang Betz 0:4fb29d9ee571 265 uint8_t SpiritLinearFifoGetAlmostFullThresholdTx(void)
Wolfgang Betz 0:4fb29d9ee571 266 {
Wolfgang Betz 0:4fb29d9ee571 267 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 268
Wolfgang Betz 0:4fb29d9ee571 269 /* Reads the almost full threshold for Tx FIFO and returns the value */
Wolfgang Betz 0:4fb29d9ee571 270 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG1_TXAFTHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 271
Wolfgang Betz 0:4fb29d9ee571 272 /* Build and returns value */
Wolfgang Betz 0:4fb29d9ee571 273 return (tempRegValue & 0x7F);
Wolfgang Betz 0:4fb29d9ee571 274
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 * @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 280 * @param cThrTxFifo: almost empty threshold.
Wolfgang Betz 0:4fb29d9ee571 281 * This parameter is an uint8_t.
Wolfgang Betz 0:4fb29d9ee571 282 * @retval None.
Wolfgang Betz 0:4fb29d9ee571 283 */
Wolfgang Betz 0:4fb29d9ee571 284 void SpiritLinearFifoSetAlmostEmptyThresholdTx(uint8_t cThrTxFifo)
Wolfgang Betz 0:4fb29d9ee571 285 {
Wolfgang Betz 0:4fb29d9ee571 286 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 287
Wolfgang Betz 0:4fb29d9ee571 288 /* Check the parameters */
Wolfgang Betz 0:4fb29d9ee571 289 s_assert_param(IS_FIFO_THR(cThrTxFifo));
Wolfgang Betz 0:4fb29d9ee571 290
Wolfgang Betz 0:4fb29d9ee571 291 /* Reads the register value */
Wolfgang Betz 0:4fb29d9ee571 292 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG0_TXAETHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 293
Wolfgang Betz 0:4fb29d9ee571 294 /* Build the register value */
Wolfgang Betz 0:4fb29d9ee571 295 tempRegValue &= 0x80;
Wolfgang Betz 0:4fb29d9ee571 296 tempRegValue |= cThrTxFifo;
Wolfgang Betz 0:4fb29d9ee571 297
Wolfgang Betz 0:4fb29d9ee571 298 /* Writes the Almost Empty threshold for Tx in the corresponding register */
Wolfgang Betz 0:4fb29d9ee571 299 g_xStatus = SpiritSpiWriteRegisters(FIFO_CONFIG0_TXAETHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 300
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 * @brief Returns the almost empty threshold for Tx FIFO.
Wolfgang Betz 0:4fb29d9ee571 306 * @param None.
Wolfgang Betz 0:4fb29d9ee571 307 * @retval uint8_t Almost empty threshold for Tx FIFO.
Wolfgang Betz 0:4fb29d9ee571 308 */
Wolfgang Betz 0:4fb29d9ee571 309 uint8_t SpiritLinearFifoGetAlmostEmptyThresholdTx(void)
Wolfgang Betz 0:4fb29d9ee571 310 {
Wolfgang Betz 0:4fb29d9ee571 311 uint8_t tempRegValue;
Wolfgang Betz 0:4fb29d9ee571 312
Wolfgang Betz 0:4fb29d9ee571 313 /* Reads the almost empty threshold for TX FIFO and returns the value */
Wolfgang Betz 0:4fb29d9ee571 314 g_xStatus = SpiritSpiReadRegisters(FIFO_CONFIG0_TXAETHR_BASE, 1, &tempRegValue);
Wolfgang Betz 0:4fb29d9ee571 315
Wolfgang Betz 0:4fb29d9ee571 316 /* Build and return value */
Wolfgang Betz 0:4fb29d9ee571 317 return (tempRegValue & 0x7F);
Wolfgang Betz 0:4fb29d9ee571 318
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 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/