]> git.sur5r.net Git - freertos/blobdiff - 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
diff --git a/FreeRTOS/Demo/CORTEX_MPU_LPC54018_MCUXpresso/NXP_Code/board/board.h b/FreeRTOS/Demo/CORTEX_MPU_LPC54018_MCUXpresso/NXP_Code/board/board.h
new file mode 100644 (file)
index 0000000..ff19078
--- /dev/null
@@ -0,0 +1,232 @@
+/*\r
+ * Copyright (c) 2016, Freescale Semiconductor, Inc.\r
+ * Copyright 2016-2018 NXP\r
+ * All rights reserved.\r
+ *\r
+ *\r
+ * SPDX-License-Identifier: BSD-3-Clause\r
+ */\r
+\r
+#ifndef _BOARD_H_\r
+#define _BOARD_H_\r
+\r
+#include "clock_config.h"\r
+#include "fsl_common.h"\r
+#include "fsl_gpio.h"\r
+\r
+/*******************************************************************************\r
+ * Definitions\r
+ ******************************************************************************/\r
+/*! @brief The board name */\r
+#define BOARD_NAME "LPC54018-IoT-Module"\r
+\r
+#define BOARD_EXTCLKINRATE (0)\r
+\r
+/*! @brief The UART to use for debug messages. */\r
+/* TODO: rename UART to USART */\r
+#ifndef BOARD_DEBUG_UART_TYPE\r
+#define BOARD_DEBUG_UART_TYPE kSerialPort_Uart\r
+#endif\r
+\r
+#define BOARD_DEBUG_UART_BASEADDR (uint32_t) USART0\r
+#define BOARD_DEBUG_UART_INSTANCE 0U\r
+#define BOARD_DEBUG_UART_CLK_FREQ CLOCK_GetFlexCommClkFreq(0U)\r
+#define BOARD_DEBUG_UART_CLK_ATTACH kFRO12M_to_FLEXCOMM0\r
+#define BOARD_DEBUG_UART_RST kFC0_RST_SHIFT_RSTn\r
+#define BOARD_UART_IRQ_HANDLER FLEXCOMM0_IRQHandler\r
+#define BOARD_UART_IRQ FLEXCOMM0_IRQn\r
+/* TODO: obsolete */\r
+#define BOARD_DEBUG_SPI_CLK_FREQ 12000000\r
+\r
+#ifndef BOARD_DEBUG_UART_BAUDRATE\r
+#define BOARD_DEBUG_UART_BAUDRATE 115200\r
+#endif /* BOARD_DEBUG_UART_BAUDRATE */\r
+\r
+#define BOARD_ACCEL_I2C_BASEADDR I2C2\r
+#define BOARD_ACCEL_I2C_CLOCK_FREQ 12000000\r
+\r
+#define BOARD_CODEC_I2C_BASEADDR I2C2\r
+#define BOARD_CODEC_I2C_INSTANCE 2U\r
+#define BOARD_CODEC_I2C_CLOCK_FREQ 12000000\r
+\r
+/*! @brief The ENET PHY address. */\r
+#define BOARD_ENET0_PHY_ADDRESS (0x00U) /* Phy address of enet port 0. */\r
+\r
+#ifndef BOARD_LED1_GPIO\r
+#define BOARD_LED1_GPIO GPIO\r
+#endif\r
+#define BOARD_LED1_GPIO_PORT 3U\r
+#ifndef BOARD_LED1_GPIO_PIN\r
+#define BOARD_LED1_GPIO_PIN 14U\r
+#endif\r
+\r
+#ifndef BOARD_LED2_GPIO\r
+#define BOARD_LED2_GPIO GPIO\r
+#endif\r
+#define BOARD_LED2_GPIO_PORT 3U\r
+#ifndef BOARD_LED2_GPIO_PIN\r
+#define BOARD_LED2_GPIO_PIN 3U\r
+#endif\r
+#ifndef BOARD_LED3_GPIO\r
+#define BOARD_LED3_GPIO GPIO\r
+#endif\r
+#define BOARD_LED3_GPIO_PORT 3U\r
+#ifndef BOARD_LED3_GPIO_PIN\r
+#define BOARD_LED3_GPIO_PIN 13U\r
+#endif\r
+\r
+#ifndef BOARD_SW1_GPIO\r
+#define BOARD_SW1_GPIO GPIO\r
+#endif\r
+#define BOARD_SW1_GPIO_PORT 0U\r
+#ifndef BOARD_SW1_GPIO_PIN\r
+#define BOARD_SW1_GPIO_PIN 4U\r
+#endif\r
+#define BOARD_SW1_NAME "SW1"\r
+#define BOARD_SW3_IRQ PIN_INT0_IRQn\r
+#define BOARD_SW3_IRQ_HANDLER PIN_INT0_IRQHandler\r
+\r
+#ifndef BOARD_SW2_GPIO\r
+#define BOARD_SW2_GPIO GPIO\r
+#endif\r
+#define BOARD_SW2_GPIO_PORT 0U\r
+#ifndef BOARD_SW2_GPIO_PIN\r
+#define BOARD_SW2_GPIO_PIN 6U\r
+#endif\r
+#define BOARD_SW2_NAME "SW2"\r
+#define BOARD_SW2_IRQ PIN_INT0_IRQn\r
+#define BOARD_SW2_IRQ_HANDLER PIN_INT0_IRQHandler\r
+\r
+#ifndef BOARD_SW3_GPIO\r
+#define BOARD_SW3_GPIO GPIO\r
+#endif\r
+#define BOARD_SW3_GPIO_PORT 0U\r
+#ifndef BOARD_SW3_GPIO_PIN\r
+#define BOARD_SW3_GPIO_PIN 5U\r
+#endif\r
+#define BOARD_SW3_NAME "SW3"\r
+#define BOARD_SW3_IRQ PIN_INT0_IRQn\r
+#define BOARD_SW3_IRQ_HANDLER PIN_INT0_IRQHandler\r
+#define BOARD_SW3_GPIO_PININT_INDEX 0\r
+\r
+#ifndef BOARD_SW4_GPIO\r
+#define BOARD_SW4_GPIO GPIO\r
+#endif\r
+#ifndef BOARD_SW4_GPIO_PORT\r
+#define BOARD_SW4_GPIO_PORT 0U\r
+#endif\r
+#ifndef BOARD_SW4_GPIO_PIN\r
+#define BOARD_SW4_GPIO_PIN 4U\r
+#endif\r
+#define BOARD_SW4_NAME "SW4"\r
+#define BOARD_SW4_IRQ PIN_INT0_IRQn\r
+#define BOARD_SW4_IRQ_HANDLER PIN_INT0_IRQHandler\r
+#define BOARD_SW4_GPIO_PININT_INDEX 0\r
+\r
+#ifndef BOARD_SW5_GPIO\r
+#define BOARD_SW5_GPIO GPIO\r
+#endif\r
+#ifndef BOARD_SW5_GPIO_PORT\r
+#define BOARD_SW5_GPIO_PORT 1U\r
+#endif\r
+#ifndef BOARD_SW5_GPIO_PIN\r
+#define BOARD_SW5_GPIO_PIN 1U\r
+#endif\r
+#define BOARD_SW5_NAME "SW5"\r
+#define BOARD_SW5_IRQ PIN_INT1_IRQn\r
+#define BOARD_SW5_IRQ_HANDLER PIN_INT1_IRQHandler\r
+#define BOARD_SW5_GPIO_PININT_INDEX 0\r
+\r
+#define BOARD_SDIF_BASEADDR SDIF\r
+#define BOARD_SDIF_CLK_FREQ CLOCK_GetSdioClkFreq()\r
+#define BOARD_SDIF_CLK_ATTACH kMAIN_CLK_to_SDIO_CLK\r
+#define BOARD_SDIF_IRQ SDIO_IRQn\r
+\r
+#define BOARD_MMC_VCC_SUPPLY kMMC_VoltageWindows270to360\r
+#define BOARD_SD_CARD_DETECT_PIN 10\r
+#define BOARD_SD_CARD_DETECT_PORT 2\r
+#define BOARD_SD_CARD_DETECT_GPIO GPIO\r
+#define BOARD_SD_DETECT_TYPE kSDMMCHOST_DetectCardByHostCD\r
+\r
+#define BOARD_SDIF_CD_GPIO_INIT()                                                                    \\r
+    {                                                                                                \\r
+        CLOCK_EnableClock(kCLOCK_Gpio2);                                                             \\r
+        GPIO_PinInit(BOARD_SD_CARD_DETECT_GPIO, BOARD_SD_CARD_DETECT_PORT, BOARD_SD_CARD_DETECT_PIN, \\r
+                     &(gpio_pin_config_t){kGPIO_DigitalInput, 0U});                                  \\r
+    }\r
+#define BOARD_SDIF_CD_STATUS() \\r
+    GPIO_PinRead(BOARD_SD_CARD_DETECT_GPIO, BOARD_SD_CARD_DETECT_PORT, BOARD_SD_CARD_DETECT_PIN)\r
+\r
+/* Board led color mapping */\r
+#define LOGIC_LED_ON 0U\r
+#define LOGIC_LED_OFF 1U\r
+\r
+#define LED1_INIT(output)                                                    \\r
+    GPIO_PinInit(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN, \\r
+                 &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED1 */\r
+#define LED1_ON() \\r
+    GPIO_PortClear(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, 1U << BOARD_LED1_GPIO_PIN) /*!< Turn on target LED1 */\r
+#define LED1_OFF() \\r
+    GPIO_PortSet(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, 1U << BOARD_LED1_GPIO_PIN) /*!< Turn off target LED1 */\r
+#define LED1_TOGGLE() \\r
+    GPIO_PortToggle(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, 1U << BOARD_LED1_GPIO_PIN) /*!< Toggle on target LED1 */\r
+#define LED2_INIT(output)                                                    \\r
+    GPIO_PinInit(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, BOARD_LED2_GPIO_PIN, \\r
+                 &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED2 */\r
+#define LED2_ON() \\r
+    GPIO_PortClear(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, 1U << BOARD_LED2_GPIO_PIN) /*!< Turn on target LED2 */\r
+#define LED2_OFF() \\r
+    GPIO_PortSet(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, 1U << BOARD_LED2_GPIO_PIN) /*!< Turn off target LED2 */\r
+#define LED2_TOGGLE() \\r
+    GPIO_PortToggle(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, 1U << BOARD_LED2_GPIO_PIN) /*!< Toggle on target LED2 */\r
+\r
+#define LED3_INIT(output)                                                    \\r
+    GPIO_PinInit(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, BOARD_LED3_GPIO_PIN, \\r
+                 &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED3 */\r
+#define LED3_ON() \\r
+    GPIO_PortClear(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, 1U << BOARD_LED3_GPIO_PIN) /*!< Turn on target LED3 */\r
+#define LED3_OFF() \\r
+    GPIO_PortSet(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, 1U << BOARD_LED3_GPIO_PIN) /*!< Turn off target LED3 */\r
+#define LED3_TOGGLE() \\r
+    GPIO_PortToggle(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, 1U << BOARD_LED3_GPIO_PIN) /*!< Toggle on target LED3 */\r
+\r
+#if defined(__cplusplus)\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+/*******************************************************************************\r
+ * API\r
+ ******************************************************************************/\r
+\r
+status_t BOARD_InitDebugConsole(void);\r
+void BOARD_InitSDRAM(void);\r
+#if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED\r
+void BOARD_I2C_Init(I2C_Type *base, uint32_t clkSrc_Hz);\r
+status_t BOARD_I2C_Send(I2C_Type *base,\r
+                        uint8_t deviceAddress,\r
+                        uint32_t subAddress,\r
+                        uint8_t subaddressSize,\r
+                        uint8_t *txBuff,\r
+                        uint8_t txBuffSize);\r
+status_t BOARD_I2C_Receive(I2C_Type *base,\r
+                           uint8_t deviceAddress,\r
+                           uint32_t subAddress,\r
+                           uint8_t subaddressSize,\r
+                           uint8_t *rxBuff,\r
+                           uint8_t rxBuffSize);\r
+void BOARD_Accel_I2C_Init(void);\r
+status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff);\r
+status_t BOARD_Accel_I2C_Receive(\r
+    uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);\r
+void BOARD_Codec_I2C_Init(void);\r
+status_t BOARD_Codec_I2C_Send(\r
+    uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, const uint8_t *txBuff, uint8_t txBuffSize);\r
+status_t BOARD_Codec_I2C_Receive(\r
+    uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);\r
+#endif /* SDK_I2C_BASED_COMPONENT_USED */\r
+\r
+#if defined(__cplusplus)\r
+}\r
+#endif /* __cplusplus */\r
+\r
+#endif /* _BOARD_H_ */\r