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