38
+ − 1 ///////////////////////////////////////////////////////////////////////////////
+ − 2 /// -*- coding: UTF-8 -*-
+ − 3 ///
+ − 4 /// \file Discovery/Inc/stm32f429i_discovery.h
+ − 5 /// \brief I2C EEPROM Interface pins
+ − 6 /// \author MCD Application Team
+ − 7 /// \date 26-February-2014
+ − 8 ///
+ − 9 /// $Id$
+ − 10 ///////////////////////////////////////////////////////////////////////////////
+ − 11 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
+ − 12 ///
+ − 13 /// This program is free software: you can redistribute it and/or modify
+ − 14 /// it under the terms of the GNU General Public License as published by
+ − 15 /// the Free Software Foundation, either version 3 of the License, or
+ − 16 /// (at your option) any later version.
+ − 17 ///
+ − 18 /// This program is distributed in the hope that it will be useful,
+ − 19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
+ − 20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ − 21 /// GNU General Public License for more details.
+ − 22 ///
+ − 23 /// You should have received a copy of the GNU General Public License
+ − 24 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
+ − 25 //////////////////////////////////////////////////////////////////////////////
+ − 26 /// \par COPYRIGHT(c) 2014 STMicroelectronics
+ − 27 ///
+ − 28 /// Redistribution and use in source and binary forms, with or without modification,
+ − 29 /// are permitted provided that the following conditions are met:
+ − 30 /// 1. Redistributions of source code must retain the above copyright notice,
+ − 31 /// this list of conditions and the following disclaimer.
+ − 32 /// 2. Redistributions in binary form must reproduce the above copyright notice,
+ − 33 /// this list of conditions and the following disclaimer in the documentation
+ − 34 /// and/or other materials provided with the distribution.
+ − 35 /// 3. Neither the name of STMicroelectronics nor the names of its contributors
+ − 36 /// may be used to endorse or promote products derived from this software
+ − 37 /// without specific prior written permission.
+ − 38 ///
+ − 39 /// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ − 40 /// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ − 41 /// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ − 42 /// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ − 43 /// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ − 44 /// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ − 45 /// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ − 46 /// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ − 47 /// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ − 48 /// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ − 49 //////////////////////////////////////////////////////////////////////////////
+ − 50
+ − 51 /* Define to prevent recursive inclusion -------------------------------------*/
+ − 52 #ifndef STM32F429I_DISCOVERY_H
+ − 53 #define STM32F429I_DISCOVERY_H
+ − 54
+ − 55 /* Includes ------------------------------------------------------------------*/
+ − 56 #include "stm32f4xx_hal.h"
+ − 57
+ − 58 typedef enum
+ − 59 {
+ − 60 LED3 = 0,
+ − 61 LED4 = 1
+ − 62 } Led_TypeDef;
+ − 63
+ − 64 typedef enum
+ − 65 {
+ − 66 BUTTON_KEY = 0,
+ − 67 } Button_TypeDef;
+ − 68
+ − 69 typedef enum
+ − 70 {
+ − 71 BUTTON_MODE_GPIO = 0,
+ − 72 BUTTON_MODE_EXTI = 1
+ − 73 } ButtonMode_TypeDef;
+ − 74
+ − 75 #if !defined (USE_STM32F429I_DISCO)
+ − 76 #define USE_STM32F429I_DISCO
+ − 77 #endif
+ − 78
+ − 79 #define LEDn 2
+ − 80
+ − 81 #define LED3_PIN GPIO_PIN_13
+ − 82 #define LED3_GPIO_PORT GPIOG
+ − 83 #define LED3_GPIO_CLK_ENABLE() __GPIOG_CLK_ENABLE()
+ − 84 #define LED3_GPIO_CLK_DISABLE() __GPIOG_CLK_DISABLE()
+ − 85
+ − 86
+ − 87 #define LED4_PIN GPIO_PIN_14
+ − 88 #define LED4_GPIO_PORT GPIOG
+ − 89 #define LED4_GPIO_CLK_ENABLE() __GPIOG_CLK_ENABLE()
+ − 90 #define LED4_GPIO_CLK_DISABLE() __GPIOG_CLK_DISABLE()
+ − 91
+ − 92 #define LEDx_GPIO_CLK_ENABLE(__INDEX__) (((__INDEX__) == 0) ? LED3_GPIO_CLK_ENABLE() : LED4_GPIO_CLK_ENABLE())
+ − 93 #define LEDx_GPIO_CLK_DISABLE(__INDEX__) (((__INDEX__) == 0) ? LED3_GPIO_CLK_DISABLE() : LED4_GPIO_CLK_DISABLE())
+ − 94
+ − 95 #define BUTTONn 1
+ − 96
+ − 97 /**
+ − 98 * @brief Wakeup push-button
+ − 99 */
+ − 100 #define KEY_BUTTON_PIN GPIO_PIN_0
+ − 101 #define KEY_BUTTON_GPIO_PORT GPIOA
+ − 102 #define KEY_BUTTON_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE()
+ − 103 #define KEY_BUTTON_GPIO_CLK_DISABLE() __GPIOA_CLK_DISABLE()
+ − 104 #define KEY_BUTTON_EXTI_IRQn EXTI0_IRQn
+ − 105
+ − 106 #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) (KEY_BUTTON_GPIO_CLK_ENABLE())
+ − 107 #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) (KEY_BUTTON_GPIO_CLK_DISABLE())
+ − 108
+ − 109 /* Exported constanIO --------------------------------------------------------*/
+ − 110 #define IO_I2C_ADDRESS 0x82
+ − 111 #define TS_I2C_ADDRESS 0x82
+ − 112
+ − 113 #ifdef EE_M24LR64
+ − 114 #define EEPROM_I2C_ADDRESS_A01 0xA0
+ − 115 #define EEPROM_I2C_ADDRESS_A02 0xA6
+ − 116 #endif /* EE_M24LR64 */
+ − 117
+ − 118
+ − 119 /*##################### I2Cx ###################################*/
+ − 120 /* User can use this section to tailor I2Cx instance used and associated
+ − 121 resources */
+ − 122 #define DISCOVERY_I2Cx I2C3
+ − 123 #define DISCOVERY_I2Cx_CLOCK_ENABLE() __I2C3_CLK_ENABLE()
+ − 124 #define DISCOVERY_I2Cx_FORCE_RESET() __I2C3_FORCE_RESET()
+ − 125 #define DISCOVERY_I2Cx_RELEASE_RESET() __I2C3_RELEASE_RESET()
+ − 126 #define DISCOVERY_I2Cx_SDA_GPIO_CLK_ENABLE() __GPIOC_CLK_ENABLE()
+ − 127 #define DISCOVERY_I2Cx_SCL_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE()
+ − 128 #define DISCOVERY_I2Cx_SDA_GPIO_CLK_DISABLE() __GPIOC_CLK_DISABLE()
+ − 129
+ − 130 /* Definition for DISCO I2Cx Pins */
+ − 131 #define DISCOVERY_I2Cx_SCL_PIN GPIO_PIN_8
+ − 132 #define DISCOVERY_I2Cx_SCL_GPIO_PORT GPIOA
+ − 133 #define DISCOVERY_I2Cx_SCL_SDA_AF GPIO_AF4_I2C3
+ − 134 #define DISCOVERY_I2Cx_SDA_PIN GPIO_PIN_9
+ − 135 #define DISCOVERY_I2Cx_SDA_GPIO_PORT GPIOC
+ − 136
+ − 137 /* Definition for IOE I2Cx's NVIC */
+ − 138 #define DISCOVERY_I2Cx_EV_IRQn I2C3_EV_IRQn
+ − 139 #define DISCOVERY_I2Cx_ER_IRQn I2C3_ER_IRQn
+ − 140
+ − 141 /* I2C clock speed configuration (in Hz)
+ − 142 WARNING:
+ − 143 Make sure that this define is not already declared in other files (ie.
+ − 144 stm324x9i_disco.h file). It can be used in parallel by other modules. */
+ − 145 #ifndef I2C_SPEED
+ − 146 #define I2C_SPEED 100000
+ − 147 #endif /* I2C_SPEED */
+ − 148
+ − 149 #define I2Cx_TIMEOUT_MAX 0x3000 /*<! The value of the maximal timeout for I2C waiting loops */
+ − 150
+ − 151 /*##################### SPIx ###################################*/
+ − 152 #define DISCOVERY_SPIx SPI5
+ − 153 #define DISCOVERY_SPIx_CLK_ENABLE() __SPI5_CLK_ENABLE()
+ − 154 #define DISCOVERY_SPIx_GPIO_PORT GPIOF /* GPIOF */
+ − 155 #define DISCOVERY_SPIx_AF GPIO_AF5_SPI5
+ − 156 #define DISCOVERY_SPIx_GPIO_CLK_ENABLE() __GPIOF_CLK_ENABLE()
+ − 157 #define DISCOVERY_SPIx_GPIO_CLK_DISABLE() __GPIOF_CLK_DISABLE()
+ − 158 #define DISCOVERY_SPIx_SCK_PIN GPIO_PIN_7 /* PF.07 */
+ − 159 #define DISCOVERY_SPIx_MISO_PIN GPIO_PIN_8 /* PF.08 */
+ − 160 #define DISCOVERY_SPIx_MOSI_PIN GPIO_PIN_9 /* PF.09 */
+ − 161 /* Maximum Timeout values for flags waiting loops. These timeouts are not based
+ − 162 on accurate values, they just guarantee that the application will not remain
+ − 163 stuck if the SPI communication is corrupted.
+ − 164 You may modify these timeout values depending on CPU frequency and application
+ − 165 conditions (interrupts routines ...). */
+ − 166 #define SPIx_TIMEOUT_MAX ((uint32_t)0x1000)
+ − 167
+ − 168
+ − 169 /*##################### IOE ###################################*/
+ − 170 /**
+ − 171 * @brief IOE Control pin
+ − 172 */
+ − 173 /* Definition for external IT for STMPE811 */
+ − 174 #define STMPE811_INT_PIN GPIO_PIN_15
+ − 175 #define STMPE811_INT_GPIO_PORT GPIOA
+ − 176 #define STMPE811_INT_CLK_ENABLE() __GPIOA_CLK_ENABLE()
+ − 177 #define STMPE811_INT_CLK_DISABLE() __GPIOA_CLK_DISABLE()
+ − 178 #define STMPE811_INT_EXTI EXTI15_10_IRQn
+ − 179 #define STMPE811_INT_EXTIHandler EXTI15_10_IRQHandler
+ − 180
+ − 181 /*##################### LCD ###################################*/
+ − 182 /* Chip Select macro definition */
+ − 183 #define LCD_CS_LOW() HAL_GPIO_WritePin(LCD_NCS_GPIO_PORT, LCD_NCS_PIN, GPIO_PIN_RESET)
+ − 184 #define LCD_CS_HIGH() HAL_GPIO_WritePin(LCD_NCS_GPIO_PORT, LCD_NCS_PIN, GPIO_PIN_SET)
+ − 185
+ − 186 /* Set WRX High to send data */
+ − 187 #define LCD_WRX_LOW() HAL_GPIO_WritePin(LCD_WRX_GPIO_PORT, LCD_WRX_PIN, GPIO_PIN_RESET)
+ − 188 #define LCD_WRX_HIGH() HAL_GPIO_WritePin(LCD_WRX_GPIO_PORT, LCD_WRX_PIN, GPIO_PIN_SET)
+ − 189
+ − 190 /* Set WRX High to send data */
+ − 191 #define LCD_RDX_LOW() HAL_GPIO_WritePin(LCD_RDX_GPIO_PORT, LCD_RDX_PIN, GPIO_PIN_RESET)
+ − 192 #define LCD_RDX_HIGH() HAL_GPIO_WritePin(LCD_RDX_GPIO_PORT, LCD_RDX_PIN, GPIO_PIN_SET)
+ − 193
+ − 194 /**
+ − 195 * @brief LCD Control pin
+ − 196 */
+ − 197 #define LCD_NCS_PIN GPIO_PIN_2
+ − 198 #define LCD_NCS_GPIO_PORT GPIOC
+ − 199 #define LCD_NCS_GPIO_CLK_ENABLE() __GPIOC_CLK_ENABLE()
+ − 200 #define LCD_NCS_GPIO_CLK_DISABLE() __GPIOC_CLK_DISABLE()
+ − 201
+ − 202 /**
+ − 203 * @brief LCD Command/data pin
+ − 204 */
+ − 205 #define LCD_WRX_PIN GPIO_PIN_13
+ − 206 #define LCD_WRX_GPIO_PORT GPIOD
+ − 207 #define LCD_WRX_GPIO_CLK_ENABLE() __GPIOD_CLK_ENABLE()
+ − 208 #define LCD_WRX_GPIO_CLK_DISABLE() __GPIOD_CLK_DISABLE()
+ − 209
+ − 210 #define LCD_RDX_PIN GPIO_PIN_12
+ − 211 #define LCD_RDX_GPIO_PORT GPIOD
+ − 212 #define LCD_RDX_GPIO_CLK_ENABLE() __GPIOD_CLK_ENABLE()
+ − 213 #define LCD_RDX_GPIO_CLK_DISABLE() __GPIOD_CLK_DISABLE()
+ − 214
+ − 215 /*##################### GYRO ##########################*/
+ − 216 /* Read/Write command */
+ − 217 #define READWRITE_CMD ((uint8_t)0x80)
+ − 218 /* Multiple byte read/write command */
+ − 219 #define MULTIPLEBYTE_CMD ((uint8_t)0x40)
+ − 220 /* Dummy Byte Send by the SPI Master device in order to generate the Clock to the Slave device */
+ − 221 #define DUMMY_BYTE ((uint8_t)0x00)
+ − 222
+ − 223 /* Chip Select macro definition */
+ − 224 #define GYRO_CS_LOW() HAL_GPIO_WritePin(GYRO_CS_GPIO_PORT, GYRO_CS_PIN, GPIO_PIN_RESET)
+ − 225 #define GYRO_CS_HIGH() HAL_GPIO_WritePin(GYRO_CS_GPIO_PORT, GYRO_CS_PIN, GPIO_PIN_SET)
+ − 226
+ − 227 /**
+ − 228 * @brief GYRO SPI Interface pins
+ − 229 */
+ − 230 #define GYRO_CS_PIN GPIO_PIN_1 /* PC.01 */
+ − 231 #define GYRO_CS_GPIO_PORT GPIOC /* GPIOC */
+ − 232 #define GYRO_CS_GPIO_CLK_ENABLE() __GPIOC_CLK_ENABLE()
+ − 233 #define GYRO_CS_GPIO_CLK_DISABLE() __GPIOC_CLK_DISABLE()
+ − 234
+ − 235 #define GYRO_INT_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE()
+ − 236 #define GYRO_INT_GPIO_CLK_DISABLE() __GPIOA_CLK_DISABLE()
+ − 237 #define GYRO_INT_GPIO_PORT GPIOA /* GPIOA */
+ − 238 #define GYRO_INT1_PIN GPIO_PIN_1 /* PA.01 */
+ − 239 #define GYRO_INT1_EXTI_IRQn EXTI1_IRQn
+ − 240 #define GYRO_INT2_PIN GPIO_PIN_2 /* PA.02 */
+ − 241 #define GYRO_INT2_EXTI_IRQn EXTI2_IRQn
+ − 242
+ − 243 #ifdef EE_M24LR64
+ − 244
+ − 245 /**
+ − 246 * @brief I2C EEPROM Interface pins
+ − 247 */
+ − 248 #define EEPROM_I2C_DMA DMA1
+ − 249 #define EEPROM_I2C_DMA_CHANNEL DMA_CHANNEL_3
+ − 250 #define EEPROM_I2C_DMA_STREAM_TX DMA1_Stream4
+ − 251 #define EEPROM_I2C_DMA_STREAM_RX DMA1_Stream2
+ − 252 #define EEPROM_I2C_DMA_CLK_ENABLE() __DMA1_CLK_ENABLE()
+ − 253
+ − 254 #define EEPROM_I2C_DMA_TX_IRQn DMA1_Stream4_IRQn
+ − 255 #define EEPROM_I2C_DMA_RX_IRQn DMA1_Stream2_IRQn
+ − 256 #define EEPROM_I2C_DMA_TX_IRQHandler DMA1_Stream4_IRQHandler
+ − 257 #define EEPROM_I2C_DMA_RX_IRQHandler DMA1_Stream2_IRQHandler
+ − 258 #define EEPROM_I2C_DMA_PREPRIO 0
+ − 259
+ − 260 #endif /*EE_M24LR64*/
+ − 261
+ − 262 uint32_t BSP_GetVersion(void);
+ − 263 void BSP_LED_Init(Led_TypeDef Led);
+ − 264 void BSP_LED_On(Led_TypeDef Led);
+ − 265 void BSP_LED_Off(Led_TypeDef Led);
+ − 266 void BSP_LED_Toggle(Led_TypeDef Led);
+ − 267 void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode);
+ − 268 uint32_t BSP_PB_GetState(Button_TypeDef Button);
+ − 269
+ − 270 #endif /* STM32F429I_DISCOVERY_H */