comparison Discovery/Inc/stm32f429i_discovery.h @ 38:5f11787b4f42

include in ostc4 repository
author heinrichsweikamp
date Sat, 28 Apr 2018 11:52:34 +0200
parents
children
comparison
equal deleted inserted replaced
37:ccc45c0e1ea2 38:5f11787b4f42
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 */