Library to control Silicon Labs SI570 10 MHZ TO 1.4 GHZ I2C PROGRAMMABLE XO/VCXO.

Dependencies:   mbed

Fork of SI570 by Gerrit Polder

Committer:
DL3LD
Date:
Sun Mar 27 06:55:59 2016 +0000
Revision:
1:1556bcaaf759
STM32F746NG SI570 VFO Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DL3LD 1:1556bcaaf759 1 /**
DL3LD 1:1556bcaaf759 2 ******************************************************************************
DL3LD 1:1556bcaaf759 3 * @file stm32746g_discovery.c
DL3LD 1:1556bcaaf759 4 * @author MCD Application Team
DL3LD 1:1556bcaaf759 5 * @version V1.0.0
DL3LD 1:1556bcaaf759 6 * @date 25-June-2015
DL3LD 1:1556bcaaf759 7 * @brief This file provides a set of firmware functions to manage LEDs,
DL3LD 1:1556bcaaf759 8 * push-buttons and COM ports available on STM32746G-Discovery
DL3LD 1:1556bcaaf759 9 * board(MB1191) from STMicroelectronics.
DL3LD 1:1556bcaaf759 10 ******************************************************************************
DL3LD 1:1556bcaaf759 11 * @attention
DL3LD 1:1556bcaaf759 12 *
DL3LD 1:1556bcaaf759 13 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
DL3LD 1:1556bcaaf759 14 *
DL3LD 1:1556bcaaf759 15 * Redistribution and use in source and binary forms, with or without modification,
DL3LD 1:1556bcaaf759 16 * are permitted provided that the following conditions are met:
DL3LD 1:1556bcaaf759 17 * 1. Redistributions of source code must retain the above copyright notice,
DL3LD 1:1556bcaaf759 18 * this list of conditions and the following disclaimer.
DL3LD 1:1556bcaaf759 19 * 2. Redistributions in binary form must reproduce the above copyright notice,
DL3LD 1:1556bcaaf759 20 * this list of conditions and the following disclaimer in the documentation
DL3LD 1:1556bcaaf759 21 * and/or other materials provided with the distribution.
DL3LD 1:1556bcaaf759 22 * 3. Neither the name of STMicroelectronics nor the names of its contributors
DL3LD 1:1556bcaaf759 23 * may be used to endorse or promote products derived from this software
DL3LD 1:1556bcaaf759 24 * without specific prior written permission.
DL3LD 1:1556bcaaf759 25 *
DL3LD 1:1556bcaaf759 26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
DL3LD 1:1556bcaaf759 27 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
DL3LD 1:1556bcaaf759 28 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DL3LD 1:1556bcaaf759 29 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
DL3LD 1:1556bcaaf759 30 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DL3LD 1:1556bcaaf759 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
DL3LD 1:1556bcaaf759 32 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
DL3LD 1:1556bcaaf759 33 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
DL3LD 1:1556bcaaf759 34 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
DL3LD 1:1556bcaaf759 35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
DL3LD 1:1556bcaaf759 36 *
DL3LD 1:1556bcaaf759 37 ******************************************************************************
DL3LD 1:1556bcaaf759 38 */
DL3LD 1:1556bcaaf759 39
DL3LD 1:1556bcaaf759 40 /* Includes ------------------------------------------------------------------*/
DL3LD 1:1556bcaaf759 41 #include "stm32746g_discovery.h"
DL3LD 1:1556bcaaf759 42
DL3LD 1:1556bcaaf759 43 // mbed function to replace HAL_Delay function
DL3LD 1:1556bcaaf759 44 void wait_ms(int ms);
DL3LD 1:1556bcaaf759 45
DL3LD 1:1556bcaaf759 46 /** @addtogroup BSP
DL3LD 1:1556bcaaf759 47 * @{
DL3LD 1:1556bcaaf759 48 */
DL3LD 1:1556bcaaf759 49
DL3LD 1:1556bcaaf759 50 /** @addtogroup STM32746G_DISCOVERY
DL3LD 1:1556bcaaf759 51 * @{
DL3LD 1:1556bcaaf759 52 */
DL3LD 1:1556bcaaf759 53
DL3LD 1:1556bcaaf759 54 /** @defgroup STM32746G_DISCOVERY_LOW_LEVEL STM32746G_DISCOVERY_LOW_LEVEL
DL3LD 1:1556bcaaf759 55 * @{
DL3LD 1:1556bcaaf759 56 */
DL3LD 1:1556bcaaf759 57
DL3LD 1:1556bcaaf759 58 /** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Private_TypesDefinitions STM32746G_DISCOVERY_LOW_LEVEL Private Types Definitions
DL3LD 1:1556bcaaf759 59 * @{
DL3LD 1:1556bcaaf759 60 */
DL3LD 1:1556bcaaf759 61 /**
DL3LD 1:1556bcaaf759 62 * @}
DL3LD 1:1556bcaaf759 63 */
DL3LD 1:1556bcaaf759 64
DL3LD 1:1556bcaaf759 65 /** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Private_Defines STM32746G_DISCOVERY_LOW_LEVEL Private Defines
DL3LD 1:1556bcaaf759 66 * @{
DL3LD 1:1556bcaaf759 67 */
DL3LD 1:1556bcaaf759 68 /**
DL3LD 1:1556bcaaf759 69 * @brief STM32746G DISCOVERY BSP Driver version number V1.0.0
DL3LD 1:1556bcaaf759 70 */
DL3LD 1:1556bcaaf759 71 #define __STM32746G_DISCO_BSP_VERSION_MAIN (0x01) /*!< [31:24] main version */
DL3LD 1:1556bcaaf759 72 #define __STM32746G_DISCO_BSP_VERSION_SUB1 (0x00) /*!< [23:16] sub1 version */
DL3LD 1:1556bcaaf759 73 #define __STM32746G_DISCO_BSP_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */
DL3LD 1:1556bcaaf759 74 #define __STM32746G_DISCO_BSP_VERSION_RC (0x00) /*!< [7:0] release candidate */
DL3LD 1:1556bcaaf759 75 #define __STM32746G_DISCO_BSP_VERSION ((__STM32746G_DISCO_BSP_VERSION_MAIN << 24)\
DL3LD 1:1556bcaaf759 76 |(__STM32746G_DISCO_BSP_VERSION_SUB1 << 16)\
DL3LD 1:1556bcaaf759 77 |(__STM32746G_DISCO_BSP_VERSION_SUB2 << 8 )\
DL3LD 1:1556bcaaf759 78 |(__STM32746G_DISCO_BSP_VERSION_RC))
DL3LD 1:1556bcaaf759 79 /**
DL3LD 1:1556bcaaf759 80 * @}
DL3LD 1:1556bcaaf759 81 */
DL3LD 1:1556bcaaf759 82
DL3LD 1:1556bcaaf759 83 /** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Private_Macros STM32746G_DISCOVERY_LOW_LEVEL Private Macros
DL3LD 1:1556bcaaf759 84 * @{
DL3LD 1:1556bcaaf759 85 */
DL3LD 1:1556bcaaf759 86 /**
DL3LD 1:1556bcaaf759 87 * @}
DL3LD 1:1556bcaaf759 88 */
DL3LD 1:1556bcaaf759 89
DL3LD 1:1556bcaaf759 90 /** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Private_Variables STM32746G_DISCOVERY_LOW_LEVEL Private Variables
DL3LD 1:1556bcaaf759 91 * @{
DL3LD 1:1556bcaaf759 92 */
DL3LD 1:1556bcaaf759 93
DL3LD 1:1556bcaaf759 94 const uint32_t GPIO_PIN[LEDn] = {LED1_PIN};
DL3LD 1:1556bcaaf759 95
DL3LD 1:1556bcaaf759 96 GPIO_TypeDef* BUTTON_PORT[BUTTONn] = {WAKEUP_BUTTON_GPIO_PORT,
DL3LD 1:1556bcaaf759 97 TAMPER_BUTTON_GPIO_PORT,
DL3LD 1:1556bcaaf759 98 KEY_BUTTON_GPIO_PORT};
DL3LD 1:1556bcaaf759 99
DL3LD 1:1556bcaaf759 100 const uint16_t BUTTON_PIN[BUTTONn] = {WAKEUP_BUTTON_PIN,
DL3LD 1:1556bcaaf759 101 TAMPER_BUTTON_PIN,
DL3LD 1:1556bcaaf759 102 KEY_BUTTON_PIN};
DL3LD 1:1556bcaaf759 103
DL3LD 1:1556bcaaf759 104 const uint16_t BUTTON_IRQn[BUTTONn] = {WAKEUP_BUTTON_EXTI_IRQn,
DL3LD 1:1556bcaaf759 105 TAMPER_BUTTON_EXTI_IRQn,
DL3LD 1:1556bcaaf759 106 KEY_BUTTON_EXTI_IRQn};
DL3LD 1:1556bcaaf759 107
DL3LD 1:1556bcaaf759 108 USART_TypeDef* COM_USART[COMn] = {DISCOVERY_COM1};
DL3LD 1:1556bcaaf759 109
DL3LD 1:1556bcaaf759 110 GPIO_TypeDef* COM_TX_PORT[COMn] = {DISCOVERY_COM1_TX_GPIO_PORT};
DL3LD 1:1556bcaaf759 111
DL3LD 1:1556bcaaf759 112 GPIO_TypeDef* COM_RX_PORT[COMn] = {DISCOVERY_COM1_RX_GPIO_PORT};
DL3LD 1:1556bcaaf759 113
DL3LD 1:1556bcaaf759 114 const uint16_t COM_TX_PIN[COMn] = {DISCOVERY_COM1_TX_PIN};
DL3LD 1:1556bcaaf759 115
DL3LD 1:1556bcaaf759 116 const uint16_t COM_RX_PIN[COMn] = {DISCOVERY_COM1_RX_PIN};
DL3LD 1:1556bcaaf759 117
DL3LD 1:1556bcaaf759 118 const uint16_t COM_TX_AF[COMn] = {DISCOVERY_COM1_TX_AF};
DL3LD 1:1556bcaaf759 119
DL3LD 1:1556bcaaf759 120 const uint16_t COM_RX_AF[COMn] = {DISCOVERY_COM1_RX_AF};
DL3LD 1:1556bcaaf759 121
DL3LD 1:1556bcaaf759 122 static I2C_HandleTypeDef hI2cAudioHandler = {0};
DL3LD 1:1556bcaaf759 123 static I2C_HandleTypeDef hI2cExtHandler = {0};
DL3LD 1:1556bcaaf759 124
DL3LD 1:1556bcaaf759 125 /**
DL3LD 1:1556bcaaf759 126 * @}
DL3LD 1:1556bcaaf759 127 */
DL3LD 1:1556bcaaf759 128
DL3LD 1:1556bcaaf759 129 /** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Private_FunctionPrototypes STM32746G_DISCOVERY_LOW_LEVEL Private Function Prototypes
DL3LD 1:1556bcaaf759 130 * @{
DL3LD 1:1556bcaaf759 131 */
DL3LD 1:1556bcaaf759 132 static void I2Cx_MspInit(I2C_HandleTypeDef *i2c_handler);
DL3LD 1:1556bcaaf759 133 static void I2Cx_Init(I2C_HandleTypeDef *i2c_handler);
DL3LD 1:1556bcaaf759 134
DL3LD 1:1556bcaaf759 135 static HAL_StatusTypeDef I2Cx_ReadMultiple(I2C_HandleTypeDef *i2c_handler, uint8_t Addr, uint16_t Reg, uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length);
DL3LD 1:1556bcaaf759 136 static HAL_StatusTypeDef I2Cx_WriteMultiple(I2C_HandleTypeDef *i2c_handler, uint8_t Addr, uint16_t Reg, uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length);
DL3LD 1:1556bcaaf759 137 static HAL_StatusTypeDef I2Cx_IsDeviceReady(I2C_HandleTypeDef *i2c_handler, uint16_t DevAddress, uint32_t Trials);
DL3LD 1:1556bcaaf759 138 static void I2Cx_Error(I2C_HandleTypeDef *i2c_handler, uint8_t Addr);
DL3LD 1:1556bcaaf759 139
DL3LD 1:1556bcaaf759 140 /* AUDIO IO functions */
DL3LD 1:1556bcaaf759 141 void AUDIO_IO_Init(void);
DL3LD 1:1556bcaaf759 142 void AUDIO_IO_DeInit(void);
DL3LD 1:1556bcaaf759 143 void AUDIO_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value);
DL3LD 1:1556bcaaf759 144 uint16_t AUDIO_IO_Read(uint8_t Addr, uint16_t Reg);
DL3LD 1:1556bcaaf759 145 void AUDIO_IO_Delay(uint32_t Delay);
DL3LD 1:1556bcaaf759 146
DL3LD 1:1556bcaaf759 147 /* TOUCHSCREEN IO functions */
DL3LD 1:1556bcaaf759 148 void TS_IO_Init(void);
DL3LD 1:1556bcaaf759 149 void TS_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value);
DL3LD 1:1556bcaaf759 150 uint8_t TS_IO_Read(uint8_t Addr, uint8_t Reg);
DL3LD 1:1556bcaaf759 151 void TS_IO_Delay(uint32_t Delay);
DL3LD 1:1556bcaaf759 152
DL3LD 1:1556bcaaf759 153 /* CAMERA IO functions */
DL3LD 1:1556bcaaf759 154 void CAMERA_IO_Init(void);
DL3LD 1:1556bcaaf759 155 void CAMERA_Delay(uint32_t Delay);
DL3LD 1:1556bcaaf759 156 void CAMERA_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value);
DL3LD 1:1556bcaaf759 157 uint8_t CAMERA_IO_Read(uint8_t Addr, uint8_t Reg);
DL3LD 1:1556bcaaf759 158
DL3LD 1:1556bcaaf759 159 /* I2C EEPROM IO function */
DL3LD 1:1556bcaaf759 160 void EEPROM_IO_Init(void);
DL3LD 1:1556bcaaf759 161 HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
DL3LD 1:1556bcaaf759 162 HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
DL3LD 1:1556bcaaf759 163 HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials);
DL3LD 1:1556bcaaf759 164 /**
DL3LD 1:1556bcaaf759 165 * @}
DL3LD 1:1556bcaaf759 166 */
DL3LD 1:1556bcaaf759 167
DL3LD 1:1556bcaaf759 168 /** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Exported_Functions STM32746G_DISCOVERY_LOW_LEVELSTM32746G_DISCOVERY_LOW_LEVEL Exported Functions
DL3LD 1:1556bcaaf759 169 * @{
DL3LD 1:1556bcaaf759 170 */
DL3LD 1:1556bcaaf759 171
DL3LD 1:1556bcaaf759 172 /**
DL3LD 1:1556bcaaf759 173 * @brief This method returns the STM32746G DISCOVERY BSP Driver revision
DL3LD 1:1556bcaaf759 174 * @retval version: 0xXYZR (8bits for each decimal, R for RC)
DL3LD 1:1556bcaaf759 175 */
DL3LD 1:1556bcaaf759 176 uint32_t BSP_GetVersion(void)
DL3LD 1:1556bcaaf759 177 {
DL3LD 1:1556bcaaf759 178 return __STM32746G_DISCO_BSP_VERSION;
DL3LD 1:1556bcaaf759 179 }
DL3LD 1:1556bcaaf759 180
DL3LD 1:1556bcaaf759 181 /**
DL3LD 1:1556bcaaf759 182 * @brief Configures LED on GPIO.
DL3LD 1:1556bcaaf759 183 * @param Led: LED to be configured.
DL3LD 1:1556bcaaf759 184 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 185 * @arg LED1
DL3LD 1:1556bcaaf759 186 * @retval None
DL3LD 1:1556bcaaf759 187 */
DL3LD 1:1556bcaaf759 188 void BSP_LED_Init(Led_TypeDef Led)
DL3LD 1:1556bcaaf759 189 {
DL3LD 1:1556bcaaf759 190 GPIO_InitTypeDef gpio_init_structure;
DL3LD 1:1556bcaaf759 191 GPIO_TypeDef* gpio_led;
DL3LD 1:1556bcaaf759 192
DL3LD 1:1556bcaaf759 193 if (Led == DISCO_LED1)
DL3LD 1:1556bcaaf759 194 {
DL3LD 1:1556bcaaf759 195 gpio_led = LED1_GPIO_PORT;
DL3LD 1:1556bcaaf759 196 /* Enable the GPIO_LED clock */
DL3LD 1:1556bcaaf759 197 LED1_GPIO_CLK_ENABLE();
DL3LD 1:1556bcaaf759 198
DL3LD 1:1556bcaaf759 199 /* Configure the GPIO_LED pin */
DL3LD 1:1556bcaaf759 200 gpio_init_structure.Pin = GPIO_PIN[Led];
DL3LD 1:1556bcaaf759 201 gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP;
DL3LD 1:1556bcaaf759 202 gpio_init_structure.Pull = GPIO_PULLUP;
DL3LD 1:1556bcaaf759 203 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
DL3LD 1:1556bcaaf759 204
DL3LD 1:1556bcaaf759 205 HAL_GPIO_Init(gpio_led, &gpio_init_structure);
DL3LD 1:1556bcaaf759 206
DL3LD 1:1556bcaaf759 207 /* By default, turn off LED */
DL3LD 1:1556bcaaf759 208 HAL_GPIO_WritePin(gpio_led, GPIO_PIN[Led], GPIO_PIN_RESET);
DL3LD 1:1556bcaaf759 209 }
DL3LD 1:1556bcaaf759 210 }
DL3LD 1:1556bcaaf759 211
DL3LD 1:1556bcaaf759 212 /**
DL3LD 1:1556bcaaf759 213 * @brief DeInit LEDs.
DL3LD 1:1556bcaaf759 214 * @param Led: LED to be configured.
DL3LD 1:1556bcaaf759 215 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 216 * @arg LED1
DL3LD 1:1556bcaaf759 217 * @note Led DeInit does not disable the GPIO clock
DL3LD 1:1556bcaaf759 218 * @retval None
DL3LD 1:1556bcaaf759 219 */
DL3LD 1:1556bcaaf759 220 void BSP_LED_DeInit(Led_TypeDef Led)
DL3LD 1:1556bcaaf759 221 {
DL3LD 1:1556bcaaf759 222 GPIO_InitTypeDef gpio_init_structure;
DL3LD 1:1556bcaaf759 223 GPIO_TypeDef* gpio_led;
DL3LD 1:1556bcaaf759 224
DL3LD 1:1556bcaaf759 225 if (Led == DISCO_LED1)
DL3LD 1:1556bcaaf759 226 {
DL3LD 1:1556bcaaf759 227 gpio_led = LED1_GPIO_PORT;
DL3LD 1:1556bcaaf759 228 /* Turn off LED */
DL3LD 1:1556bcaaf759 229 HAL_GPIO_WritePin(gpio_led, GPIO_PIN[Led], GPIO_PIN_RESET);
DL3LD 1:1556bcaaf759 230 /* Configure the GPIO_LED pin */
DL3LD 1:1556bcaaf759 231 gpio_init_structure.Pin = GPIO_PIN[Led];
DL3LD 1:1556bcaaf759 232 HAL_GPIO_DeInit(gpio_led, gpio_init_structure.Pin);
DL3LD 1:1556bcaaf759 233 }
DL3LD 1:1556bcaaf759 234 }
DL3LD 1:1556bcaaf759 235
DL3LD 1:1556bcaaf759 236 /**
DL3LD 1:1556bcaaf759 237 * @brief Turns selected LED On.
DL3LD 1:1556bcaaf759 238 * @param Led: LED to be set on
DL3LD 1:1556bcaaf759 239 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 240 * @arg LED1
DL3LD 1:1556bcaaf759 241 * @retval None
DL3LD 1:1556bcaaf759 242 */
DL3LD 1:1556bcaaf759 243 void BSP_LED_On(Led_TypeDef Led)
DL3LD 1:1556bcaaf759 244 {
DL3LD 1:1556bcaaf759 245 GPIO_TypeDef* gpio_led;
DL3LD 1:1556bcaaf759 246
DL3LD 1:1556bcaaf759 247 if (Led == DISCO_LED1) /* Switch On LED connected to GPIO */
DL3LD 1:1556bcaaf759 248 {
DL3LD 1:1556bcaaf759 249 gpio_led = LED1_GPIO_PORT;
DL3LD 1:1556bcaaf759 250 HAL_GPIO_WritePin(gpio_led, GPIO_PIN[Led], GPIO_PIN_SET);
DL3LD 1:1556bcaaf759 251 }
DL3LD 1:1556bcaaf759 252 }
DL3LD 1:1556bcaaf759 253
DL3LD 1:1556bcaaf759 254 /**
DL3LD 1:1556bcaaf759 255 * @brief Turns selected LED Off.
DL3LD 1:1556bcaaf759 256 * @param Led: LED to be set off
DL3LD 1:1556bcaaf759 257 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 258 * @arg LED1
DL3LD 1:1556bcaaf759 259 * @retval None
DL3LD 1:1556bcaaf759 260 */
DL3LD 1:1556bcaaf759 261 void BSP_LED_Off(Led_TypeDef Led)
DL3LD 1:1556bcaaf759 262 {
DL3LD 1:1556bcaaf759 263 GPIO_TypeDef* gpio_led;
DL3LD 1:1556bcaaf759 264
DL3LD 1:1556bcaaf759 265 if (Led == DISCO_LED1) /* Switch Off LED connected to GPIO */
DL3LD 1:1556bcaaf759 266 {
DL3LD 1:1556bcaaf759 267 gpio_led = LED1_GPIO_PORT;
DL3LD 1:1556bcaaf759 268 HAL_GPIO_WritePin(gpio_led, GPIO_PIN[Led], GPIO_PIN_RESET);
DL3LD 1:1556bcaaf759 269 }
DL3LD 1:1556bcaaf759 270 }
DL3LD 1:1556bcaaf759 271
DL3LD 1:1556bcaaf759 272 /**
DL3LD 1:1556bcaaf759 273 * @brief Toggles the selected LED.
DL3LD 1:1556bcaaf759 274 * @param Led: LED to be toggled
DL3LD 1:1556bcaaf759 275 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 276 * @arg LED1
DL3LD 1:1556bcaaf759 277 * @retval None
DL3LD 1:1556bcaaf759 278 */
DL3LD 1:1556bcaaf759 279 void BSP_LED_Toggle(Led_TypeDef Led)
DL3LD 1:1556bcaaf759 280 {
DL3LD 1:1556bcaaf759 281 GPIO_TypeDef* gpio_led;
DL3LD 1:1556bcaaf759 282
DL3LD 1:1556bcaaf759 283 if (Led == DISCO_LED1) /* Toggle LED connected to GPIO */
DL3LD 1:1556bcaaf759 284 {
DL3LD 1:1556bcaaf759 285 gpio_led = LED1_GPIO_PORT;
DL3LD 1:1556bcaaf759 286 HAL_GPIO_TogglePin(gpio_led, GPIO_PIN[Led]);
DL3LD 1:1556bcaaf759 287 }
DL3LD 1:1556bcaaf759 288 }
DL3LD 1:1556bcaaf759 289
DL3LD 1:1556bcaaf759 290 /**
DL3LD 1:1556bcaaf759 291 * @brief Configures button GPIO and EXTI Line.
DL3LD 1:1556bcaaf759 292 * @param Button: Button to be configured
DL3LD 1:1556bcaaf759 293 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 294 * @arg BUTTON_WAKEUP: Wakeup Push Button
DL3LD 1:1556bcaaf759 295 * @arg BUTTON_TAMPER: Tamper Push Button
DL3LD 1:1556bcaaf759 296 * @arg BUTTON_KEY: Key Push Button
DL3LD 1:1556bcaaf759 297 * @param ButtonMode: Button mode
DL3LD 1:1556bcaaf759 298 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 299 * @arg BUTTON_MODE_GPIO: Button will be used as simple IO
DL3LD 1:1556bcaaf759 300 * @arg BUTTON_MODE_EXTI: Button will be connected to EXTI line
DL3LD 1:1556bcaaf759 301 * with interrupt generation capability
DL3LD 1:1556bcaaf759 302 * @note On STM32746G-Discovery board, the three buttons (Wakeup, Tamper and key buttons)
DL3LD 1:1556bcaaf759 303 * are mapped on the same push button named "User"
DL3LD 1:1556bcaaf759 304 * on the board serigraphy.
DL3LD 1:1556bcaaf759 305 * @retval None
DL3LD 1:1556bcaaf759 306 */
DL3LD 1:1556bcaaf759 307 void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode)
DL3LD 1:1556bcaaf759 308 {
DL3LD 1:1556bcaaf759 309 GPIO_InitTypeDef gpio_init_structure;
DL3LD 1:1556bcaaf759 310
DL3LD 1:1556bcaaf759 311 /* Enable the BUTTON clock */
DL3LD 1:1556bcaaf759 312 BUTTONx_GPIO_CLK_ENABLE(Button);
DL3LD 1:1556bcaaf759 313
DL3LD 1:1556bcaaf759 314 if(ButtonMode == BUTTON_MODE_GPIO)
DL3LD 1:1556bcaaf759 315 {
DL3LD 1:1556bcaaf759 316 /* Configure Button pin as input */
DL3LD 1:1556bcaaf759 317 gpio_init_structure.Pin = BUTTON_PIN[Button];
DL3LD 1:1556bcaaf759 318 gpio_init_structure.Mode = GPIO_MODE_INPUT;
DL3LD 1:1556bcaaf759 319 gpio_init_structure.Pull = GPIO_NOPULL;
DL3LD 1:1556bcaaf759 320 gpio_init_structure.Speed = GPIO_SPEED_FAST;
DL3LD 1:1556bcaaf759 321 HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure);
DL3LD 1:1556bcaaf759 322 }
DL3LD 1:1556bcaaf759 323
DL3LD 1:1556bcaaf759 324 if(ButtonMode == BUTTON_MODE_EXTI)
DL3LD 1:1556bcaaf759 325 {
DL3LD 1:1556bcaaf759 326 /* Configure Button pin as input with External interrupt */
DL3LD 1:1556bcaaf759 327 gpio_init_structure.Pin = BUTTON_PIN[Button];
DL3LD 1:1556bcaaf759 328 gpio_init_structure.Pull = GPIO_NOPULL;
DL3LD 1:1556bcaaf759 329 gpio_init_structure.Speed = GPIO_SPEED_FAST;
DL3LD 1:1556bcaaf759 330
DL3LD 1:1556bcaaf759 331 if(Button != BUTTON_WAKEUP)
DL3LD 1:1556bcaaf759 332 {
DL3LD 1:1556bcaaf759 333 gpio_init_structure.Mode = GPIO_MODE_IT_FALLING;
DL3LD 1:1556bcaaf759 334 }
DL3LD 1:1556bcaaf759 335 else
DL3LD 1:1556bcaaf759 336 {
DL3LD 1:1556bcaaf759 337 gpio_init_structure.Mode = GPIO_MODE_IT_RISING;
DL3LD 1:1556bcaaf759 338 }
DL3LD 1:1556bcaaf759 339
DL3LD 1:1556bcaaf759 340 HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure);
DL3LD 1:1556bcaaf759 341
DL3LD 1:1556bcaaf759 342 /* Enable and set Button EXTI Interrupt to the lowest priority */
DL3LD 1:1556bcaaf759 343 HAL_NVIC_SetPriority((IRQn_Type)(BUTTON_IRQn[Button]), 0x0F, 0x00);
DL3LD 1:1556bcaaf759 344 HAL_NVIC_EnableIRQ((IRQn_Type)(BUTTON_IRQn[Button]));
DL3LD 1:1556bcaaf759 345 }
DL3LD 1:1556bcaaf759 346 }
DL3LD 1:1556bcaaf759 347
DL3LD 1:1556bcaaf759 348 /**
DL3LD 1:1556bcaaf759 349 * @brief Push Button DeInit.
DL3LD 1:1556bcaaf759 350 * @param Button: Button to be configured
DL3LD 1:1556bcaaf759 351 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 352 * @arg BUTTON_WAKEUP: Wakeup Push Button
DL3LD 1:1556bcaaf759 353 * @arg BUTTON_TAMPER: Tamper Push Button
DL3LD 1:1556bcaaf759 354 * @arg BUTTON_KEY: Key Push Button
DL3LD 1:1556bcaaf759 355 * @note On STM32746G-Discovery board, the three buttons (Wakeup, Tamper and key buttons)
DL3LD 1:1556bcaaf759 356 * are mapped on the same push button named "User"
DL3LD 1:1556bcaaf759 357 * on the board serigraphy.
DL3LD 1:1556bcaaf759 358 * @note PB DeInit does not disable the GPIO clock
DL3LD 1:1556bcaaf759 359 * @retval None
DL3LD 1:1556bcaaf759 360 */
DL3LD 1:1556bcaaf759 361 void BSP_PB_DeInit(Button_TypeDef Button)
DL3LD 1:1556bcaaf759 362 {
DL3LD 1:1556bcaaf759 363 GPIO_InitTypeDef gpio_init_structure;
DL3LD 1:1556bcaaf759 364
DL3LD 1:1556bcaaf759 365 gpio_init_structure.Pin = BUTTON_PIN[Button];
DL3LD 1:1556bcaaf759 366 HAL_NVIC_DisableIRQ((IRQn_Type)(BUTTON_IRQn[Button]));
DL3LD 1:1556bcaaf759 367 HAL_GPIO_DeInit(BUTTON_PORT[Button], gpio_init_structure.Pin);
DL3LD 1:1556bcaaf759 368 }
DL3LD 1:1556bcaaf759 369
DL3LD 1:1556bcaaf759 370
DL3LD 1:1556bcaaf759 371 /**
DL3LD 1:1556bcaaf759 372 * @brief Returns the selected button state.
DL3LD 1:1556bcaaf759 373 * @param Button: Button to be checked
DL3LD 1:1556bcaaf759 374 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 375 * @arg BUTTON_WAKEUP: Wakeup Push Button
DL3LD 1:1556bcaaf759 376 * @arg BUTTON_TAMPER: Tamper Push Button
DL3LD 1:1556bcaaf759 377 * @arg BUTTON_KEY: Key Push Button
DL3LD 1:1556bcaaf759 378 * @note On STM32746G-Discovery board, the three buttons (Wakeup, Tamper and key buttons)
DL3LD 1:1556bcaaf759 379 * are mapped on the same push button named "User"
DL3LD 1:1556bcaaf759 380 * on the board serigraphy.
DL3LD 1:1556bcaaf759 381 * @retval The Button GPIO pin value
DL3LD 1:1556bcaaf759 382 */
DL3LD 1:1556bcaaf759 383 uint32_t BSP_PB_GetState(Button_TypeDef Button)
DL3LD 1:1556bcaaf759 384 {
DL3LD 1:1556bcaaf759 385 return HAL_GPIO_ReadPin(BUTTON_PORT[Button], BUTTON_PIN[Button]);
DL3LD 1:1556bcaaf759 386 }
DL3LD 1:1556bcaaf759 387
DL3LD 1:1556bcaaf759 388 /**
DL3LD 1:1556bcaaf759 389 * @brief Configures COM port.
DL3LD 1:1556bcaaf759 390 * @param COM: COM port to be configured.
DL3LD 1:1556bcaaf759 391 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 392 * @arg COM1
DL3LD 1:1556bcaaf759 393 * @arg COM2
DL3LD 1:1556bcaaf759 394 * @param huart: Pointer to a UART_HandleTypeDef structure that contains the
DL3LD 1:1556bcaaf759 395 * configuration information for the specified USART peripheral.
DL3LD 1:1556bcaaf759 396 * @retval None
DL3LD 1:1556bcaaf759 397 */
DL3LD 1:1556bcaaf759 398 void BSP_COM_Init(COM_TypeDef COM, UART_HandleTypeDef *huart)
DL3LD 1:1556bcaaf759 399 {
DL3LD 1:1556bcaaf759 400 GPIO_InitTypeDef gpio_init_structure;
DL3LD 1:1556bcaaf759 401
DL3LD 1:1556bcaaf759 402 /* Enable GPIO clock */
DL3LD 1:1556bcaaf759 403 DISCOVERY_COMx_TX_GPIO_CLK_ENABLE(COM);
DL3LD 1:1556bcaaf759 404 DISCOVERY_COMx_RX_GPIO_CLK_ENABLE(COM);
DL3LD 1:1556bcaaf759 405
DL3LD 1:1556bcaaf759 406 /* Enable USART clock */
DL3LD 1:1556bcaaf759 407 DISCOVERY_COMx_CLK_ENABLE(COM);
DL3LD 1:1556bcaaf759 408
DL3LD 1:1556bcaaf759 409 /* Configure USART Tx as alternate function */
DL3LD 1:1556bcaaf759 410 gpio_init_structure.Pin = COM_TX_PIN[COM];
DL3LD 1:1556bcaaf759 411 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
DL3LD 1:1556bcaaf759 412 gpio_init_structure.Speed = GPIO_SPEED_FAST;
DL3LD 1:1556bcaaf759 413 gpio_init_structure.Pull = GPIO_PULLUP;
DL3LD 1:1556bcaaf759 414 gpio_init_structure.Alternate = COM_TX_AF[COM];
DL3LD 1:1556bcaaf759 415 HAL_GPIO_Init(COM_TX_PORT[COM], &gpio_init_structure);
DL3LD 1:1556bcaaf759 416
DL3LD 1:1556bcaaf759 417 /* Configure USART Rx as alternate function */
DL3LD 1:1556bcaaf759 418 gpio_init_structure.Pin = COM_RX_PIN[COM];
DL3LD 1:1556bcaaf759 419 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
DL3LD 1:1556bcaaf759 420 gpio_init_structure.Alternate = COM_RX_AF[COM];
DL3LD 1:1556bcaaf759 421 HAL_GPIO_Init(COM_RX_PORT[COM], &gpio_init_structure);
DL3LD 1:1556bcaaf759 422
DL3LD 1:1556bcaaf759 423 /* USART configuration */
DL3LD 1:1556bcaaf759 424 huart->Instance = COM_USART[COM];
DL3LD 1:1556bcaaf759 425 HAL_UART_Init(huart);
DL3LD 1:1556bcaaf759 426 }
DL3LD 1:1556bcaaf759 427
DL3LD 1:1556bcaaf759 428 /**
DL3LD 1:1556bcaaf759 429 * @brief DeInit COM port.
DL3LD 1:1556bcaaf759 430 * @param COM: COM port to be configured.
DL3LD 1:1556bcaaf759 431 * This parameter can be one of the following values:
DL3LD 1:1556bcaaf759 432 * @arg COM1
DL3LD 1:1556bcaaf759 433 * @arg COM2
DL3LD 1:1556bcaaf759 434 * @param huart: Pointer to a UART_HandleTypeDef structure that contains the
DL3LD 1:1556bcaaf759 435 * configuration information for the specified USART peripheral.
DL3LD 1:1556bcaaf759 436 * @retval None
DL3LD 1:1556bcaaf759 437 */
DL3LD 1:1556bcaaf759 438 void BSP_COM_DeInit(COM_TypeDef COM, UART_HandleTypeDef *huart)
DL3LD 1:1556bcaaf759 439 {
DL3LD 1:1556bcaaf759 440 /* USART configuration */
DL3LD 1:1556bcaaf759 441 huart->Instance = COM_USART[COM];
DL3LD 1:1556bcaaf759 442 HAL_UART_DeInit(huart);
DL3LD 1:1556bcaaf759 443
DL3LD 1:1556bcaaf759 444 /* Enable USART clock */
DL3LD 1:1556bcaaf759 445 DISCOVERY_COMx_CLK_DISABLE(COM);
DL3LD 1:1556bcaaf759 446
DL3LD 1:1556bcaaf759 447 /* DeInit GPIO pins can be done in the application
DL3LD 1:1556bcaaf759 448 (by surcharging this __weak function) */
DL3LD 1:1556bcaaf759 449
DL3LD 1:1556bcaaf759 450 /* GPIO pins clock, DMA clock can be shut down in the application
DL3LD 1:1556bcaaf759 451 by surcharging this __weak function */
DL3LD 1:1556bcaaf759 452 }
DL3LD 1:1556bcaaf759 453
DL3LD 1:1556bcaaf759 454 /*******************************************************************************
DL3LD 1:1556bcaaf759 455 BUS OPERATIONS
DL3LD 1:1556bcaaf759 456 *******************************************************************************/
DL3LD 1:1556bcaaf759 457
DL3LD 1:1556bcaaf759 458 /******************************* I2C Routines *********************************/
DL3LD 1:1556bcaaf759 459 /**
DL3LD 1:1556bcaaf759 460 * @brief Initializes I2C MSP.
DL3LD 1:1556bcaaf759 461 * @param i2c_handler : I2C handler
DL3LD 1:1556bcaaf759 462 * @retval None
DL3LD 1:1556bcaaf759 463 */
DL3LD 1:1556bcaaf759 464 static void I2Cx_MspInit(I2C_HandleTypeDef *i2c_handler)
DL3LD 1:1556bcaaf759 465 {
DL3LD 1:1556bcaaf759 466 GPIO_InitTypeDef gpio_init_structure;
DL3LD 1:1556bcaaf759 467
DL3LD 1:1556bcaaf759 468 if (i2c_handler == (I2C_HandleTypeDef*)(&hI2cAudioHandler))
DL3LD 1:1556bcaaf759 469 {
DL3LD 1:1556bcaaf759 470 /* AUDIO and LCD I2C MSP init */
DL3LD 1:1556bcaaf759 471
DL3LD 1:1556bcaaf759 472 /*** Configure the GPIOs ***/
DL3LD 1:1556bcaaf759 473 /* Enable GPIO clock */
DL3LD 1:1556bcaaf759 474 DISCOVERY_AUDIO_I2Cx_SCL_SDA_GPIO_CLK_ENABLE();
DL3LD 1:1556bcaaf759 475
DL3LD 1:1556bcaaf759 476 /* Configure I2C Tx as alternate function */
DL3LD 1:1556bcaaf759 477 gpio_init_structure.Pin = DISCOVERY_AUDIO_I2Cx_SCL_PIN;
DL3LD 1:1556bcaaf759 478 gpio_init_structure.Mode = GPIO_MODE_AF_OD;
DL3LD 1:1556bcaaf759 479 gpio_init_structure.Pull = GPIO_NOPULL;
DL3LD 1:1556bcaaf759 480 gpio_init_structure.Speed = GPIO_SPEED_FAST;
DL3LD 1:1556bcaaf759 481 gpio_init_structure.Alternate = DISCOVERY_AUDIO_I2Cx_SCL_SDA_AF;
DL3LD 1:1556bcaaf759 482 HAL_GPIO_Init(DISCOVERY_AUDIO_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure);
DL3LD 1:1556bcaaf759 483
DL3LD 1:1556bcaaf759 484 /* Configure I2C Rx as alternate function */
DL3LD 1:1556bcaaf759 485 gpio_init_structure.Pin = DISCOVERY_AUDIO_I2Cx_SDA_PIN;
DL3LD 1:1556bcaaf759 486 HAL_GPIO_Init(DISCOVERY_AUDIO_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure);
DL3LD 1:1556bcaaf759 487
DL3LD 1:1556bcaaf759 488 /*** Configure the I2C peripheral ***/
DL3LD 1:1556bcaaf759 489 /* Enable I2C clock */
DL3LD 1:1556bcaaf759 490 DISCOVERY_AUDIO_I2Cx_CLK_ENABLE();
DL3LD 1:1556bcaaf759 491
DL3LD 1:1556bcaaf759 492 /* Force the I2C peripheral clock reset */
DL3LD 1:1556bcaaf759 493 DISCOVERY_AUDIO_I2Cx_FORCE_RESET();
DL3LD 1:1556bcaaf759 494
DL3LD 1:1556bcaaf759 495 /* Release the I2C peripheral clock reset */
DL3LD 1:1556bcaaf759 496 DISCOVERY_AUDIO_I2Cx_RELEASE_RESET();
DL3LD 1:1556bcaaf759 497
DL3LD 1:1556bcaaf759 498 /* Enable and set I2Cx Interrupt to a lower priority */
DL3LD 1:1556bcaaf759 499 HAL_NVIC_SetPriority(DISCOVERY_AUDIO_I2Cx_EV_IRQn, 0x05, 0);
DL3LD 1:1556bcaaf759 500 HAL_NVIC_EnableIRQ(DISCOVERY_AUDIO_I2Cx_EV_IRQn);
DL3LD 1:1556bcaaf759 501
DL3LD 1:1556bcaaf759 502 /* Enable and set I2Cx Interrupt to a lower priority */
DL3LD 1:1556bcaaf759 503 HAL_NVIC_SetPriority(DISCOVERY_AUDIO_I2Cx_ER_IRQn, 0x05, 0);
DL3LD 1:1556bcaaf759 504 HAL_NVIC_EnableIRQ(DISCOVERY_AUDIO_I2Cx_ER_IRQn);
DL3LD 1:1556bcaaf759 505 }
DL3LD 1:1556bcaaf759 506 else
DL3LD 1:1556bcaaf759 507 {
DL3LD 1:1556bcaaf759 508 /* External, camera and Arduino connector I2C MSP init */
DL3LD 1:1556bcaaf759 509
DL3LD 1:1556bcaaf759 510 /*** Configure the GPIOs ***/
DL3LD 1:1556bcaaf759 511 /* Enable GPIO clock */
DL3LD 1:1556bcaaf759 512 DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_CLK_ENABLE();
DL3LD 1:1556bcaaf759 513
DL3LD 1:1556bcaaf759 514 /* Configure I2C Tx as alternate function */
DL3LD 1:1556bcaaf759 515 gpio_init_structure.Pin = DISCOVERY_EXT_I2Cx_SCL_PIN;
DL3LD 1:1556bcaaf759 516 gpio_init_structure.Mode = GPIO_MODE_AF_OD;
DL3LD 1:1556bcaaf759 517 gpio_init_structure.Pull = GPIO_NOPULL;
DL3LD 1:1556bcaaf759 518 gpio_init_structure.Speed = GPIO_SPEED_FAST;
DL3LD 1:1556bcaaf759 519 gpio_init_structure.Alternate = DISCOVERY_EXT_I2Cx_SCL_SDA_AF;
DL3LD 1:1556bcaaf759 520 HAL_GPIO_Init(DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure);
DL3LD 1:1556bcaaf759 521
DL3LD 1:1556bcaaf759 522 /* Configure I2C Rx as alternate function */
DL3LD 1:1556bcaaf759 523 gpio_init_structure.Pin = DISCOVERY_EXT_I2Cx_SDA_PIN;
DL3LD 1:1556bcaaf759 524 HAL_GPIO_Init(DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure);
DL3LD 1:1556bcaaf759 525
DL3LD 1:1556bcaaf759 526 /*** Configure the I2C peripheral ***/
DL3LD 1:1556bcaaf759 527 /* Enable I2C clock */
DL3LD 1:1556bcaaf759 528 DISCOVERY_EXT_I2Cx_CLK_ENABLE();
DL3LD 1:1556bcaaf759 529
DL3LD 1:1556bcaaf759 530 /* Force the I2C peripheral clock reset */
DL3LD 1:1556bcaaf759 531 DISCOVERY_EXT_I2Cx_FORCE_RESET();
DL3LD 1:1556bcaaf759 532
DL3LD 1:1556bcaaf759 533 /* Release the I2C peripheral clock reset */
DL3LD 1:1556bcaaf759 534 DISCOVERY_EXT_I2Cx_RELEASE_RESET();
DL3LD 1:1556bcaaf759 535
DL3LD 1:1556bcaaf759 536 /* Enable and set I2Cx Interrupt to a lower priority */
DL3LD 1:1556bcaaf759 537 HAL_NVIC_SetPriority(DISCOVERY_EXT_I2Cx_EV_IRQn, 0x05, 0);
DL3LD 1:1556bcaaf759 538 HAL_NVIC_EnableIRQ(DISCOVERY_EXT_I2Cx_EV_IRQn);
DL3LD 1:1556bcaaf759 539
DL3LD 1:1556bcaaf759 540 /* Enable and set I2Cx Interrupt to a lower priority */
DL3LD 1:1556bcaaf759 541 HAL_NVIC_SetPriority(DISCOVERY_EXT_I2Cx_ER_IRQn, 0x05, 0);
DL3LD 1:1556bcaaf759 542 HAL_NVIC_EnableIRQ(DISCOVERY_EXT_I2Cx_ER_IRQn);
DL3LD 1:1556bcaaf759 543 }
DL3LD 1:1556bcaaf759 544 }
DL3LD 1:1556bcaaf759 545
DL3LD 1:1556bcaaf759 546 /**
DL3LD 1:1556bcaaf759 547 * @brief Initializes I2C HAL.
DL3LD 1:1556bcaaf759 548 * @param i2c_handler : I2C handler
DL3LD 1:1556bcaaf759 549 * @retval None
DL3LD 1:1556bcaaf759 550 */
DL3LD 1:1556bcaaf759 551 static void I2Cx_Init(I2C_HandleTypeDef *i2c_handler)
DL3LD 1:1556bcaaf759 552 {
DL3LD 1:1556bcaaf759 553 if(HAL_I2C_GetState(i2c_handler) == HAL_I2C_STATE_RESET)
DL3LD 1:1556bcaaf759 554 {
DL3LD 1:1556bcaaf759 555 if (i2c_handler == (I2C_HandleTypeDef*)(&hI2cAudioHandler))
DL3LD 1:1556bcaaf759 556 {
DL3LD 1:1556bcaaf759 557 /* Audio and LCD I2C configuration */
DL3LD 1:1556bcaaf759 558 i2c_handler->Instance = DISCOVERY_AUDIO_I2Cx;
DL3LD 1:1556bcaaf759 559 }
DL3LD 1:1556bcaaf759 560 else
DL3LD 1:1556bcaaf759 561 {
DL3LD 1:1556bcaaf759 562 /* External, camera and Arduino connector I2C configuration */
DL3LD 1:1556bcaaf759 563 i2c_handler->Instance = DISCOVERY_EXT_I2Cx;
DL3LD 1:1556bcaaf759 564 }
DL3LD 1:1556bcaaf759 565 i2c_handler->Init.Timing = DISCOVERY_I2Cx_TIMING;
DL3LD 1:1556bcaaf759 566 i2c_handler->Init.OwnAddress1 = 0;
DL3LD 1:1556bcaaf759 567 i2c_handler->Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
DL3LD 1:1556bcaaf759 568 i2c_handler->Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
DL3LD 1:1556bcaaf759 569 i2c_handler->Init.OwnAddress2 = 0;
DL3LD 1:1556bcaaf759 570 i2c_handler->Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
DL3LD 1:1556bcaaf759 571 i2c_handler->Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
DL3LD 1:1556bcaaf759 572
DL3LD 1:1556bcaaf759 573 /* Init the I2C */
DL3LD 1:1556bcaaf759 574 I2Cx_MspInit(i2c_handler);
DL3LD 1:1556bcaaf759 575 HAL_I2C_Init(i2c_handler);
DL3LD 1:1556bcaaf759 576 }
DL3LD 1:1556bcaaf759 577 }
DL3LD 1:1556bcaaf759 578
DL3LD 1:1556bcaaf759 579 /**
DL3LD 1:1556bcaaf759 580 * @brief Reads multiple data.
DL3LD 1:1556bcaaf759 581 * @param i2c_handler : I2C handler
DL3LD 1:1556bcaaf759 582 * @param Addr: I2C address
DL3LD 1:1556bcaaf759 583 * @param Reg: Reg address
DL3LD 1:1556bcaaf759 584 * @param MemAddress: Memory address
DL3LD 1:1556bcaaf759 585 * @param Buffer: Pointer to data buffer
DL3LD 1:1556bcaaf759 586 * @param Length: Length of the data
DL3LD 1:1556bcaaf759 587 * @retval Number of read data
DL3LD 1:1556bcaaf759 588 */
DL3LD 1:1556bcaaf759 589 static HAL_StatusTypeDef I2Cx_ReadMultiple(I2C_HandleTypeDef *i2c_handler,
DL3LD 1:1556bcaaf759 590 uint8_t Addr,
DL3LD 1:1556bcaaf759 591 uint16_t Reg,
DL3LD 1:1556bcaaf759 592 uint16_t MemAddress,
DL3LD 1:1556bcaaf759 593 uint8_t *Buffer,
DL3LD 1:1556bcaaf759 594 uint16_t Length)
DL3LD 1:1556bcaaf759 595 {
DL3LD 1:1556bcaaf759 596 HAL_StatusTypeDef status = HAL_OK;
DL3LD 1:1556bcaaf759 597
DL3LD 1:1556bcaaf759 598 status = HAL_I2C_Mem_Read(i2c_handler, Addr, (uint16_t)Reg, MemAddress, Buffer, Length, 1000);
DL3LD 1:1556bcaaf759 599
DL3LD 1:1556bcaaf759 600 /* Check the communication status */
DL3LD 1:1556bcaaf759 601 if(status != HAL_OK)
DL3LD 1:1556bcaaf759 602 {
DL3LD 1:1556bcaaf759 603 /* I2C error occurred */
DL3LD 1:1556bcaaf759 604 I2Cx_Error(i2c_handler, Addr);
DL3LD 1:1556bcaaf759 605 }
DL3LD 1:1556bcaaf759 606 return status;
DL3LD 1:1556bcaaf759 607 }
DL3LD 1:1556bcaaf759 608
DL3LD 1:1556bcaaf759 609 /**
DL3LD 1:1556bcaaf759 610 * @brief Writes a value in a register of the device through BUS in using DMA mode.
DL3LD 1:1556bcaaf759 611 * @param i2c_handler : I2C handler
DL3LD 1:1556bcaaf759 612 * @param Addr: Device address on BUS Bus.
DL3LD 1:1556bcaaf759 613 * @param Reg: The target register address to write
DL3LD 1:1556bcaaf759 614 * @param MemAddress: Memory address
DL3LD 1:1556bcaaf759 615 * @param Buffer: The target register value to be written
DL3LD 1:1556bcaaf759 616 * @param Length: buffer size to be written
DL3LD 1:1556bcaaf759 617 * @retval HAL status
DL3LD 1:1556bcaaf759 618 */
DL3LD 1:1556bcaaf759 619 static HAL_StatusTypeDef I2Cx_WriteMultiple(I2C_HandleTypeDef *i2c_handler,
DL3LD 1:1556bcaaf759 620 uint8_t Addr,
DL3LD 1:1556bcaaf759 621 uint16_t Reg,
DL3LD 1:1556bcaaf759 622 uint16_t MemAddress,
DL3LD 1:1556bcaaf759 623 uint8_t *Buffer,
DL3LD 1:1556bcaaf759 624 uint16_t Length)
DL3LD 1:1556bcaaf759 625 {
DL3LD 1:1556bcaaf759 626 HAL_StatusTypeDef status = HAL_OK;
DL3LD 1:1556bcaaf759 627
DL3LD 1:1556bcaaf759 628 status = HAL_I2C_Mem_Write(i2c_handler, Addr, (uint16_t)Reg, MemAddress, Buffer, Length, 1000);
DL3LD 1:1556bcaaf759 629
DL3LD 1:1556bcaaf759 630 /* Check the communication status */
DL3LD 1:1556bcaaf759 631 if(status != HAL_OK)
DL3LD 1:1556bcaaf759 632 {
DL3LD 1:1556bcaaf759 633 /* Re-Initiaize the I2C Bus */
DL3LD 1:1556bcaaf759 634 I2Cx_Error(i2c_handler, Addr);
DL3LD 1:1556bcaaf759 635 }
DL3LD 1:1556bcaaf759 636 return status;
DL3LD 1:1556bcaaf759 637 }
DL3LD 1:1556bcaaf759 638
DL3LD 1:1556bcaaf759 639 /**
DL3LD 1:1556bcaaf759 640 * @brief Checks if target device is ready for communication.
DL3LD 1:1556bcaaf759 641 * @note This function is used with Memory devices
DL3LD 1:1556bcaaf759 642 * @param i2c_handler : I2C handler
DL3LD 1:1556bcaaf759 643 * @param DevAddress: Target device address
DL3LD 1:1556bcaaf759 644 * @param Trials: Number of trials
DL3LD 1:1556bcaaf759 645 * @retval HAL status
DL3LD 1:1556bcaaf759 646 */
DL3LD 1:1556bcaaf759 647 static HAL_StatusTypeDef I2Cx_IsDeviceReady(I2C_HandleTypeDef *i2c_handler, uint16_t DevAddress, uint32_t Trials)
DL3LD 1:1556bcaaf759 648 {
DL3LD 1:1556bcaaf759 649 return (HAL_I2C_IsDeviceReady(i2c_handler, DevAddress, Trials, 1000));
DL3LD 1:1556bcaaf759 650 }
DL3LD 1:1556bcaaf759 651
DL3LD 1:1556bcaaf759 652 /**
DL3LD 1:1556bcaaf759 653 * @brief Manages error callback by re-initializing I2C.
DL3LD 1:1556bcaaf759 654 * @param i2c_handler : I2C handler
DL3LD 1:1556bcaaf759 655 * @param Addr: I2C Address
DL3LD 1:1556bcaaf759 656 * @retval None
DL3LD 1:1556bcaaf759 657 */
DL3LD 1:1556bcaaf759 658 static void I2Cx_Error(I2C_HandleTypeDef *i2c_handler, uint8_t Addr)
DL3LD 1:1556bcaaf759 659 {
DL3LD 1:1556bcaaf759 660 /* De-initialize the I2C communication bus */
DL3LD 1:1556bcaaf759 661 HAL_I2C_DeInit(i2c_handler);
DL3LD 1:1556bcaaf759 662
DL3LD 1:1556bcaaf759 663 /* Re-Initialize the I2C communication bus */
DL3LD 1:1556bcaaf759 664 I2Cx_Init(i2c_handler);
DL3LD 1:1556bcaaf759 665 }
DL3LD 1:1556bcaaf759 666
DL3LD 1:1556bcaaf759 667 /*******************************************************************************
DL3LD 1:1556bcaaf759 668 LINK OPERATIONS
DL3LD 1:1556bcaaf759 669 *******************************************************************************/
DL3LD 1:1556bcaaf759 670
DL3LD 1:1556bcaaf759 671 /********************************* LINK AUDIO *********************************/
DL3LD 1:1556bcaaf759 672
DL3LD 1:1556bcaaf759 673 /**
DL3LD 1:1556bcaaf759 674 * @brief Initializes Audio low level.
DL3LD 1:1556bcaaf759 675 * @retval None
DL3LD 1:1556bcaaf759 676 */
DL3LD 1:1556bcaaf759 677 void AUDIO_IO_Init(void)
DL3LD 1:1556bcaaf759 678 {
DL3LD 1:1556bcaaf759 679 I2Cx_Init(&hI2cAudioHandler);
DL3LD 1:1556bcaaf759 680 }
DL3LD 1:1556bcaaf759 681
DL3LD 1:1556bcaaf759 682 /**
DL3LD 1:1556bcaaf759 683 * @brief Deinitializes Audio low level.
DL3LD 1:1556bcaaf759 684 * @retval None
DL3LD 1:1556bcaaf759 685 */
DL3LD 1:1556bcaaf759 686 void AUDIO_IO_DeInit(void)
DL3LD 1:1556bcaaf759 687 {
DL3LD 1:1556bcaaf759 688 }
DL3LD 1:1556bcaaf759 689
DL3LD 1:1556bcaaf759 690 /**
DL3LD 1:1556bcaaf759 691 * @brief Writes a single data.
DL3LD 1:1556bcaaf759 692 * @param Addr: I2C address
DL3LD 1:1556bcaaf759 693 * @param Reg: Reg address
DL3LD 1:1556bcaaf759 694 * @param Value: Data to be written
DL3LD 1:1556bcaaf759 695 * @retval None
DL3LD 1:1556bcaaf759 696 */
DL3LD 1:1556bcaaf759 697 void AUDIO_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value)
DL3LD 1:1556bcaaf759 698 {
DL3LD 1:1556bcaaf759 699 uint16_t tmp = Value;
DL3LD 1:1556bcaaf759 700
DL3LD 1:1556bcaaf759 701 Value = ((uint16_t)(tmp >> 8) & 0x00FF);
DL3LD 1:1556bcaaf759 702
DL3LD 1:1556bcaaf759 703 Value |= ((uint16_t)(tmp << 8)& 0xFF00);
DL3LD 1:1556bcaaf759 704
DL3LD 1:1556bcaaf759 705 I2Cx_WriteMultiple(&hI2cAudioHandler, Addr, Reg, I2C_MEMADD_SIZE_16BIT,(uint8_t*)&Value, 2);
DL3LD 1:1556bcaaf759 706 }
DL3LD 1:1556bcaaf759 707
DL3LD 1:1556bcaaf759 708 /**
DL3LD 1:1556bcaaf759 709 * @brief Reads a single data.
DL3LD 1:1556bcaaf759 710 * @param Addr: I2C address
DL3LD 1:1556bcaaf759 711 * @param Reg: Reg address
DL3LD 1:1556bcaaf759 712 * @retval Data to be read
DL3LD 1:1556bcaaf759 713 */
DL3LD 1:1556bcaaf759 714 uint16_t AUDIO_IO_Read(uint8_t Addr, uint16_t Reg)
DL3LD 1:1556bcaaf759 715 {
DL3LD 1:1556bcaaf759 716 uint16_t read_value = 0, tmp = 0;
DL3LD 1:1556bcaaf759 717
DL3LD 1:1556bcaaf759 718 I2Cx_ReadMultiple(&hI2cAudioHandler, Addr, Reg, I2C_MEMADD_SIZE_16BIT, (uint8_t*)&read_value, 2);
DL3LD 1:1556bcaaf759 719
DL3LD 1:1556bcaaf759 720 tmp = ((uint16_t)(read_value >> 8) & 0x00FF);
DL3LD 1:1556bcaaf759 721
DL3LD 1:1556bcaaf759 722 tmp |= ((uint16_t)(read_value << 8)& 0xFF00);
DL3LD 1:1556bcaaf759 723
DL3LD 1:1556bcaaf759 724 read_value = tmp;
DL3LD 1:1556bcaaf759 725
DL3LD 1:1556bcaaf759 726 return read_value;
DL3LD 1:1556bcaaf759 727 }
DL3LD 1:1556bcaaf759 728
DL3LD 1:1556bcaaf759 729 /**
DL3LD 1:1556bcaaf759 730 * @brief AUDIO Codec delay
DL3LD 1:1556bcaaf759 731 * @param Delay: Delay in ms
DL3LD 1:1556bcaaf759 732 * @retval None
DL3LD 1:1556bcaaf759 733 */
DL3LD 1:1556bcaaf759 734 void AUDIO_IO_Delay(uint32_t Delay)
DL3LD 1:1556bcaaf759 735 {
DL3LD 1:1556bcaaf759 736 //HAL_Delay(Delay);
DL3LD 1:1556bcaaf759 737 wait_ms(Delay);
DL3LD 1:1556bcaaf759 738 }
DL3LD 1:1556bcaaf759 739
DL3LD 1:1556bcaaf759 740 /********************************* LINK CAMERA ********************************/
DL3LD 1:1556bcaaf759 741
DL3LD 1:1556bcaaf759 742 /**
DL3LD 1:1556bcaaf759 743 * @brief Initializes Camera low level.
DL3LD 1:1556bcaaf759 744 * @retval None
DL3LD 1:1556bcaaf759 745 */
DL3LD 1:1556bcaaf759 746 void CAMERA_IO_Init(void)
DL3LD 1:1556bcaaf759 747 {
DL3LD 1:1556bcaaf759 748 I2Cx_Init(&hI2cExtHandler);
DL3LD 1:1556bcaaf759 749 }
DL3LD 1:1556bcaaf759 750
DL3LD 1:1556bcaaf759 751 /**
DL3LD 1:1556bcaaf759 752 * @brief Camera writes single data.
DL3LD 1:1556bcaaf759 753 * @param Addr: I2C address
DL3LD 1:1556bcaaf759 754 * @param Reg: Register address
DL3LD 1:1556bcaaf759 755 * @param Value: Data to be written
DL3LD 1:1556bcaaf759 756 * @retval None
DL3LD 1:1556bcaaf759 757 */
DL3LD 1:1556bcaaf759 758 void CAMERA_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
DL3LD 1:1556bcaaf759 759 {
DL3LD 1:1556bcaaf759 760 I2Cx_WriteMultiple(&hI2cExtHandler, Addr, (uint16_t)Reg, I2C_MEMADD_SIZE_8BIT,(uint8_t*)&Value, 1);
DL3LD 1:1556bcaaf759 761 }
DL3LD 1:1556bcaaf759 762
DL3LD 1:1556bcaaf759 763 /**
DL3LD 1:1556bcaaf759 764 * @brief Camera reads single data.
DL3LD 1:1556bcaaf759 765 * @param Addr: I2C address
DL3LD 1:1556bcaaf759 766 * @param Reg: Register address
DL3LD 1:1556bcaaf759 767 * @retval Read data
DL3LD 1:1556bcaaf759 768 */
DL3LD 1:1556bcaaf759 769 uint8_t CAMERA_IO_Read(uint8_t Addr, uint8_t Reg)
DL3LD 1:1556bcaaf759 770 {
DL3LD 1:1556bcaaf759 771 uint8_t read_value = 0;
DL3LD 1:1556bcaaf759 772
DL3LD 1:1556bcaaf759 773 I2Cx_ReadMultiple(&hI2cExtHandler, Addr, Reg, I2C_MEMADD_SIZE_8BIT, (uint8_t*)&read_value, 1);
DL3LD 1:1556bcaaf759 774
DL3LD 1:1556bcaaf759 775 return read_value;
DL3LD 1:1556bcaaf759 776 }
DL3LD 1:1556bcaaf759 777
DL3LD 1:1556bcaaf759 778 /**
DL3LD 1:1556bcaaf759 779 * @brief Camera delay
DL3LD 1:1556bcaaf759 780 * @param Delay: Delay in ms
DL3LD 1:1556bcaaf759 781 * @retval None
DL3LD 1:1556bcaaf759 782 */
DL3LD 1:1556bcaaf759 783 void CAMERA_Delay(uint32_t Delay)
DL3LD 1:1556bcaaf759 784 {
DL3LD 1:1556bcaaf759 785 //HAL_Delay(Delay);
DL3LD 1:1556bcaaf759 786 wait_ms(Delay);
DL3LD 1:1556bcaaf759 787 }
DL3LD 1:1556bcaaf759 788
DL3LD 1:1556bcaaf759 789 /******************************** LINK I2C EEPROM *****************************/
DL3LD 1:1556bcaaf759 790
DL3LD 1:1556bcaaf759 791 /**
DL3LD 1:1556bcaaf759 792 * @brief Initializes peripherals used by the I2C EEPROM driver.
DL3LD 1:1556bcaaf759 793 * @retval None
DL3LD 1:1556bcaaf759 794 */
DL3LD 1:1556bcaaf759 795 void EEPROM_IO_Init(void)
DL3LD 1:1556bcaaf759 796 {
DL3LD 1:1556bcaaf759 797 I2Cx_Init(&hI2cExtHandler);
DL3LD 1:1556bcaaf759 798 }
DL3LD 1:1556bcaaf759 799
DL3LD 1:1556bcaaf759 800 /**
DL3LD 1:1556bcaaf759 801 * @brief Write data to I2C EEPROM driver in using DMA channel.
DL3LD 1:1556bcaaf759 802 * @param DevAddress: Target device address
DL3LD 1:1556bcaaf759 803 * @param MemAddress: Internal memory address
DL3LD 1:1556bcaaf759 804 * @param pBuffer: Pointer to data buffer
DL3LD 1:1556bcaaf759 805 * @param BufferSize: Amount of data to be sent
DL3LD 1:1556bcaaf759 806 * @retval HAL status
DL3LD 1:1556bcaaf759 807 */
DL3LD 1:1556bcaaf759 808 HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize)
DL3LD 1:1556bcaaf759 809 {
DL3LD 1:1556bcaaf759 810 return (I2Cx_WriteMultiple(&hI2cExtHandler, DevAddress, MemAddress, I2C_MEMADD_SIZE_16BIT, pBuffer, BufferSize));
DL3LD 1:1556bcaaf759 811 }
DL3LD 1:1556bcaaf759 812
DL3LD 1:1556bcaaf759 813 /**
DL3LD 1:1556bcaaf759 814 * @brief Read data from I2C EEPROM driver in using DMA channel.
DL3LD 1:1556bcaaf759 815 * @param DevAddress: Target device address
DL3LD 1:1556bcaaf759 816 * @param MemAddress: Internal memory address
DL3LD 1:1556bcaaf759 817 * @param pBuffer: Pointer to data buffer
DL3LD 1:1556bcaaf759 818 * @param BufferSize: Amount of data to be read
DL3LD 1:1556bcaaf759 819 * @retval HAL status
DL3LD 1:1556bcaaf759 820 */
DL3LD 1:1556bcaaf759 821 HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize)
DL3LD 1:1556bcaaf759 822 {
DL3LD 1:1556bcaaf759 823 return (I2Cx_ReadMultiple(&hI2cExtHandler, DevAddress, MemAddress, I2C_MEMADD_SIZE_16BIT, pBuffer, BufferSize));
DL3LD 1:1556bcaaf759 824 }
DL3LD 1:1556bcaaf759 825
DL3LD 1:1556bcaaf759 826 /**
DL3LD 1:1556bcaaf759 827 * @brief Checks if target device is ready for communication.
DL3LD 1:1556bcaaf759 828 * @note This function is used with Memory devices
DL3LD 1:1556bcaaf759 829 * @param DevAddress: Target device address
DL3LD 1:1556bcaaf759 830 * @param Trials: Number of trials
DL3LD 1:1556bcaaf759 831 * @retval HAL status
DL3LD 1:1556bcaaf759 832 */
DL3LD 1:1556bcaaf759 833 HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials)
DL3LD 1:1556bcaaf759 834 {
DL3LD 1:1556bcaaf759 835 return (I2Cx_IsDeviceReady(&hI2cExtHandler, DevAddress, Trials));
DL3LD 1:1556bcaaf759 836 }
DL3LD 1:1556bcaaf759 837
DL3LD 1:1556bcaaf759 838 /********************************* LINK TOUCHSCREEN *********************************/
DL3LD 1:1556bcaaf759 839
DL3LD 1:1556bcaaf759 840 /**
DL3LD 1:1556bcaaf759 841 * @brief Initializes Touchscreen low level.
DL3LD 1:1556bcaaf759 842 * @retval None
DL3LD 1:1556bcaaf759 843 */
DL3LD 1:1556bcaaf759 844 void TS_IO_Init(void)
DL3LD 1:1556bcaaf759 845 {
DL3LD 1:1556bcaaf759 846 I2Cx_Init(&hI2cAudioHandler);
DL3LD 1:1556bcaaf759 847 }
DL3LD 1:1556bcaaf759 848
DL3LD 1:1556bcaaf759 849 /**
DL3LD 1:1556bcaaf759 850 * @brief Writes a single data.
DL3LD 1:1556bcaaf759 851 * @param Addr: I2C address
DL3LD 1:1556bcaaf759 852 * @param Reg: Reg address
DL3LD 1:1556bcaaf759 853 * @param Value: Data to be written
DL3LD 1:1556bcaaf759 854 * @retval None
DL3LD 1:1556bcaaf759 855 */
DL3LD 1:1556bcaaf759 856 void TS_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
DL3LD 1:1556bcaaf759 857 {
DL3LD 1:1556bcaaf759 858 I2Cx_WriteMultiple(&hI2cAudioHandler, Addr, (uint16_t)Reg, I2C_MEMADD_SIZE_8BIT,(uint8_t*)&Value, 1);
DL3LD 1:1556bcaaf759 859 }
DL3LD 1:1556bcaaf759 860
DL3LD 1:1556bcaaf759 861 /**
DL3LD 1:1556bcaaf759 862 * @brief Reads a single data.
DL3LD 1:1556bcaaf759 863 * @param Addr: I2C address
DL3LD 1:1556bcaaf759 864 * @param Reg: Reg address
DL3LD 1:1556bcaaf759 865 * @retval Data to be read
DL3LD 1:1556bcaaf759 866 */
DL3LD 1:1556bcaaf759 867 uint8_t TS_IO_Read(uint8_t Addr, uint8_t Reg)
DL3LD 1:1556bcaaf759 868 {
DL3LD 1:1556bcaaf759 869 uint8_t read_value = 0;
DL3LD 1:1556bcaaf759 870
DL3LD 1:1556bcaaf759 871 I2Cx_ReadMultiple(&hI2cAudioHandler, Addr, Reg, I2C_MEMADD_SIZE_8BIT, (uint8_t*)&read_value, 1);
DL3LD 1:1556bcaaf759 872
DL3LD 1:1556bcaaf759 873 return read_value;
DL3LD 1:1556bcaaf759 874 }
DL3LD 1:1556bcaaf759 875
DL3LD 1:1556bcaaf759 876 /**
DL3LD 1:1556bcaaf759 877 * @brief TS delay
DL3LD 1:1556bcaaf759 878 * @param Delay: Delay in ms
DL3LD 1:1556bcaaf759 879 * @retval None
DL3LD 1:1556bcaaf759 880 */
DL3LD 1:1556bcaaf759 881 void TS_IO_Delay(uint32_t Delay)
DL3LD 1:1556bcaaf759 882 {
DL3LD 1:1556bcaaf759 883 //HAL_Delay(Delay);
DL3LD 1:1556bcaaf759 884 wait_ms(Delay);
DL3LD 1:1556bcaaf759 885 }
DL3LD 1:1556bcaaf759 886
DL3LD 1:1556bcaaf759 887 /**
DL3LD 1:1556bcaaf759 888 * @}
DL3LD 1:1556bcaaf759 889 */
DL3LD 1:1556bcaaf759 890
DL3LD 1:1556bcaaf759 891 /**
DL3LD 1:1556bcaaf759 892 * @}
DL3LD 1:1556bcaaf759 893 */
DL3LD 1:1556bcaaf759 894
DL3LD 1:1556bcaaf759 895 /**
DL3LD 1:1556bcaaf759 896 * @}
DL3LD 1:1556bcaaf759 897 */
DL3LD 1:1556bcaaf759 898
DL3LD 1:1556bcaaf759 899 /**
DL3LD 1:1556bcaaf759 900 * @}
DL3LD 1:1556bcaaf759 901 */
DL3LD 1:1556bcaaf759 902
DL3LD 1:1556bcaaf759 903 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
DL3LD 1:1556bcaaf759 904