2 * Copyright 2017-2018 NXP
\r
3 * All rights reserved.
\r
5 * SPDX-License-Identifier: BSD-3-Clause
\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
17 /*******************************************************************************
\r
19 ******************************************************************************/
\r
20 /*! @brief The board name */
\r
21 #define BOARD_NAME "LPCXpresso5500"
\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
35 #define BOARD_ACCEL_I2C_BASEADDR I2C4
\r
36 #define BOARD_ACCEL_I2C_CLOCK_FREQ 12000000
\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
48 #ifndef BOARD_DEBUG_UART_BAUDRATE
\r
49 #define BOARD_DEBUG_UART_BAUDRATE 115200U
\r
50 #endif /* BOARD_DEBUG_UART_BAUDRATE */
\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
56 #define BOARD_CODEC_I2C_BASEADDR I2C4
\r
57 #define BOARD_CODEC_I2C_CLOCK_FREQ 12000000
\r
59 #ifndef BOARD_LED_RED_GPIO
\r
60 #define BOARD_LED_RED_GPIO GPIO
\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
67 #ifndef BOARD_LED_BLUE_GPIO
\r
68 #define BOARD_LED_BLUE_GPIO GPIO
\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
75 #ifndef BOARD_LED_GREEN_GPIO
\r
76 #define BOARD_LED_GREEN_GPIO GPIO
\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
83 #ifndef BOARD_SW1_GPIO
\r
84 #define BOARD_SW1_GPIO GPIO
\r
86 #define BOARD_SW1_GPIO_PORT 0U
\r
87 #ifndef BOARD_SW1_GPIO_PIN
\r
88 #define BOARD_SW1_GPIO_PIN 5U
\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
94 #ifndef BOARD_SW2_GPIO
\r
95 #define BOARD_SW2_GPIO GPIO
\r
97 #define BOARD_SW2_GPIO_PORT 1U
\r
98 #ifndef BOARD_SW2_GPIO_PIN
\r
99 #define BOARD_SW2_GPIO_PIN 18U
\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
106 #ifndef BOARD_SW3_GPIO
\r
107 #define BOARD_SW3_GPIO GPIO
\r
109 #define BOARD_SW3_GPIO_PORT 1U
\r
110 #ifndef BOARD_SW3_GPIO_PIN
\r
111 #define BOARD_SW3_GPIO_PIN 9U
\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
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
129 #define BOARD_SDIF_CD_GPIO_INIT() \
\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
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
138 /* Board led color mapping */
\r
139 #define LOGIC_LED_ON 0U
\r
140 #define LOGIC_LED_OFF 1U
\r
142 #define BOARD_SDIF_CLK_ATTACH kMAIN_CLK_to_SDIO_CLK
\r
144 #define LED_RED_INIT(output) \
\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
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
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
162 #define LED_BLUE_INIT(output) \
\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
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
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
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
197 #define BOARD_INITGT202SHIELD_IRQ_GPIO GPIO
\r
198 #define BOARD_INITGT202SHIELD_IRQ_PORT 1U
\r
199 #define BOARD_INITGT202SHIELD_IRQ_PIN 9U
\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
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
210 #if defined(__cplusplus)
\r
212 #endif /* __cplusplus */
\r
214 /*******************************************************************************
\r
216 ******************************************************************************/
\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
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
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
245 #if defined(__cplusplus)
\r
247 #endif /* __cplusplus */
\r
249 #endif /* _BOARD_H_ */
\r