-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstm32f769i_discovery.h
340 lines (276 loc) · 9.95 KB
/
stm32f769i_discovery.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
/**
******************************************************************************
* @file stm32f769i_discovery.h
* @author MCD Application Team
* @brief This file contains definitions for STM32F769I-Discovery LEDs,
* push-buttons hardware resources.
******************************************************************************
* @attention
*
* Copyright (c) 2016 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* IMPORTANT: One of the following flags must be defined in the preprocessor */
/* options in order to select the target board revision: !!!!!!!!!! */
/* USE_STM32F769I_DISCO */ /* Applicable for all boards except STM32F769I DISCOVERY REVB03 */
/* USE_STM32F769I_DISCO_REVB03 */ /* Applicable only for STM32F769I DISCOVERY w/ MB1166-A09 LCD daughter board connected on */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM32F769I_DISCOVERY_H
#define __STM32F769I_DISCOVERY_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "stm32f7xx_hal.h"
/** @addtogroup BSP
* @{
*/
/** @addtogroup STM32F769I_DISCOVERY
* @{
*/
/** @defgroup STM32F769I_DISCOVERY_LOW_LEVEL STM32F769I-Discovery LOW LEVEL
* @{
*/
/** @defgroup STM32F769I_DISCOVERY_LOW_LEVEL_Exported_Types STM32F769I Discovery Low Level Exported Types
* @{
*/
/**
* @brief Define for STM32F769I_DISCOVERY board
*/
#if !defined(USE_STM32F769I_DISCO) && \
!defined(USE_STM32F769I_DISCO_REVB03)
#define USE_STM32F769I_DISCO
#endif
/** @brief Led_TypeDef
* STM32F769I_DISCOVERY board leds definitions.
*/
typedef enum
{
LED1 = 0,
LED_RED = LED1,
LED2 = 1,
LED_GREEN = LED2
} Led_TypeDef;
/** @brief Button_TypeDef
* STM32F769I_DISCOVERY board Buttons definitions.
*/
typedef enum
{
BUTTON_WAKEUP = 0,
} Button_TypeDef;
#define BUTTON_USER BUTTON_WAKEUP
/** @brief ButtonMode_TypeDef
* STM32F769I_DISCOVERY board Buttons Modes definitions.
*/
typedef enum
{
BUTTON_MODE_GPIO = 0,
BUTTON_MODE_EXTI = 1
} ButtonMode_TypeDef;
/** @addtogroup Exported_types
* @{
*/
typedef enum
{
PB_SET = 0,
PB_RESET = !PB_SET
} ButtonValue_TypeDef;
/** @brief DISCO_Status_TypeDef
* STM32F769I_DISCO board Status return possible values.
*/
typedef enum
{
DISCO_OK = 0,
DISCO_ERROR = 1
} DISCO_Status_TypeDef;
/**
* @}
*/
/** @defgroup STM32F769I_DISCOVERY_LOW_LEVEL_Exported_Constants STM32F769I Discovery Low Level Exported Constants
* @{
*/
/** @addtogroup STM32F769I_DISCOVERY_LOW_LEVEL_LED STM32F769I Discovery Low Level Led
* @{
*/
/* Always four leds for all revisions of Discovery boards */
#define LEDn ((uint8_t)2)
/* 2 Leds are connected to MCU directly on PJ13 and PJ5 */
#define LED1_GPIO_PORT ((GPIO_TypeDef*)GPIOJ)
#define LED2_GPIO_PORT ((GPIO_TypeDef*)GPIOJ)
#define LEDx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOJ_CLK_ENABLE()
#define LEDx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOJ_CLK_DISABLE()
#define LED1_PIN ((uint32_t)GPIO_PIN_13)
#define LED2_PIN ((uint32_t)GPIO_PIN_5)
/**
* @}
*/
/** @addtogroup STM32F769I_DISCOVERY_LOW_LEVEL_BUTTON STM32F769I Discovery Low Level Button
* @{
*/
/* Only one User/Wakeup button */
#define BUTTONn ((uint8_t)1)
/**
* @brief Wakeup push-button
*/
#define WAKEUP_BUTTON_PIN GPIO_PIN_0
#define WAKEUP_BUTTON_GPIO_PORT GPIOA
#define WAKEUP_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
#define WAKEUP_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
#define WAKEUP_BUTTON_EXTI_IRQn EXTI0_IRQn
/* Define the USER button as an alias of the Wakeup button */
#define USER_BUTTON_PIN WAKEUP_BUTTON_PIN
#define USER_BUTTON_GPIO_PORT WAKEUP_BUTTON_GPIO_PORT
#define USER_BUTTON_GPIO_CLK_ENABLE() WAKEUP_BUTTON_GPIO_CLK_ENABLE()
#define USER_BUTTON_GPIO_CLK_DISABLE() WAKEUP_BUTTON_GPIO_CLK_DISABLE()
#define USER_BUTTON_EXTI_IRQn WAKEUP_BUTTON_EXTI_IRQn
#define BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
/**
* @}
*/
/**
* @brief USB OTG HS Over Current signal
*/
#define OTG_HS_OVER_CURRENT_PIN GPIO_PIN_4
#define OTG_HS_OVER_CURRENT_PORT GPIOD
#define OTG_HS_OVER_CURRENT_PORT_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
/**
* @brief SD-detect signal
*/
#define SD_DETECT_PIN ((uint32_t)GPIO_PIN_15)
#define SD_DETECT_GPIO_PORT ((GPIO_TypeDef*)GPIOI)
#define SD_DETECT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE()
#define SD_DETECT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOI_CLK_DISABLE()
#define SD_DETECT_EXTI_IRQn EXTI15_10_IRQn
/**
* @brief Touch screen interrupt signal
*/
#define TS_INT_PIN ((uint32_t)GPIO_PIN_13)
#define TS_INT_GPIO_PORT ((GPIO_TypeDef*)GPIOI)
#define TS_INT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE()
#define TS_INT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOI_CLK_DISABLE()
#define TS_INT_EXTI_IRQn EXTI15_10_IRQn
/**
* @brief TouchScreen FT6206 Slave I2C address 1
*/
#define TS_I2C_ADDRESS ((uint16_t)0x54)
/**
* @brief TouchScreen FT6336G Slave I2C address 2
*/
#define TS_I2C_ADDRESS_A02 ((uint16_t)0x70)
/**
* @brief LCD DSI Slave I2C address 1
*/
#define LCD_DSI_ADDRESS TS_I2C_ADDRESS
/**
* @brief LCD DSI Slave I2C address 2
*/
#define LCD_DSI_ADDRESS_A02 TS_I2C_ADDRESS_A02
/**
* @brief Audio I2C Slave address
*/
#define AUDIO_I2C_ADDRESS ((uint16_t)0x34)
/**
* @brief EEPROM I2C Slave address 1
*/
#define EEPROM_I2C_ADDRESS_A01 ((uint16_t)0xA0)
/**
* @brief EEPROM I2C Slave address 2
*/
#define EEPROM_I2C_ADDRESS_A02 ((uint16_t)0xA6)
/**
* @brief User can use this section to tailor I2C4/I2C4 instance used and associated
* resources (audio codec).
* Definition for I2C4 clock resources
*/
#define DISCOVERY_AUDIO_I2Cx I2C4
#define DISCOVERY_AUDIO_I2Cx_CLK_ENABLE() __HAL_RCC_I2C4_CLK_ENABLE()
#define DISCOVERY_AUDIO_I2Cx_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
#define DISCOVERY_AUDIO_I2Cx_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
#define DISCOVERY_AUDIO_I2Cx_FORCE_RESET() __HAL_RCC_I2C4_FORCE_RESET()
#define DISCOVERY_AUDIO_I2Cx_RELEASE_RESET() __HAL_RCC_I2C4_RELEASE_RESET()
/** @brief Definition for I2C4 Pins
*/
#define DISCOVERY_AUDIO_I2Cx_SCL_PIN GPIO_PIN_12 /*!< PD12 */
#define DISCOVERY_AUDIO_I2Cx_SCL_AF GPIO_AF4_I2C4
#define DISCOVERY_AUDIO_I2Cx_SCL_GPIO_PORT GPIOD
#define DISCOVERY_AUDIO_I2Cx_SDA_PIN GPIO_PIN_7 /*!< PB7 */
#define DISCOVERY_AUDIO_I2Cx_SDA_AF GPIO_AF11_I2C4
#define DISCOVERY_AUDIO_I2Cx_SDA_GPIO_PORT GPIOB
/** @brief Definition of I2C4 interrupt requests
*/
#define DISCOVERY_AUDIO_I2Cx_EV_IRQn I2C4_EV_IRQn
#define DISCOVERY_AUDIO_I2Cx_ER_IRQn I2C4_ER_IRQn
/**
* @brief User can use this section to tailor I2C1/I2C1 instance used and associated
* resources.
* Definition for I2C1 clock resources
*/
#define DISCOVERY_EXT_I2Cx I2C1
#define DISCOVERY_EXT_I2Cx_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE()
#define DISCOVERY_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
#define DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
#define DISCOVERY_EXT_I2Cx_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
#define DISCOVERY_EXT_I2Cx_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
/** @brief Definition for I2C1 Pins
*/
#define DISCOVERY_EXT_I2Cx_SCL_PIN GPIO_PIN_8 /*!< PB8 */
#define DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_PORT GPIOB
#define DISCOVERY_EXT_I2Cx_SCL_SDA_AF GPIO_AF4_I2C1
#define DISCOVERY_EXT_I2Cx_SDA_PIN GPIO_PIN_9 /*!< PB9 */
/** @brief Definition of I2C interrupt requests
*/
#define DISCOVERY_EXT_I2Cx_EV_IRQn I2C1_EV_IRQn
#define DISCOVERY_EXT_I2Cx_ER_IRQn I2C1_ER_IRQn
/* I2C TIMING Register define when I2C clock source is SYSCLK */
/* I2C TIMING is calculated from APB1 source clock = 50 MHz */
/* Due to the big MOFSET capacity for adapting the camera level the rising time is very large (>1us) */
/* 0x40912732 takes in account the big rising and aims a clock of 100khz */
#ifndef DISCOVERY_I2Cx_TIMING
#define DISCOVERY_I2Cx_TIMING ((uint32_t)0x40912732)
#endif /* DISCOVERY_I2Cx_TIMING */
/**
* @}
*/
/** @defgroup STM32F769I_DISCOVERY_LOW_LEVEL_Exported_Macros STM32F769I Discovery Low Level Exported Macros
* @{
*/
/**
* @}
*/
/** @defgroup STM32F769I_DISCOVERY_LOW_LEVEL_Exported_Functions STM32F769I Discovery Low Level Exported Functions
* @{
*/
uint32_t BSP_GetVersion(void);
void BSP_LED_Init(Led_TypeDef Led);
void BSP_LED_DeInit(Led_TypeDef Led);
void BSP_LED_On(Led_TypeDef Led);
void BSP_LED_Off(Led_TypeDef Led);
void BSP_LED_Toggle(Led_TypeDef Led);
void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef Button_Mode);
void BSP_PB_DeInit(Button_TypeDef Button);
uint32_t BSP_PB_GetState(Button_TypeDef Button);
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __STM32F769I_DISCOVERY_H */