]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MPU_M33F_NXP_LPC55S69_MCUXpresso/NXP_Code/board/board.h
1ba04a78d45c8d746ba008799d7a6e517672225e
[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 "LPCXpresso5500"\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 \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_GetFreq(kCLOCK_SDio)\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,           \\r
147         (IOCON_PIO_FUNC0 |IOCON_PIO_MODE_INACT |IOCON_PIO_SLEW_STANDARD |IOCON_PIO_INV_DI |IOCON_PIO_DIGITAL_EN |IOCON_PIO_OPENDRAIN_DI));  \\r
148     GPIO_PinInit(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, BOARD_LED_RED_GPIO_PIN, \\r
149                  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}); /*!< Enable target LED1 */  \\r
150     }\r
151 #define LED_RED_ON()                                            \\r
152     GPIO_PortClear(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, \\r
153                    1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn on target LED1 */\r
154 #define LED_RED_OFF()                                                                        \\r
155     GPIO_PortSet(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT,                                \\r
156                  1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn off target LED1 \ \ \ \ \ \ \ \ \ \ \\r
157                                                             */\r
158 #define LED_RED_TOGGLE()                                         \\r
159     GPIO_PortToggle(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, \\r
160                     1U << BOARD_LED_RED_GPIO_PIN) /*!< Toggle on target LED1 */\r
161 \r
162 #define LED_BLUE_INIT(output)                                                            \\r
163     {                                                                                    \\r
164     IOCON_PinMuxSet(IOCON, BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_GPIO_PIN,            \\r
165         (IOCON_PIO_FUNC0 |IOCON_PIO_MODE_INACT |IOCON_PIO_SLEW_STANDARD |IOCON_PIO_INV_DI |IOCON_PIO_DIGITAL_EN |IOCON_PIO_OPENDRAIN_DI));  \\r
166     GPIO_PinInit(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_GPIO_PIN, \\r
167                  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}); /*!< Enable target LED1 */  \\r
168     }\r
169 #define LED_BLUE_ON()                                             \\r
170     GPIO_PortClear(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \\r
171                    1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn on target LED1 */\r
172 #define LED_BLUE_OFF()                                          \\r
173     GPIO_PortSet(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \\r
174                  1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn off target LED1 */\r
175 #define LED_BLUE_TOGGLE()                                          \\r
176     GPIO_PortToggle(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \\r
177                     1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Toggle on target LED1 */\r
178 \r
179 #define LED_GREEN_INIT(output)                                                              \\r
180     GPIO_PinInit(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, BOARD_LED_GREEN_GPIO_PIN, \\r
181                  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED1 */\r
182 #define LED_GREEN_ON()                                              \\r
183     GPIO_PortClear(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \\r
184                    1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn on target LED1 */\r
185 #define LED_GREEN_OFF()                                           \\r
186     GPIO_PortSet(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \\r
187                  1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn off target LED1 */\r
188 #define LED_GREEN_TOGGLE()                                           \\r
189     GPIO_PortToggle(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \\r
190                     1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Toggle on target LED1 */\r
191 \r
192 /*! @brief The WIFI-QCA shield pin. */\r
193 #define BOARD_INITGT202SHIELD_PWRON_GPIO GPIO\r
194 #define BOARD_INITGT202SHIELD_PWRON_PORT 1U\r
195 #define BOARD_INITGT202SHIELD_PWRON_PIN 8U\r
196 \r
197 #define BOARD_INITGT202SHIELD_IRQ_GPIO GPIO\r
198 #define BOARD_INITGT202SHIELD_IRQ_PORT 1U\r
199 #define BOARD_INITGT202SHIELD_IRQ_PIN 9U\r
200 \r
201 /*! @brief The WIFI-QCA shield pin. */\r
202 #define BOARD_INITSILEX2401SHIELD_PWRON_GPIO GPIO\r
203 #define BOARD_INITSILEX2401SHIELD_PWRON_PORT 1U\r
204 #define BOARD_INITSILEX2401SHIELD_PWRON_PIN 7U\r
205 \r
206 #define BOARD_INITSILEX2401SHIELD_IRQ_GPIO GPIO\r
207 #define BOARD_INITSILEX2401SHIELD_IRQ_PORT 0U\r
208 #define BOARD_INITSILEX2401SHIELD_IRQ_GPIO_PIN 15U\r
209 \r
210 #if defined(__cplusplus)\r
211 extern "C" {\r
212 #endif /* __cplusplus */\r
213 \r
214 /*******************************************************************************\r
215  * API\r
216  ******************************************************************************/\r
217 \r
218 void BOARD_InitDebugConsole(void);\r
219 void BOARD_InitDebugConsole_Core1(void);\r
220 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED\r
221 void BOARD_I2C_Init(I2C_Type *base, uint32_t clkSrc_Hz);\r
222 status_t BOARD_I2C_Send(I2C_Type *base,\r
223                         uint8_t deviceAddress,\r
224                         uint32_t subAddress,\r
225                         uint8_t subaddressSize,\r
226                         uint8_t *txBuff,\r
227                         uint8_t txBuffSize);\r
228 status_t BOARD_I2C_Receive(I2C_Type *base,\r
229                            uint8_t deviceAddress,\r
230                            uint32_t subAddress,\r
231                            uint8_t subaddressSize,\r
232                            uint8_t *rxBuff,\r
233                            uint8_t rxBuffSize);\r
234 void BOARD_Accel_I2C_Init(void);\r
235 status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff);\r
236 status_t BOARD_Accel_I2C_Receive(\r
237     uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);\r
238 void BOARD_Codec_I2C_Init(void);\r
239 status_t BOARD_Codec_I2C_Send(\r
240     uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, const uint8_t *txBuff, uint8_t txBuffSize);\r
241 status_t BOARD_Codec_I2C_Receive(\r
242     uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);\r
243 #endif /* SDK_I2C_BASED_COMPONENT_USED */\r
244 \r
245 #if defined(__cplusplus)\r
246 }\r
247 #endif /* __cplusplus */\r
248 \r
249 #endif /* _BOARD_H_ */\r