]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MPU_M33F_NXP_LPC55S69_MCUXpresso/NXP_Code/board/board.h
commit 9f316c246baafa15c542a5aea81a94f26e3d6507
[freertos] / FreeRTOS / Demo / CORTEX_MPU_M33F_NXP_LPC55S69_MCUXpresso / NXP_Code / board / board.h
1 /*\r
2  * Copyright 2017-2018 NXP\r
3  * All rights reserved.\r
4  *\r
5  * SPDX-License-Identifier: BSD-3-Clause\r
6  */\r
7 \r
8 #ifndef _BOARD_H_\r
9 #define _BOARD_H_\r
10 \r
11 #include "clock_config.h"\r
12 #include "fsl_common.h"\r
13 #include "fsl_reset.h"\r
14 #include "fsl_gpio.h"\r
15 #include "fsl_iocon.h"\r
16 \r
17 /*******************************************************************************\r
18  * Definitions\r
19  ******************************************************************************/\r
20 /*! @brief The board name */\r
21 #define BOARD_NAME "LPCXpresso55S69"\r
22 \r
23 /*! @brief The UART to use for debug messages. */\r
24 /* TODO: rename UART to USART */\r
25 #define BOARD_DEBUG_UART_TYPE kSerialPort_Uart\r
26 #define BOARD_DEBUG_UART_BASEADDR (uint32_t) USART0\r
27 #define BOARD_DEBUG_UART_INSTANCE 0U\r
28 #define BOARD_DEBUG_UART_CLK_FREQ 12000000U\r
29 #define BOARD_DEBUG_UART_CLK_ATTACH kFRO12M_to_FLEXCOMM0\r
30 #define BOARD_DEBUG_UART_RST kFC0_RST_SHIFT_RSTn\r
31 #define BOARD_DEBUG_UART_CLKSRC kCLOCK_Flexcomm0\r
32 #define BOARD_UART_IRQ_HANDLER FLEXCOMM0_IRQHandler\r
33 #define BOARD_UART_IRQ FLEXCOMM0_IRQn\r
34 \r
35 #define BOARD_ACCEL_I2C_BASEADDR I2C4\r
36 #define BOARD_ACCEL_I2C_CLOCK_FREQ 12000000\r
37 \r
38 #define BOARD_DEBUG_UART_TYPE_CORE1 kSerialPort_Uart\r
39 #define BOARD_DEBUG_UART_BASEADDR_CORE1 (uint32_t) USART1\r
40 #define BOARD_DEBUG_UART_INSTANCE_CORE1 1U\r
41 #define BOARD_DEBUG_UART_CLK_FREQ_CORE1 12000000U\r
42 #define BOARD_DEBUG_UART_CLK_ATTACH_CORE1 kFRO12M_to_FLEXCOMM1\r
43 #define BOARD_DEBUG_UART_RST_CORE1 kFC1_RST_SHIFT_RSTn\r
44 #define BOARD_DEBUG_UART_CLKSRC_CORE1 kCLOCK_Flexcomm1\r
45 #define BOARD_UART_IRQ_HANDLER_CORE1 FLEXCOMM1_IRQHandler\r
46 #define BOARD_UART_IRQ_CORE1 FLEXCOMM1_IRQn\r
47 \r
48 #ifndef BOARD_DEBUG_UART_BAUDRATE\r
49 #define BOARD_DEBUG_UART_BAUDRATE 115200U\r
50 #endif /* BOARD_DEBUG_UART_BAUDRATE */\r
51 \r
52 #ifndef BOARD_DEBUG_UART_BAUDRATE_CORE1\r
53 #define BOARD_DEBUG_UART_BAUDRATE_CORE1 115200U\r
54 #endif /* BOARD_DEBUG_UART_BAUDRATE_CORE1 */\r
55 \r
56 #define BOARD_CODEC_I2C_BASEADDR I2C4\r
57 #define BOARD_CODEC_I2C_CLOCK_FREQ 12000000\r
58 #define BOARD_CODEC_I2C_INSTANCE 4\r
59 #ifndef BOARD_LED_RED_GPIO\r
60 #define BOARD_LED_RED_GPIO GPIO\r
61 #endif\r
62 #define BOARD_LED_RED_GPIO_PORT 1U\r
63 #ifndef BOARD_LED_RED_GPIO_PIN\r
64 #define BOARD_LED_RED_GPIO_PIN 6U\r
65 #endif\r
66 \r
67 #ifndef BOARD_LED_BLUE_GPIO\r
68 #define BOARD_LED_BLUE_GPIO GPIO\r
69 #endif\r
70 #define BOARD_LED_BLUE_GPIO_PORT 1U\r
71 #ifndef BOARD_LED_BLUE_GPIO_PIN\r
72 #define BOARD_LED_BLUE_GPIO_PIN 4U\r
73 #endif\r
74 \r
75 #ifndef BOARD_LED_GREEN_GPIO\r
76 #define BOARD_LED_GREEN_GPIO GPIO\r
77 #endif\r
78 #define BOARD_LED_GREEN_GPIO_PORT 1U\r
79 #ifndef BOARD_LED_GREEN_GPIO_PIN\r
80 #define BOARD_LED_GREEN_GPIO_PIN 7U\r
81 #endif\r
82 \r
83 #ifndef BOARD_SW1_GPIO\r
84 #define BOARD_SW1_GPIO GPIO\r
85 #endif\r
86 #define BOARD_SW1_GPIO_PORT 0U\r
87 #ifndef BOARD_SW1_GPIO_PIN\r
88 #define BOARD_SW1_GPIO_PIN 5U\r
89 #endif\r
90 #define BOARD_SW1_NAME "SW1"\r
91 #define BOARD_SW1_IRQ PIN_INT0_IRQn\r
92 #define BOARD_SW1_IRQ_HANDLER PIN_INT0_IRQHandler\r
93 \r
94 #ifndef BOARD_SW2_GPIO\r
95 #define BOARD_SW2_GPIO GPIO\r
96 #endif\r
97 #define BOARD_SW2_GPIO_PORT 1U\r
98 #ifndef BOARD_SW2_GPIO_PIN\r
99 #define BOARD_SW2_GPIO_PIN 18U\r
100 #endif\r
101 #define BOARD_SW2_NAME "SW2"\r
102 #define BOARD_SW2_IRQ PIN_INT1_IRQn\r
103 #define BOARD_SW2_IRQ_HANDLER PIN_INT1_IRQHandler\r
104 #define BOARD_SW2_GPIO_PININT_INDEX 1\r
105 \r
106 #ifndef BOARD_SW3_GPIO\r
107 #define BOARD_SW3_GPIO GPIO\r
108 #endif\r
109 #define BOARD_SW3_GPIO_PORT 1U\r
110 #ifndef BOARD_SW3_GPIO_PIN\r
111 #define BOARD_SW3_GPIO_PIN 9U\r
112 #endif\r
113 #define BOARD_SW3_NAME "SW3"\r
114 #define BOARD_SW3_IRQ PIN_INT1_IRQn\r
115 #define BOARD_SW3_IRQ_HANDLER PIN_INT1_IRQHandler\r
116 #define BOARD_SW3_GPIO_PININT_INDEX 1\r
117 \r
118 #define BOARD_SDIF_BASEADDR SDIF\r
119 #define BOARD_SDIF_CLKSRC kCLOCK_SDio\r
120 #define BOARD_SDIF_CLK_FREQ CLOCK_GetSdioClkFreq()\r
121 #define BOARD_SDIF_CLK_ATTACH kMAIN_CLK_to_SDIO_CLK\r
122 #define BOARD_SDIF_IRQ SDIO_IRQn\r
123 #define BOARD_MMC_VCC_SUPPLY kMMC_VoltageWindows270to360\r
124 #define BOARD_SD_CARD_DETECT_PIN 17\r
125 #define BOARD_SD_CARD_DETECT_PORT 0\r
126 #define BOARD_SD_CARD_DETECT_GPIO GPIO\r
127 #define BOARD_SD_DETECT_TYPE kSDMMCHOST_DetectCardByHostCD\r
128 \r
129 #define BOARD_SDIF_CD_GPIO_INIT()                                                                    \\r
130     {                                                                                                \\r
131         CLOCK_EnableClock(kCLOCK_Gpio2);                                                             \\r
132         GPIO_PinInit(BOARD_SD_CARD_DETECT_GPIO, BOARD_SD_CARD_DETECT_PORT, BOARD_SD_CARD_DETECT_PIN, \\r
133                      &(gpio_pin_config_t){kGPIO_DigitalInput, 0U});                                  \\r
134     }\r
135 #define BOARD_SDIF_CD_STATUS() \\r
136     GPIO_PinRead(BOARD_SD_CARD_DETECT_GPIO, BOARD_SD_CARD_DETECT_PORT, BOARD_SD_CARD_DETECT_PIN)\r
137 \r
138 /* Board led color mapping */\r
139 #define LOGIC_LED_ON 0U\r
140 #define LOGIC_LED_OFF 1U\r
141 \r
142 #define BOARD_SDIF_CLK_ATTACH kMAIN_CLK_to_SDIO_CLK\r
143 \r
144 #define LED_RED_INIT(output)                                                                          \\r
145     {                                                                                                 \\r
146         IOCON_PinMuxSet(IOCON, BOARD_LED_RED_GPIO_PORT, BOARD_LED_RED_GPIO_PIN, IOCON_DIGITAL_EN);    \\r
147         GPIO_PinInit(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, BOARD_LED_RED_GPIO_PIN,             \\r
148                      &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}); /*!< Enable target LED1 */ \\r
149     }\r
150 #define LED_RED_ON()                                            \\r
151     GPIO_PortClear(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, \\r
152                    1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn on target LED1 */\r
153 #define LED_RED_OFF()                                                                        \\r
154     GPIO_PortSet(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT,                                \\r
155                  1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn off target LED1 \ \ \ \ \ \ \ \ \ \ \\r
156                                                 */\r
157 #define LED_RED_TOGGLE()                                         \\r
158     GPIO_PortToggle(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, \\r
159                     1U << BOARD_LED_RED_GPIO_PIN) /*!< Toggle on target LED1 */\r
160 \r
161 #define LED_BLUE_INIT(output)                                                                         \\r
162     {                                                                                                 \\r
163         IOCON_PinMuxSet(IOCON, BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_GPIO_PIN, IOCON_DIGITAL_EN);  \\r
164         GPIO_PinInit(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_GPIO_PIN,          \\r
165                      &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}); /*!< Enable target LED1 */ \\r
166     }\r
167 #define LED_BLUE_ON()                                             \\r
168     GPIO_PortClear(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \\r
169                    1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn on target LED1 */\r
170 #define LED_BLUE_OFF()                                          \\r
171     GPIO_PortSet(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \\r
172                  1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn off target LED1 */\r
173 #define LED_BLUE_TOGGLE()                                          \\r
174     GPIO_PortToggle(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \\r
175                     1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Toggle on target LED1 */\r
176 \r
177 #define LED_GREEN_INIT(output)                                                              \\r
178     GPIO_PinInit(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, BOARD_LED_GREEN_GPIO_PIN, \\r
179                  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED1 */\r
180 #define LED_GREEN_ON()                                              \\r
181     GPIO_PortClear(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \\r
182                    1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn on target LED1 */\r
183 #define LED_GREEN_OFF()                                           \\r
184     GPIO_PortSet(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \\r
185                  1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn off target LED1 */\r
186 #define LED_GREEN_TOGGLE()                                           \\r
187     GPIO_PortToggle(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \\r
188                     1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Toggle on target LED1 */\r
189 \r
190 /*! @brief The WIFI-QCA shield pin. */\r
191 #define BOARD_INITGT202SHIELD_PWRON_GPIO GPIO\r
192 #define BOARD_INITGT202SHIELD_PWRON_PORT 1U\r
193 #define BOARD_INITGT202SHIELD_PWRON_PIN 8U\r
194 \r
195 #define BOARD_INITGT202SHIELD_IRQ_GPIO GPIO\r
196 #define BOARD_INITGT202SHIELD_IRQ_PORT 1U\r
197 #define BOARD_INITGT202SHIELD_IRQ_PIN 9U\r
198 \r
199 /*! @brief The WIFI-QCA shield pin. */\r
200 #define BOARD_INITSILEX2401SHIELD_PWRON_GPIO GPIO\r
201 #define BOARD_INITSILEX2401SHIELD_PWRON_PORT 1U\r
202 #define BOARD_INITSILEX2401SHIELD_PWRON_PIN 7U\r
203 \r
204 #define BOARD_INITSILEX2401SHIELD_IRQ_GPIO GPIO\r
205 #define BOARD_INITSILEX2401SHIELD_IRQ_PORT 0U\r
206 #define BOARD_INITSILEX2401SHIELD_IRQ_GPIO_PIN 15U\r
207 \r
208 /*! @brief The WIFI-QCA shield pin. */\r
209 #define BOARD_INITWIFI10CLICKSHIELD_PWRON_GPIO GPIO\r
210 #define BOARD_INITWIFI10CLICKSHIELD_PWRON_PORT 1U\r
211 #define BOARD_INITWIFI10CLICKSHIELD_PWRON_PIN 5U\r
212 \r
213 #define BOARD_INITWIFI10CLICKSHIELD_IRQ_GPIO GPIO\r
214 #define BOARD_INITWIFI10CLICKSHIELD_IRQ_PORT 1U\r
215 #define BOARD_INITWIFI10CLICKSHIELD_IRQ_GPIO_PIN 18U\r
216 \r
217 /* Display. */\r
218 #define BOARD_LCD_DC_GPIO GPIO\r
219 #define BOARD_LCD_DC_GPIO_PORT 1U\r
220 #define BOARD_LCD_DC_GPIO_PIN 5U\r
221 \r
222 #if defined(__cplusplus)\r
223 extern "C" {\r
224 #endif /* __cplusplus */\r
225 \r
226 /*******************************************************************************\r
227  * API\r
228  ******************************************************************************/\r
229 \r
230 void BOARD_InitDebugConsole(void);\r
231 void BOARD_InitDebugConsole_Core1(void);\r
232 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED\r
233 void BOARD_I2C_Init(I2C_Type *base, uint32_t clkSrc_Hz);\r
234 status_t BOARD_I2C_Send(I2C_Type *base,\r
235                         uint8_t deviceAddress,\r
236                         uint32_t subAddress,\r
237                         uint8_t subaddressSize,\r
238                         uint8_t *txBuff,\r
239                         uint8_t txBuffSize);\r
240 status_t BOARD_I2C_Receive(I2C_Type *base,\r
241                            uint8_t deviceAddress,\r
242                            uint32_t subAddress,\r
243                            uint8_t subaddressSize,\r
244                            uint8_t *rxBuff,\r
245                            uint8_t rxBuffSize);\r
246 void BOARD_Accel_I2C_Init(void);\r
247 status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff);\r
248 status_t BOARD_Accel_I2C_Receive(\r
249     uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);\r
250 void BOARD_Codec_I2C_Init(void);\r
251 status_t BOARD_Codec_I2C_Send(\r
252     uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, const uint8_t *txBuff, uint8_t txBuffSize);\r
253 status_t BOARD_Codec_I2C_Receive(\r
254     uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);\r
255 #endif /* SDK_I2C_BASED_COMPONENT_USED */\r
256 \r
257 #if defined(__cplusplus)\r
258 }\r
259 #endif /* __cplusplus */\r
260 \r
261 #endif /* _BOARD_H_ */\r