wifi test

Dependencies:   X_NUCLEO_IKS01A2 mbed-http

Committer:
JMF
Date:
Wed Sep 05 14:28:24 2018 +0000
Revision:
0:24d3eb812fd4
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 0:24d3eb812fd4 1 /**
JMF 0:24d3eb812fd4 2 ******************************************************************************
JMF 0:24d3eb812fd4 3 * @file SPIRIT_Gpio.c
JMF 0:24d3eb812fd4 4 * @author VMA division - AMS
JMF 0:24d3eb812fd4 5 * @version 3.2.2
JMF 0:24d3eb812fd4 6 * @date 08-July-2015
JMF 0:24d3eb812fd4 7 * @brief This file provides all the low level API to manage SPIRIT GPIO.
JMF 0:24d3eb812fd4 8 * @details
JMF 0:24d3eb812fd4 9 *
JMF 0:24d3eb812fd4 10 * @attention
JMF 0:24d3eb812fd4 11 *
JMF 0:24d3eb812fd4 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
JMF 0:24d3eb812fd4 13 *
JMF 0:24d3eb812fd4 14 * Redistribution and use in source and binary forms, with or without modification,
JMF 0:24d3eb812fd4 15 * are permitted provided that the following conditions are met:
JMF 0:24d3eb812fd4 16 * 1. Redistributions of source code must retain the above copyright notice,
JMF 0:24d3eb812fd4 17 * this list of conditions and the following disclaimer.
JMF 0:24d3eb812fd4 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
JMF 0:24d3eb812fd4 19 * this list of conditions and the following disclaimer in the documentation
JMF 0:24d3eb812fd4 20 * and/or other materials provided with the distribution.
JMF 0:24d3eb812fd4 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
JMF 0:24d3eb812fd4 22 * may be used to endorse or promote products derived from this software
JMF 0:24d3eb812fd4 23 * without specific prior written permission.
JMF 0:24d3eb812fd4 24 *
JMF 0:24d3eb812fd4 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
JMF 0:24d3eb812fd4 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
JMF 0:24d3eb812fd4 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
JMF 0:24d3eb812fd4 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
JMF 0:24d3eb812fd4 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
JMF 0:24d3eb812fd4 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
JMF 0:24d3eb812fd4 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
JMF 0:24d3eb812fd4 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
JMF 0:24d3eb812fd4 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
JMF 0:24d3eb812fd4 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
JMF 0:24d3eb812fd4 35 *
JMF 0:24d3eb812fd4 36 ******************************************************************************
JMF 0:24d3eb812fd4 37 */
JMF 0:24d3eb812fd4 38
JMF 0:24d3eb812fd4 39 /* Includes ------------------------------------------------------------------*/
JMF 0:24d3eb812fd4 40 #include "SPIRIT_Gpio.h"
JMF 0:24d3eb812fd4 41 #include "MCU_Interface.h"
JMF 0:24d3eb812fd4 42
JMF 0:24d3eb812fd4 43
JMF 0:24d3eb812fd4 44 /** @addtogroup SPIRIT_Libraries
JMF 0:24d3eb812fd4 45 * @{
JMF 0:24d3eb812fd4 46 */
JMF 0:24d3eb812fd4 47
JMF 0:24d3eb812fd4 48
JMF 0:24d3eb812fd4 49 /** @addtogroup SPIRIT_Gpio
JMF 0:24d3eb812fd4 50 * @{
JMF 0:24d3eb812fd4 51 */
JMF 0:24d3eb812fd4 52
JMF 0:24d3eb812fd4 53
JMF 0:24d3eb812fd4 54 /** @defgroup Gpio_Private_TypesDefinitions GPIO Private Types Definitions
JMF 0:24d3eb812fd4 55 * @{
JMF 0:24d3eb812fd4 56 */
JMF 0:24d3eb812fd4 57
JMF 0:24d3eb812fd4 58
JMF 0:24d3eb812fd4 59 /**
JMF 0:24d3eb812fd4 60 * @}
JMF 0:24d3eb812fd4 61 */
JMF 0:24d3eb812fd4 62
JMF 0:24d3eb812fd4 63
JMF 0:24d3eb812fd4 64 /** @defgroup Gpio_Private_Defines GPIO Private Defines
JMF 0:24d3eb812fd4 65 * @{
JMF 0:24d3eb812fd4 66 */
JMF 0:24d3eb812fd4 67
JMF 0:24d3eb812fd4 68
JMF 0:24d3eb812fd4 69 /**
JMF 0:24d3eb812fd4 70 * @}
JMF 0:24d3eb812fd4 71 */
JMF 0:24d3eb812fd4 72
JMF 0:24d3eb812fd4 73
JMF 0:24d3eb812fd4 74
JMF 0:24d3eb812fd4 75 /** @defgroup Gpio_Private_Macros GPIO Private Macros
JMF 0:24d3eb812fd4 76 * @{
JMF 0:24d3eb812fd4 77 */
JMF 0:24d3eb812fd4 78
JMF 0:24d3eb812fd4 79
JMF 0:24d3eb812fd4 80 /**
JMF 0:24d3eb812fd4 81 * @}
JMF 0:24d3eb812fd4 82 */
JMF 0:24d3eb812fd4 83
JMF 0:24d3eb812fd4 84
JMF 0:24d3eb812fd4 85
JMF 0:24d3eb812fd4 86 /** @defgroup Gpio_Private_Variables GPIO Private Variables
JMF 0:24d3eb812fd4 87 * @{
JMF 0:24d3eb812fd4 88 */
JMF 0:24d3eb812fd4 89
JMF 0:24d3eb812fd4 90
JMF 0:24d3eb812fd4 91 /**
JMF 0:24d3eb812fd4 92 * @}
JMF 0:24d3eb812fd4 93 */
JMF 0:24d3eb812fd4 94
JMF 0:24d3eb812fd4 95
JMF 0:24d3eb812fd4 96
JMF 0:24d3eb812fd4 97 /** @defgroup Gpio_Private_FunctionPrototypes GPIO Private Function Prototypes
JMF 0:24d3eb812fd4 98 * @{
JMF 0:24d3eb812fd4 99 */
JMF 0:24d3eb812fd4 100
JMF 0:24d3eb812fd4 101
JMF 0:24d3eb812fd4 102 /**
JMF 0:24d3eb812fd4 103 * @}
JMF 0:24d3eb812fd4 104 */
JMF 0:24d3eb812fd4 105
JMF 0:24d3eb812fd4 106
JMF 0:24d3eb812fd4 107
JMF 0:24d3eb812fd4 108 /** @defgroup Gpio_Private_Functions GPIO Private Functions
JMF 0:24d3eb812fd4 109 * @{
JMF 0:24d3eb812fd4 110 */
JMF 0:24d3eb812fd4 111
JMF 0:24d3eb812fd4 112 /**
JMF 0:24d3eb812fd4 113 * @brief Initializes the SPIRIT GPIOx according to the specified
JMF 0:24d3eb812fd4 114 * parameters in the pxGpioInitStruct.
JMF 0:24d3eb812fd4 115 * @param pxGpioInitStruct pointer to a SGpioInit structure that
JMF 0:24d3eb812fd4 116 * contains the configuration information for the specified SPIRIT GPIO.
JMF 0:24d3eb812fd4 117 * @retval None.
JMF 0:24d3eb812fd4 118 */
JMF 0:24d3eb812fd4 119 void SpiritGpioInit(SGpioInit* pxGpioInitStruct)
JMF 0:24d3eb812fd4 120 {
JMF 0:24d3eb812fd4 121 uint8_t tempRegValue = 0x00;
JMF 0:24d3eb812fd4 122
JMF 0:24d3eb812fd4 123 /* Check the parameters */
JMF 0:24d3eb812fd4 124 s_assert_param(IS_SPIRIT_GPIO(pxGpioInitStruct->xSpiritGpioPin));
JMF 0:24d3eb812fd4 125 s_assert_param(IS_SPIRIT_GPIO_MODE(pxGpioInitStruct->xSpiritGpioMode));
JMF 0:24d3eb812fd4 126 s_assert_param(IS_SPIRIT_GPIO_IO(pxGpioInitStruct->xSpiritGpioIO));
JMF 0:24d3eb812fd4 127
JMF 0:24d3eb812fd4 128 tempRegValue = ((uint8_t)(pxGpioInitStruct->xSpiritGpioMode) | (uint8_t)(pxGpioInitStruct->xSpiritGpioIO));
JMF 0:24d3eb812fd4 129
JMF 0:24d3eb812fd4 130 g_xStatus = SpiritSpiWriteRegisters(pxGpioInitStruct->xSpiritGpioPin, 1, &tempRegValue);
JMF 0:24d3eb812fd4 131
JMF 0:24d3eb812fd4 132 }
JMF 0:24d3eb812fd4 133
JMF 0:24d3eb812fd4 134
JMF 0:24d3eb812fd4 135 /**
JMF 0:24d3eb812fd4 136 * @brief Enables or Disables the output of temperature sensor on SPIRIT GPIO_0.
JMF 0:24d3eb812fd4 137 * @param xNewState new state for temperature sensor.
JMF 0:24d3eb812fd4 138 * This parameter can be: S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 139 * @retval None.
JMF 0:24d3eb812fd4 140 */
JMF 0:24d3eb812fd4 141 void SpiritGpioTemperatureSensor(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 142 {
JMF 0:24d3eb812fd4 143 uint8_t tempRegValue = 0x00;
JMF 0:24d3eb812fd4 144 uint8_t gpio0tempRegValue = 0x00;
JMF 0:24d3eb812fd4 145
JMF 0:24d3eb812fd4 146 /* Check the parameters */
JMF 0:24d3eb812fd4 147 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 148
JMF 0:24d3eb812fd4 149 /* Reads the ANA_FUNC_CONF0 register and mask the result to enable or disable the
JMF 0:24d3eb812fd4 150 temperature sensor */
JMF 0:24d3eb812fd4 151 g_xStatus = SpiritSpiReadRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 152 if(xNewState == S_ENABLE)
JMF 0:24d3eb812fd4 153 {
JMF 0:24d3eb812fd4 154 tempRegValue |= TEMPERATURE_SENSOR_MASK;
JMF 0:24d3eb812fd4 155 }
JMF 0:24d3eb812fd4 156 else
JMF 0:24d3eb812fd4 157 {
JMF 0:24d3eb812fd4 158 tempRegValue &= (~TEMPERATURE_SENSOR_MASK);
JMF 0:24d3eb812fd4 159 gpio0tempRegValue = 0x0A; /* Default value */
JMF 0:24d3eb812fd4 160 }
JMF 0:24d3eb812fd4 161 g_xStatus = SpiritSpiWriteRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 162
JMF 0:24d3eb812fd4 163 /* Sets the SPIRIT GPIO_0 according to input request */
JMF 0:24d3eb812fd4 164 g_xStatus = SpiritSpiWriteRegisters(GPIO0_CONF_BASE, 1, &gpio0tempRegValue);
JMF 0:24d3eb812fd4 165
JMF 0:24d3eb812fd4 166 }
JMF 0:24d3eb812fd4 167
JMF 0:24d3eb812fd4 168
JMF 0:24d3eb812fd4 169 /**
JMF 0:24d3eb812fd4 170 * @brief Forces SPIRIT GPIO_x configured as digital output, to VDD or GND.
JMF 0:24d3eb812fd4 171 * @param xGpioX Specifies the GPIO to be configured.
JMF 0:24d3eb812fd4 172 * This parameter can be one of following parameters:
JMF 0:24d3eb812fd4 173 * @arg SPIRIT_GPIO_0: SPIRIT GPIO_0
JMF 0:24d3eb812fd4 174 * @arg SPIRIT_GPIO_1: SPIRIT GPIO_1
JMF 0:24d3eb812fd4 175 * @arg SPIRIT_GPIO_2: SPIRIT GPIO_2
JMF 0:24d3eb812fd4 176 * @arg SPIRIT_GPIO_3: SPIRIT GPIO_3
JMF 0:24d3eb812fd4 177 * @param xLevel Specifies the level.
JMF 0:24d3eb812fd4 178 * This parameter can be: HIGH or LOW.
JMF 0:24d3eb812fd4 179 * @retval None.
JMF 0:24d3eb812fd4 180 */
JMF 0:24d3eb812fd4 181 void SpiritGpioSetLevel(SpiritGpioPin xGpioX, OutputLevel xLevel)
JMF 0:24d3eb812fd4 182 {
JMF 0:24d3eb812fd4 183 uint8_t tempRegValue = 0x00;
JMF 0:24d3eb812fd4 184
JMF 0:24d3eb812fd4 185 /* Check the parameters */
JMF 0:24d3eb812fd4 186 s_assert_param(IS_SPIRIT_GPIO(xGpioX));
JMF 0:24d3eb812fd4 187 s_assert_param(IS_SPIRIT_GPIO_LEVEL(xLevel));
JMF 0:24d3eb812fd4 188
JMF 0:24d3eb812fd4 189 /* Reads the SPIRIT_GPIOx register and mask the GPIO_SELECT field */
JMF 0:24d3eb812fd4 190 g_xStatus = SpiritSpiReadRegisters(xGpioX, 1, &tempRegValue);
JMF 0:24d3eb812fd4 191 tempRegValue &= 0x04;
JMF 0:24d3eb812fd4 192
JMF 0:24d3eb812fd4 193 /* Sets the value of the SPIRIT GPIO register according to the specified level */
JMF 0:24d3eb812fd4 194 if(xLevel == HIGH)
JMF 0:24d3eb812fd4 195 {
JMF 0:24d3eb812fd4 196 tempRegValue |= (uint8_t)SPIRIT_GPIO_DIG_OUT_VDD | (uint8_t)SPIRIT_GPIO_MODE_DIGITAL_OUTPUT_HP;
JMF 0:24d3eb812fd4 197 }
JMF 0:24d3eb812fd4 198 else
JMF 0:24d3eb812fd4 199 {
JMF 0:24d3eb812fd4 200 tempRegValue |= (uint8_t)SPIRIT_GPIO_DIG_OUT_GND | (uint8_t)SPIRIT_GPIO_MODE_DIGITAL_OUTPUT_HP;
JMF 0:24d3eb812fd4 201 }
JMF 0:24d3eb812fd4 202
JMF 0:24d3eb812fd4 203 /* Writes the SPIRIT GPIO register */
JMF 0:24d3eb812fd4 204 g_xStatus = SpiritSpiWriteRegisters(xGpioX, 1, &tempRegValue);
JMF 0:24d3eb812fd4 205
JMF 0:24d3eb812fd4 206 }
JMF 0:24d3eb812fd4 207
JMF 0:24d3eb812fd4 208
JMF 0:24d3eb812fd4 209 /**
JMF 0:24d3eb812fd4 210 * @brief Returns output value (VDD or GND) of SPIRIT GPIO_x, when it is configured as digital output.
JMF 0:24d3eb812fd4 211 * @param xGpioX Specifies the GPIO to be read.
JMF 0:24d3eb812fd4 212 * This parameter can be one of following parameters:
JMF 0:24d3eb812fd4 213 * @arg SPIRIT_GPIO_0: SPIRIT GPIO_0
JMF 0:24d3eb812fd4 214 * @arg SPIRIT_GPIO_1: SPIRIT GPIO_1
JMF 0:24d3eb812fd4 215 * @arg SPIRIT_GPIO_2: SPIRIT GPIO_2
JMF 0:24d3eb812fd4 216 * @arg SPIRIT_GPIO_3: SPIRIT GPIO_3
JMF 0:24d3eb812fd4 217 * @retval OutputLevel Logical level of selected GPIO configured as digital output.
JMF 0:24d3eb812fd4 218 * This parameter can be: HIGH or LOW.
JMF 0:24d3eb812fd4 219 */
JMF 0:24d3eb812fd4 220 OutputLevel SpiritGpioGetLevel(SpiritGpioPin xGpioX)
JMF 0:24d3eb812fd4 221 {
JMF 0:24d3eb812fd4 222 uint8_t tempRegValue = 0x00;
JMF 0:24d3eb812fd4 223 OutputLevel level;
JMF 0:24d3eb812fd4 224
JMF 0:24d3eb812fd4 225 /* Check the parameters */
JMF 0:24d3eb812fd4 226 s_assert_param(IS_SPIRIT_GPIO(xGpioX));
JMF 0:24d3eb812fd4 227
JMF 0:24d3eb812fd4 228 /* Reads the SPIRIT_GPIOx register */
JMF 0:24d3eb812fd4 229 g_xStatus = SpiritSpiReadRegisters(xGpioX, 1, &tempRegValue);
JMF 0:24d3eb812fd4 230
JMF 0:24d3eb812fd4 231 /* Mask the GPIO_SELECT field and returns the value according */
JMF 0:24d3eb812fd4 232 tempRegValue &= 0xF8;
JMF 0:24d3eb812fd4 233 if(tempRegValue == SPIRIT_GPIO_DIG_OUT_VDD)
JMF 0:24d3eb812fd4 234 {
JMF 0:24d3eb812fd4 235 level = HIGH;
JMF 0:24d3eb812fd4 236 }
JMF 0:24d3eb812fd4 237 else
JMF 0:24d3eb812fd4 238 {
JMF 0:24d3eb812fd4 239 level = LOW;
JMF 0:24d3eb812fd4 240 }
JMF 0:24d3eb812fd4 241
JMF 0:24d3eb812fd4 242 return level;
JMF 0:24d3eb812fd4 243
JMF 0:24d3eb812fd4 244 }
JMF 0:24d3eb812fd4 245
JMF 0:24d3eb812fd4 246
JMF 0:24d3eb812fd4 247 /**
JMF 0:24d3eb812fd4 248 * @brief Enables or Disables the MCU clock output.
JMF 0:24d3eb812fd4 249 * @param xNewState new state for the MCU clock output.
JMF 0:24d3eb812fd4 250 * This parameter can be: S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 251 * @retval None.
JMF 0:24d3eb812fd4 252 */
JMF 0:24d3eb812fd4 253 void SpiritGpioClockOutput(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 254 {
JMF 0:24d3eb812fd4 255 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 256
JMF 0:24d3eb812fd4 257 /* Check the parameters */
JMF 0:24d3eb812fd4 258 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 259
JMF 0:24d3eb812fd4 260 /* Reads the MCU_CK_CONF register and mask the result to enable or disable the clock output */
JMF 0:24d3eb812fd4 261 g_xStatus = SpiritSpiReadRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 262
JMF 0:24d3eb812fd4 263 if(xNewState)
JMF 0:24d3eb812fd4 264 {
JMF 0:24d3eb812fd4 265 tempRegValue |= MCU_CK_ENABLE;
JMF 0:24d3eb812fd4 266 }
JMF 0:24d3eb812fd4 267 else
JMF 0:24d3eb812fd4 268 {
JMF 0:24d3eb812fd4 269 tempRegValue &= (~MCU_CK_ENABLE);
JMF 0:24d3eb812fd4 270 }
JMF 0:24d3eb812fd4 271
JMF 0:24d3eb812fd4 272 /* Writes the MCU_CK_CONF register */
JMF 0:24d3eb812fd4 273 g_xStatus = SpiritSpiWriteRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 274
JMF 0:24d3eb812fd4 275 }
JMF 0:24d3eb812fd4 276
JMF 0:24d3eb812fd4 277
JMF 0:24d3eb812fd4 278 /**
JMF 0:24d3eb812fd4 279 * @brief Initializes the SPIRIT Clock Output according to the specified
JMF 0:24d3eb812fd4 280 * parameters in the xClockOutputInitStruct.
JMF 0:24d3eb812fd4 281 * @param pxClockOutputInitStruct pointer to a ClockOutputInit structure that
JMF 0:24d3eb812fd4 282 * contains the configuration information for the SPIRIT Clock Output.
JMF 0:24d3eb812fd4 283 * @retval None.
JMF 0:24d3eb812fd4 284 * @note The function SpiritGpioClockOutput() must be called in order to enable
JMF 0:24d3eb812fd4 285 * or disable the MCU clock dividers.
JMF 0:24d3eb812fd4 286 */
JMF 0:24d3eb812fd4 287 void SpiritGpioClockOutputInit(ClockOutputInit* pxClockOutputInitStruct)
JMF 0:24d3eb812fd4 288 {
JMF 0:24d3eb812fd4 289 uint8_t tempRegValue = 0x00;
JMF 0:24d3eb812fd4 290
JMF 0:24d3eb812fd4 291 /* Check the parameters */
JMF 0:24d3eb812fd4 292 s_assert_param(IS_SPIRIT_CLOCK_OUTPUT_XO(pxClockOutputInitStruct->xClockOutputXOPrescaler));
JMF 0:24d3eb812fd4 293 s_assert_param(IS_SPIRIT_CLOCK_OUTPUT_RCO(pxClockOutputInitStruct->xClockOutputRCOPrescaler));
JMF 0:24d3eb812fd4 294 s_assert_param(IS_SPIRIT_CLOCK_OUTPUT_EXTRA_CYCLES(pxClockOutputInitStruct->xExtraClockCycles));
JMF 0:24d3eb812fd4 295
JMF 0:24d3eb812fd4 296 /* Calculates the register value to write according to the specified configuration */
JMF 0:24d3eb812fd4 297 tempRegValue = ((uint8_t)(pxClockOutputInitStruct->xClockOutputXOPrescaler) | (uint8_t)(pxClockOutputInitStruct->xClockOutputRCOPrescaler) | \
JMF 0:24d3eb812fd4 298 (uint8_t)(pxClockOutputInitStruct->xExtraClockCycles));
JMF 0:24d3eb812fd4 299
JMF 0:24d3eb812fd4 300 /* Writes the MCU_CLOCK register */
JMF 0:24d3eb812fd4 301 g_xStatus = SpiritSpiWriteRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 302
JMF 0:24d3eb812fd4 303 }
JMF 0:24d3eb812fd4 304
JMF 0:24d3eb812fd4 305
JMF 0:24d3eb812fd4 306 /**
JMF 0:24d3eb812fd4 307 * @brief Sets the XO ratio as clock output.
JMF 0:24d3eb812fd4 308 * @param xXOPrescaler the XO prescaler to be used as clock output.
JMF 0:24d3eb812fd4 309 * This parameter can be any value of @ref ClockOutputXOPrescaler .
JMF 0:24d3eb812fd4 310 * @retval None
JMF 0:24d3eb812fd4 311 */
JMF 0:24d3eb812fd4 312 void SpiritGpioSetXOPrescaler(ClockOutputXOPrescaler xXOPrescaler)
JMF 0:24d3eb812fd4 313 {
JMF 0:24d3eb812fd4 314 uint8_t tempRegValue = 0x00;
JMF 0:24d3eb812fd4 315
JMF 0:24d3eb812fd4 316 /* Check the parameters */
JMF 0:24d3eb812fd4 317 s_assert_param(IS_SPIRIT_CLOCK_OUTPUT_XO(xXOPrescaler));
JMF 0:24d3eb812fd4 318
JMF 0:24d3eb812fd4 319 /* Reads the MCU_CLK_CONFIG register */
JMF 0:24d3eb812fd4 320 g_xStatus = SpiritSpiReadRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 321
JMF 0:24d3eb812fd4 322 /* Mask the XO_RATIO field and writes the new value */
JMF 0:24d3eb812fd4 323 tempRegValue &= 0x61;
JMF 0:24d3eb812fd4 324 tempRegValue |= ((uint8_t)xXOPrescaler);
JMF 0:24d3eb812fd4 325
JMF 0:24d3eb812fd4 326 /* Writes the new XO prescaler in the MCU_CLOCK register */
JMF 0:24d3eb812fd4 327 g_xStatus = SpiritSpiWriteRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 328
JMF 0:24d3eb812fd4 329 }
JMF 0:24d3eb812fd4 330
JMF 0:24d3eb812fd4 331
JMF 0:24d3eb812fd4 332 /**
JMF 0:24d3eb812fd4 333 * @brief Returns the settled XO prescaler as clock output.
JMF 0:24d3eb812fd4 334 * @param None.
JMF 0:24d3eb812fd4 335 * @retval ClockOutputXOPrescaler Settled XO prescaler used for clock
JMF 0:24d3eb812fd4 336 * output. This parameter can be a value of @ref ClockOutputXOPrescaler .
JMF 0:24d3eb812fd4 337 */
JMF 0:24d3eb812fd4 338 ClockOutputXOPrescaler SpiritGpioGetXOPrescaler(void)
JMF 0:24d3eb812fd4 339 {
JMF 0:24d3eb812fd4 340 uint8_t tempRegValue = 0x00;
JMF 0:24d3eb812fd4 341
JMF 0:24d3eb812fd4 342 /* Reads the MCU_CLK_CONFIG register */
JMF 0:24d3eb812fd4 343 g_xStatus = SpiritSpiReadRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 344
JMF 0:24d3eb812fd4 345 /* Mask the XO_RATIO field and return the value */
JMF 0:24d3eb812fd4 346 return ((ClockOutputXOPrescaler)(tempRegValue & 0x1E));
JMF 0:24d3eb812fd4 347
JMF 0:24d3eb812fd4 348 }
JMF 0:24d3eb812fd4 349
JMF 0:24d3eb812fd4 350
JMF 0:24d3eb812fd4 351 /**
JMF 0:24d3eb812fd4 352 * @brief Sets the RCO ratio as clock output
JMF 0:24d3eb812fd4 353 * @param xRCOPrescaler the RCO prescaler to be used as clock output.
JMF 0:24d3eb812fd4 354 * This parameter can be any value of @ref ClockOutputRCOPrescaler .
JMF 0:24d3eb812fd4 355 * @retval None.
JMF 0:24d3eb812fd4 356 */
JMF 0:24d3eb812fd4 357 void SpiritGpioSetRCOPrescaler(ClockOutputRCOPrescaler xRCOPrescaler)
JMF 0:24d3eb812fd4 358 {
JMF 0:24d3eb812fd4 359 uint8_t tempRegValue = 0x00;
JMF 0:24d3eb812fd4 360
JMF 0:24d3eb812fd4 361 /* Check the parameters */
JMF 0:24d3eb812fd4 362 s_assert_param(IS_SPIRIT_CLOCK_OUTPUT_RCO(xRCOPrescaler));
JMF 0:24d3eb812fd4 363
JMF 0:24d3eb812fd4 364 /* Reads the MCU_CLK_CONFIG register */
JMF 0:24d3eb812fd4 365 g_xStatus = SpiritSpiReadRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 366
JMF 0:24d3eb812fd4 367 /* Mask the RCO_RATIO field and writes the new value */
JMF 0:24d3eb812fd4 368 tempRegValue &= 0xFE;
JMF 0:24d3eb812fd4 369 tempRegValue |= ((uint8_t)xRCOPrescaler);
JMF 0:24d3eb812fd4 370
JMF 0:24d3eb812fd4 371 /* Writes the new RCO prescaler in the MCU_CLOCK register */
JMF 0:24d3eb812fd4 372 g_xStatus = SpiritSpiWriteRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 373
JMF 0:24d3eb812fd4 374 }
JMF 0:24d3eb812fd4 375
JMF 0:24d3eb812fd4 376
JMF 0:24d3eb812fd4 377 /**
JMF 0:24d3eb812fd4 378 * @brief Returns the settled RCO prescaler as clock output.
JMF 0:24d3eb812fd4 379 * @param None.
JMF 0:24d3eb812fd4 380 * @retval ClockOutputRCOPrescaler Settled RCO prescaler used for clock
JMF 0:24d3eb812fd4 381 * output. This parameter can be a value of @ref ClockOutputRCOPrescaler.
JMF 0:24d3eb812fd4 382 */
JMF 0:24d3eb812fd4 383 ClockOutputRCOPrescaler SpiritGpioGetRCOPrescaler(void)
JMF 0:24d3eb812fd4 384 {
JMF 0:24d3eb812fd4 385 uint8_t tempRegValue = 0x00;
JMF 0:24d3eb812fd4 386
JMF 0:24d3eb812fd4 387 /* Reads the MCU_CLK_CONFIG register */
JMF 0:24d3eb812fd4 388 g_xStatus = SpiritSpiReadRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 389
JMF 0:24d3eb812fd4 390 /* Mask the RCO_RATIO field and returns the value */
JMF 0:24d3eb812fd4 391 return ((ClockOutputRCOPrescaler)(tempRegValue & 0x01));
JMF 0:24d3eb812fd4 392
JMF 0:24d3eb812fd4 393 }
JMF 0:24d3eb812fd4 394
JMF 0:24d3eb812fd4 395
JMF 0:24d3eb812fd4 396 /**
JMF 0:24d3eb812fd4 397 * @brief Sets the RCO ratio as clock output.
JMF 0:24d3eb812fd4 398 * @param xExtraCycles the number of extra clock cycles provided before switching
JMF 0:24d3eb812fd4 399 * to STANDBY state. This parameter can be any value of @ref ExtraClockCycles .
JMF 0:24d3eb812fd4 400 * @retval None.
JMF 0:24d3eb812fd4 401 */
JMF 0:24d3eb812fd4 402 void SpiritGpioSetExtraClockCycles(ExtraClockCycles xExtraCycles)
JMF 0:24d3eb812fd4 403 {
JMF 0:24d3eb812fd4 404 uint8_t tempRegValue = 0x00;
JMF 0:24d3eb812fd4 405
JMF 0:24d3eb812fd4 406 /* Check the parameters */
JMF 0:24d3eb812fd4 407 s_assert_param(IS_SPIRIT_CLOCK_OUTPUT_EXTRA_CYCLES(xExtraCycles));
JMF 0:24d3eb812fd4 408
JMF 0:24d3eb812fd4 409 /* Reads the MCU_CLK_CONFIG register */
JMF 0:24d3eb812fd4 410 g_xStatus = SpiritSpiReadRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 411
JMF 0:24d3eb812fd4 412 /* Mask the CLOCK_TAIL field and writes the new value */
JMF 0:24d3eb812fd4 413 tempRegValue &= 0x9F;
JMF 0:24d3eb812fd4 414 tempRegValue |= ((uint8_t)xExtraCycles);
JMF 0:24d3eb812fd4 415
JMF 0:24d3eb812fd4 416 /* Writes the new number of extra clock cycles in the MCU_CLOCK register */
JMF 0:24d3eb812fd4 417 g_xStatus = SpiritSpiWriteRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 418
JMF 0:24d3eb812fd4 419 }
JMF 0:24d3eb812fd4 420
JMF 0:24d3eb812fd4 421
JMF 0:24d3eb812fd4 422 /**
JMF 0:24d3eb812fd4 423 * @brief Returns the settled RCO prescaler as clock output.
JMF 0:24d3eb812fd4 424 * @param None.
JMF 0:24d3eb812fd4 425 * @retval ExtraClockCycles Settled number of extra clock cycles
JMF 0:24d3eb812fd4 426 * provided before switching to STANDBY state. This parameter can be
JMF 0:24d3eb812fd4 427 * any value of @ref ExtraClockCycles .
JMF 0:24d3eb812fd4 428 */
JMF 0:24d3eb812fd4 429 ExtraClockCycles SpiritGpioGetExtraClockCycles(void)
JMF 0:24d3eb812fd4 430 {
JMF 0:24d3eb812fd4 431 uint8_t tempRegValue = 0x00;
JMF 0:24d3eb812fd4 432
JMF 0:24d3eb812fd4 433 /* Reads the MCU_CLK_CONFIG register */
JMF 0:24d3eb812fd4 434 g_xStatus = SpiritSpiReadRegisters(MCU_CK_CONF_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 435
JMF 0:24d3eb812fd4 436 /* Mask the CLOCK_TAIL field and returns the value */
JMF 0:24d3eb812fd4 437 return ((ExtraClockCycles)(tempRegValue & 0x60));
JMF 0:24d3eb812fd4 438
JMF 0:24d3eb812fd4 439 }
JMF 0:24d3eb812fd4 440
JMF 0:24d3eb812fd4 441
JMF 0:24d3eb812fd4 442 /**
JMF 0:24d3eb812fd4 443 * @}
JMF 0:24d3eb812fd4 444 */
JMF 0:24d3eb812fd4 445
JMF 0:24d3eb812fd4 446
JMF 0:24d3eb812fd4 447 /**
JMF 0:24d3eb812fd4 448 * @}
JMF 0:24d3eb812fd4 449 */
JMF 0:24d3eb812fd4 450
JMF 0:24d3eb812fd4 451
JMF 0:24d3eb812fd4 452 /**
JMF 0:24d3eb812fd4 453 * @}
JMF 0:24d3eb812fd4 454 */
JMF 0:24d3eb812fd4 455
JMF 0:24d3eb812fd4 456
JMF 0:24d3eb812fd4 457
JMF 0:24d3eb812fd4 458 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/