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 */
|