]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MPU_LPC54018_MCUXpresso/NXP_Code/board/board.h
Add MPU demo project for LPC54018 board.
[freertos] / FreeRTOS / Demo / CORTEX_MPU_LPC54018_MCUXpresso / NXP_Code / board / board.h
1 /*\r
2  * Copyright (c) 2016, Freescale Semiconductor, Inc.\r
3  * Copyright 2016-2018 NXP\r
4  * All rights reserved.\r
5  *\r
6  *\r
7  * SPDX-License-Identifier: BSD-3-Clause\r
8  */\r
9 \r
10 #ifndef _BOARD_H_\r
11 #define _BOARD_H_\r
12 \r
13 #include "clock_config.h"\r
14 #include "fsl_common.h"\r
15 #include "fsl_gpio.h"\r
16 \r
17 /*******************************************************************************\r
18  * Definitions\r
19  ******************************************************************************/\r
20 /*! @brief The board name */\r
21 #define BOARD_NAME "LPC54018-IoT-Module"\r
22 \r
23 #define BOARD_EXTCLKINRATE (0)\r
24 \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
29 #endif\r
30 \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
40 \r
41 #ifndef BOARD_DEBUG_UART_BAUDRATE\r
42 #define BOARD_DEBUG_UART_BAUDRATE 115200\r
43 #endif /* BOARD_DEBUG_UART_BAUDRATE */\r
44 \r
45 #define BOARD_ACCEL_I2C_BASEADDR I2C2\r
46 #define BOARD_ACCEL_I2C_CLOCK_FREQ 12000000\r
47 \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
51 \r
52 /*! @brief The ENET PHY address. */\r
53 #define BOARD_ENET0_PHY_ADDRESS (0x00U) /* Phy address of enet port 0. */\r
54 \r
55 #ifndef BOARD_LED1_GPIO\r
56 #define BOARD_LED1_GPIO GPIO\r
57 #endif\r
58 #define BOARD_LED1_GPIO_PORT 3U\r
59 #ifndef BOARD_LED1_GPIO_PIN\r
60 #define BOARD_LED1_GPIO_PIN 14U\r
61 #endif\r
62 \r
63 #ifndef BOARD_LED2_GPIO\r
64 #define BOARD_LED2_GPIO GPIO\r
65 #endif\r
66 #define BOARD_LED2_GPIO_PORT 3U\r
67 #ifndef BOARD_LED2_GPIO_PIN\r
68 #define BOARD_LED2_GPIO_PIN 3U\r
69 #endif\r
70 #ifndef BOARD_LED3_GPIO\r
71 #define BOARD_LED3_GPIO GPIO\r
72 #endif\r
73 #define BOARD_LED3_GPIO_PORT 3U\r
74 #ifndef BOARD_LED3_GPIO_PIN\r
75 #define BOARD_LED3_GPIO_PIN 13U\r
76 #endif\r
77 \r
78 #ifndef BOARD_SW1_GPIO\r
79 #define BOARD_SW1_GPIO GPIO\r
80 #endif\r
81 #define BOARD_SW1_GPIO_PORT 0U\r
82 #ifndef BOARD_SW1_GPIO_PIN\r
83 #define BOARD_SW1_GPIO_PIN 4U\r
84 #endif\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
88 \r
89 #ifndef BOARD_SW2_GPIO\r
90 #define BOARD_SW2_GPIO GPIO\r
91 #endif\r
92 #define BOARD_SW2_GPIO_PORT 0U\r
93 #ifndef BOARD_SW2_GPIO_PIN\r
94 #define BOARD_SW2_GPIO_PIN 6U\r
95 #endif\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
99 \r
100 #ifndef BOARD_SW3_GPIO\r
101 #define BOARD_SW3_GPIO GPIO\r
102 #endif\r
103 #define BOARD_SW3_GPIO_PORT 0U\r
104 #ifndef BOARD_SW3_GPIO_PIN\r
105 #define BOARD_SW3_GPIO_PIN 5U\r
106 #endif\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
111 \r
112 #ifndef BOARD_SW4_GPIO\r
113 #define BOARD_SW4_GPIO GPIO\r
114 #endif\r
115 #ifndef BOARD_SW4_GPIO_PORT\r
116 #define BOARD_SW4_GPIO_PORT 0U\r
117 #endif\r
118 #ifndef BOARD_SW4_GPIO_PIN\r
119 #define BOARD_SW4_GPIO_PIN 4U\r
120 #endif\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
125 \r
126 #ifndef BOARD_SW5_GPIO\r
127 #define BOARD_SW5_GPIO GPIO\r
128 #endif\r
129 #ifndef BOARD_SW5_GPIO_PORT\r
130 #define BOARD_SW5_GPIO_PORT 1U\r
131 #endif\r
132 #ifndef BOARD_SW5_GPIO_PIN\r
133 #define BOARD_SW5_GPIO_PIN 1U\r
134 #endif\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
139 \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
144 \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
150 \r
151 #define BOARD_SDIF_CD_GPIO_INIT()                                                                    \\r
152     {                                                                                                \\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
156     }\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
159 \r
160 /* Board led color mapping */\r
161 #define LOGIC_LED_ON 0U\r
162 #define LOGIC_LED_OFF 1U\r
163 \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
182 \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
192 \r
193 #if defined(__cplusplus)\r
194 extern "C" {\r
195 #endif /* __cplusplus */\r
196 \r
197 /*******************************************************************************\r
198  * API\r
199  ******************************************************************************/\r
200 \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
209                         uint8_t *txBuff,\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
215                            uint8_t *rxBuff,\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
227 \r
228 #if defined(__cplusplus)\r
229 }\r
230 #endif /* __cplusplus */\r
231 \r
232 #endif /* _BOARD_H_ */\r