2 * Copyright (c) 2016, Freescale Semiconductor, Inc.
\r
3 * Copyright 2016-2018 NXP
\r
4 * All rights reserved.
\r
7 * SPDX-License-Identifier: BSD-3-Clause
\r
13 #include "clock_config.h"
\r
14 #include "fsl_common.h"
\r
15 #include "fsl_gpio.h"
\r
17 /*******************************************************************************
\r
19 ******************************************************************************/
\r
20 /*! @brief The board name */
\r
21 #define BOARD_NAME "LPC54018-IoT-Module"
\r
23 #define BOARD_EXTCLKINRATE (0)
\r
25 /*! @brief The UART to use for debug messages. */
\r
26 /* TODO: rename UART to USART */
\r
27 #ifndef BOARD_DEBUG_UART_TYPE
\r
28 #define BOARD_DEBUG_UART_TYPE kSerialPort_Uart
\r
31 #define BOARD_DEBUG_UART_BASEADDR (uint32_t) USART0
\r
32 #define BOARD_DEBUG_UART_INSTANCE 0U
\r
33 #define BOARD_DEBUG_UART_CLK_FREQ CLOCK_GetFlexCommClkFreq(0U)
\r
34 #define BOARD_DEBUG_UART_CLK_ATTACH kFRO12M_to_FLEXCOMM0
\r
35 #define BOARD_DEBUG_UART_RST kFC0_RST_SHIFT_RSTn
\r
36 #define BOARD_UART_IRQ_HANDLER FLEXCOMM0_IRQHandler
\r
37 #define BOARD_UART_IRQ FLEXCOMM0_IRQn
\r
38 /* TODO: obsolete */
\r
39 #define BOARD_DEBUG_SPI_CLK_FREQ 12000000
\r
41 #ifndef BOARD_DEBUG_UART_BAUDRATE
\r
42 #define BOARD_DEBUG_UART_BAUDRATE 115200
\r
43 #endif /* BOARD_DEBUG_UART_BAUDRATE */
\r
45 #define BOARD_ACCEL_I2C_BASEADDR I2C2
\r
46 #define BOARD_ACCEL_I2C_CLOCK_FREQ 12000000
\r
48 #define BOARD_CODEC_I2C_BASEADDR I2C2
\r
49 #define BOARD_CODEC_I2C_INSTANCE 2U
\r
50 #define BOARD_CODEC_I2C_CLOCK_FREQ 12000000
\r
52 /*! @brief The ENET PHY address. */
\r
53 #define BOARD_ENET0_PHY_ADDRESS (0x00U) /* Phy address of enet port 0. */
\r
55 #ifndef BOARD_LED1_GPIO
\r
56 #define BOARD_LED1_GPIO GPIO
\r
58 #define BOARD_LED1_GPIO_PORT 3U
\r
59 #ifndef BOARD_LED1_GPIO_PIN
\r
60 #define BOARD_LED1_GPIO_PIN 14U
\r
63 #ifndef BOARD_LED2_GPIO
\r
64 #define BOARD_LED2_GPIO GPIO
\r
66 #define BOARD_LED2_GPIO_PORT 3U
\r
67 #ifndef BOARD_LED2_GPIO_PIN
\r
68 #define BOARD_LED2_GPIO_PIN 3U
\r
70 #ifndef BOARD_LED3_GPIO
\r
71 #define BOARD_LED3_GPIO GPIO
\r
73 #define BOARD_LED3_GPIO_PORT 3U
\r
74 #ifndef BOARD_LED3_GPIO_PIN
\r
75 #define BOARD_LED3_GPIO_PIN 13U
\r
78 #ifndef BOARD_SW1_GPIO
\r
79 #define BOARD_SW1_GPIO GPIO
\r
81 #define BOARD_SW1_GPIO_PORT 0U
\r
82 #ifndef BOARD_SW1_GPIO_PIN
\r
83 #define BOARD_SW1_GPIO_PIN 4U
\r
85 #define BOARD_SW1_NAME "SW1"
\r
86 #define BOARD_SW3_IRQ PIN_INT0_IRQn
\r
87 #define BOARD_SW3_IRQ_HANDLER PIN_INT0_IRQHandler
\r
89 #ifndef BOARD_SW2_GPIO
\r
90 #define BOARD_SW2_GPIO GPIO
\r
92 #define BOARD_SW2_GPIO_PORT 0U
\r
93 #ifndef BOARD_SW2_GPIO_PIN
\r
94 #define BOARD_SW2_GPIO_PIN 6U
\r
96 #define BOARD_SW2_NAME "SW2"
\r
97 #define BOARD_SW2_IRQ PIN_INT0_IRQn
\r
98 #define BOARD_SW2_IRQ_HANDLER PIN_INT0_IRQHandler
\r
100 #ifndef BOARD_SW3_GPIO
\r
101 #define BOARD_SW3_GPIO GPIO
\r
103 #define BOARD_SW3_GPIO_PORT 0U
\r
104 #ifndef BOARD_SW3_GPIO_PIN
\r
105 #define BOARD_SW3_GPIO_PIN 5U
\r
107 #define BOARD_SW3_NAME "SW3"
\r
108 #define BOARD_SW3_IRQ PIN_INT0_IRQn
\r
109 #define BOARD_SW3_IRQ_HANDLER PIN_INT0_IRQHandler
\r
110 #define BOARD_SW3_GPIO_PININT_INDEX 0
\r
112 #ifndef BOARD_SW4_GPIO
\r
113 #define BOARD_SW4_GPIO GPIO
\r
115 #ifndef BOARD_SW4_GPIO_PORT
\r
116 #define BOARD_SW4_GPIO_PORT 0U
\r
118 #ifndef BOARD_SW4_GPIO_PIN
\r
119 #define BOARD_SW4_GPIO_PIN 4U
\r
121 #define BOARD_SW4_NAME "SW4"
\r
122 #define BOARD_SW4_IRQ PIN_INT0_IRQn
\r
123 #define BOARD_SW4_IRQ_HANDLER PIN_INT0_IRQHandler
\r
124 #define BOARD_SW4_GPIO_PININT_INDEX 0
\r
126 #ifndef BOARD_SW5_GPIO
\r
127 #define BOARD_SW5_GPIO GPIO
\r
129 #ifndef BOARD_SW5_GPIO_PORT
\r
130 #define BOARD_SW5_GPIO_PORT 1U
\r
132 #ifndef BOARD_SW5_GPIO_PIN
\r
133 #define BOARD_SW5_GPIO_PIN 1U
\r
135 #define BOARD_SW5_NAME "SW5"
\r
136 #define BOARD_SW5_IRQ PIN_INT1_IRQn
\r
137 #define BOARD_SW5_IRQ_HANDLER PIN_INT1_IRQHandler
\r
138 #define BOARD_SW5_GPIO_PININT_INDEX 0
\r
140 #define BOARD_SDIF_BASEADDR SDIF
\r
141 #define BOARD_SDIF_CLK_FREQ CLOCK_GetSdioClkFreq()
\r
142 #define BOARD_SDIF_CLK_ATTACH kMAIN_CLK_to_SDIO_CLK
\r
143 #define BOARD_SDIF_IRQ SDIO_IRQn
\r
145 #define BOARD_MMC_VCC_SUPPLY kMMC_VoltageWindows270to360
\r
146 #define BOARD_SD_CARD_DETECT_PIN 10
\r
147 #define BOARD_SD_CARD_DETECT_PORT 2
\r
148 #define BOARD_SD_CARD_DETECT_GPIO GPIO
\r
149 #define BOARD_SD_DETECT_TYPE kSDMMCHOST_DetectCardByHostCD
\r
151 #define BOARD_SDIF_CD_GPIO_INIT() \
\r
153 CLOCK_EnableClock(kCLOCK_Gpio2); \
\r
154 GPIO_PinInit(BOARD_SD_CARD_DETECT_GPIO, BOARD_SD_CARD_DETECT_PORT, BOARD_SD_CARD_DETECT_PIN, \
\r
155 &(gpio_pin_config_t){kGPIO_DigitalInput, 0U}); \
\r
157 #define BOARD_SDIF_CD_STATUS() \
\r
158 GPIO_PinRead(BOARD_SD_CARD_DETECT_GPIO, BOARD_SD_CARD_DETECT_PORT, BOARD_SD_CARD_DETECT_PIN)
\r
160 /* Board led color mapping */
\r
161 #define LOGIC_LED_ON 0U
\r
162 #define LOGIC_LED_OFF 1U
\r
164 #define LED1_INIT(output) \
\r
165 GPIO_PinInit(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN, \
\r
166 &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED1 */
\r
167 #define LED1_ON() \
\r
168 GPIO_PortClear(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, 1U << BOARD_LED1_GPIO_PIN) /*!< Turn on target LED1 */
\r
169 #define LED1_OFF() \
\r
170 GPIO_PortSet(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, 1U << BOARD_LED1_GPIO_PIN) /*!< Turn off target LED1 */
\r
171 #define LED1_TOGGLE() \
\r
172 GPIO_PortToggle(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, 1U << BOARD_LED1_GPIO_PIN) /*!< Toggle on target LED1 */
\r
173 #define LED2_INIT(output) \
\r
174 GPIO_PinInit(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, BOARD_LED2_GPIO_PIN, \
\r
175 &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED2 */
\r
176 #define LED2_ON() \
\r
177 GPIO_PortClear(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, 1U << BOARD_LED2_GPIO_PIN) /*!< Turn on target LED2 */
\r
178 #define LED2_OFF() \
\r
179 GPIO_PortSet(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, 1U << BOARD_LED2_GPIO_PIN) /*!< Turn off target LED2 */
\r
180 #define LED2_TOGGLE() \
\r
181 GPIO_PortToggle(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, 1U << BOARD_LED2_GPIO_PIN) /*!< Toggle on target LED2 */
\r
183 #define LED3_INIT(output) \
\r
184 GPIO_PinInit(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, BOARD_LED3_GPIO_PIN, \
\r
185 &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED3 */
\r
186 #define LED3_ON() \
\r
187 GPIO_PortClear(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, 1U << BOARD_LED3_GPIO_PIN) /*!< Turn on target LED3 */
\r
188 #define LED3_OFF() \
\r
189 GPIO_PortSet(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, 1U << BOARD_LED3_GPIO_PIN) /*!< Turn off target LED3 */
\r
190 #define LED3_TOGGLE() \
\r
191 GPIO_PortToggle(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, 1U << BOARD_LED3_GPIO_PIN) /*!< Toggle on target LED3 */
\r
193 #if defined(__cplusplus)
\r
195 #endif /* __cplusplus */
\r
197 /*******************************************************************************
\r
199 ******************************************************************************/
\r
201 status_t BOARD_InitDebugConsole(void);
\r
202 void BOARD_InitSDRAM(void);
\r
203 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED
\r
204 void BOARD_I2C_Init(I2C_Type *base, uint32_t clkSrc_Hz);
\r
205 status_t BOARD_I2C_Send(I2C_Type *base,
\r
206 uint8_t deviceAddress,
\r
207 uint32_t subAddress,
\r
208 uint8_t subaddressSize,
\r
210 uint8_t txBuffSize);
\r
211 status_t BOARD_I2C_Receive(I2C_Type *base,
\r
212 uint8_t deviceAddress,
\r
213 uint32_t subAddress,
\r
214 uint8_t subaddressSize,
\r
216 uint8_t rxBuffSize);
\r
217 void BOARD_Accel_I2C_Init(void);
\r
218 status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff);
\r
219 status_t BOARD_Accel_I2C_Receive(
\r
220 uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);
\r
221 void BOARD_Codec_I2C_Init(void);
\r
222 status_t BOARD_Codec_I2C_Send(
\r
223 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, const uint8_t *txBuff, uint8_t txBuffSize);
\r
224 status_t BOARD_Codec_I2C_Receive(
\r
225 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);
\r
226 #endif /* SDK_I2C_BASED_COMPONENT_USED */
\r
228 #if defined(__cplusplus)
\r
230 #endif /* __cplusplus */
\r
232 #endif /* _BOARD_H_ */
\r