1 /* 2 * Copyright 2017-2018 NXP 3 * All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 8 #ifndef _BOARD_H_ 9 #define _BOARD_H_ 10 11 #include "clock_config.h" 12 #include "fsl_common.h" 13 #include "fsl_reset.h" 14 #include "fsl_gpio.h" 15 #include "fsl_iocon.h" 16 17 /******************************************************************************* 18 * Definitions 19 ******************************************************************************/ 20 /*! @brief The board name */ 21 #define BOARD_NAME "LPCXpresso55S69" 22 23 /*! @brief The UART to use for debug messages. */ 24 /* TODO: rename UART to USART */ 25 #define BOARD_DEBUG_UART_TYPE kSerialPort_Uart 26 #define BOARD_DEBUG_UART_BASEADDR (uint32_t) USART0 27 #define BOARD_DEBUG_UART_INSTANCE 0U 28 #define BOARD_DEBUG_UART_CLK_FREQ 12000000U 29 #define BOARD_DEBUG_UART_CLK_ATTACH kFRO12M_to_FLEXCOMM0 30 #define BOARD_DEBUG_UART_RST kFC0_RST_SHIFT_RSTn 31 #define BOARD_DEBUG_UART_CLKSRC kCLOCK_Flexcomm0 32 #define BOARD_UART_IRQ_HANDLER FLEXCOMM0_IRQHandler 33 #define BOARD_UART_IRQ FLEXCOMM0_IRQn 34 35 #define BOARD_ACCEL_I2C_BASEADDR I2C4 36 #define BOARD_ACCEL_I2C_CLOCK_FREQ 12000000 37 38 #define BOARD_DEBUG_UART_TYPE_CORE1 kSerialPort_Uart 39 #define BOARD_DEBUG_UART_BASEADDR_CORE1 (uint32_t) USART1 40 #define BOARD_DEBUG_UART_INSTANCE_CORE1 1U 41 #define BOARD_DEBUG_UART_CLK_FREQ_CORE1 12000000U 42 #define BOARD_DEBUG_UART_CLK_ATTACH_CORE1 kFRO12M_to_FLEXCOMM1 43 #define BOARD_DEBUG_UART_RST_CORE1 kFC1_RST_SHIFT_RSTn 44 #define BOARD_DEBUG_UART_CLKSRC_CORE1 kCLOCK_Flexcomm1 45 #define BOARD_UART_IRQ_HANDLER_CORE1 FLEXCOMM1_IRQHandler 46 #define BOARD_UART_IRQ_CORE1 FLEXCOMM1_IRQn 47 48 #ifndef BOARD_DEBUG_UART_BAUDRATE 49 #define BOARD_DEBUG_UART_BAUDRATE 115200U 50 #endif /* BOARD_DEBUG_UART_BAUDRATE */ 51 52 #ifndef BOARD_DEBUG_UART_BAUDRATE_CORE1 53 #define BOARD_DEBUG_UART_BAUDRATE_CORE1 115200U 54 #endif /* BOARD_DEBUG_UART_BAUDRATE_CORE1 */ 55 56 #define BOARD_CODEC_I2C_BASEADDR I2C4 57 #define BOARD_CODEC_I2C_CLOCK_FREQ 12000000 58 59 #ifndef BOARD_LED_RED_GPIO 60 #define BOARD_LED_RED_GPIO GPIO 61 #endif 62 #define BOARD_LED_RED_GPIO_PORT 1U 63 #ifndef BOARD_LED_RED_GPIO_PIN 64 #define BOARD_LED_RED_GPIO_PIN 6U 65 #endif 66 67 #ifndef BOARD_LED_BLUE_GPIO 68 #define BOARD_LED_BLUE_GPIO GPIO 69 #endif 70 #define BOARD_LED_BLUE_GPIO_PORT 1U 71 #ifndef BOARD_LED_BLUE_GPIO_PIN 72 #define BOARD_LED_BLUE_GPIO_PIN 4U 73 #endif 74 75 #ifndef BOARD_LED_GREEN_GPIO 76 #define BOARD_LED_GREEN_GPIO GPIO 77 #endif 78 #define BOARD_LED_GREEN_GPIO_PORT 1U 79 #ifndef BOARD_LED_GREEN_GPIO_PIN 80 #define BOARD_LED_GREEN_GPIO_PIN 7U 81 #endif 82 83 #ifndef BOARD_SW1_GPIO 84 #define BOARD_SW1_GPIO GPIO 85 #endif 86 #define BOARD_SW1_GPIO_PORT 0U 87 #ifndef BOARD_SW1_GPIO_PIN 88 #define BOARD_SW1_GPIO_PIN 5U 89 #endif 90 #define BOARD_SW1_NAME "SW1" 91 #define BOARD_SW1_IRQ PIN_INT0_IRQn 92 #define BOARD_SW1_IRQ_HANDLER PIN_INT0_IRQHandler 93 94 #ifndef BOARD_SW2_GPIO 95 #define BOARD_SW2_GPIO GPIO 96 #endif 97 #define BOARD_SW2_GPIO_PORT 1U 98 #ifndef BOARD_SW2_GPIO_PIN 99 #define BOARD_SW2_GPIO_PIN 18U 100 #endif 101 #define BOARD_SW2_NAME "SW2" 102 #define BOARD_SW2_IRQ PIN_INT1_IRQn 103 #define BOARD_SW2_IRQ_HANDLER PIN_INT1_IRQHandler 104 #define BOARD_SW2_GPIO_PININT_INDEX 1 105 106 #ifndef BOARD_SW3_GPIO 107 #define BOARD_SW3_GPIO GPIO 108 #endif 109 #define BOARD_SW3_GPIO_PORT 1U 110 #ifndef BOARD_SW3_GPIO_PIN 111 #define BOARD_SW3_GPIO_PIN 9U 112 #endif 113 #define BOARD_SW3_NAME "SW3" 114 #define BOARD_SW3_IRQ PIN_INT1_IRQn 115 #define BOARD_SW3_IRQ_HANDLER PIN_INT1_IRQHandler 116 #define BOARD_SW3_GPIO_PININT_INDEX 1 117 118 #define BOARD_SDIF_BASEADDR SDIF 119 #define BOARD_SDIF_CLKSRC kCLOCK_SDio 120 #define BOARD_SDIF_CLK_FREQ CLOCK_GetSdioClkFreq() 121 #define BOARD_SDIF_CLK_ATTACH kMAIN_CLK_to_SDIO_CLK 122 #define BOARD_SDIF_IRQ SDIO_IRQn 123 #define BOARD_MMC_VCC_SUPPLY kMMC_VoltageWindows270to360 124 #define BOARD_SD_CARD_DETECT_PIN 17 125 #define BOARD_SD_CARD_DETECT_PORT 0 126 #define BOARD_SD_CARD_DETECT_GPIO GPIO 127 #define BOARD_SD_DETECT_TYPE kSDMMCHOST_DetectCardByHostCD 128 129 #define BOARD_SDIF_CD_GPIO_INIT() \ 130 { \ 131 CLOCK_EnableClock(kCLOCK_Gpio2); \ 132 GPIO_PinInit(BOARD_SD_CARD_DETECT_GPIO, BOARD_SD_CARD_DETECT_PORT, BOARD_SD_CARD_DETECT_PIN, \ 133 &(gpio_pin_config_t){kGPIO_DigitalInput, 0U}); \ 134 } 135 #define BOARD_SDIF_CD_STATUS() \ 136 GPIO_PinRead(BOARD_SD_CARD_DETECT_GPIO, BOARD_SD_CARD_DETECT_PORT, BOARD_SD_CARD_DETECT_PIN) 137 138 /* Board led color mapping */ 139 #define LOGIC_LED_ON 0U 140 #define LOGIC_LED_OFF 1U 141 142 #define BOARD_SDIF_CLK_ATTACH kMAIN_CLK_to_SDIO_CLK 143 144 #define LED_RED_INIT(output) \ 145 { \ 146 IOCON_PinMuxSet(IOCON, BOARD_LED_RED_GPIO_PORT, BOARD_LED_RED_GPIO_PIN, \ 147 (IOCON_PIO_FUNC0 | IOCON_PIO_MODE_INACT | IOCON_PIO_SLEW_STANDARD | IOCON_PIO_INV_DI | \ 148 IOCON_PIO_DIGITAL_EN | IOCON_PIO_OPENDRAIN_DI)); \ 149 GPIO_PinInit(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, BOARD_LED_RED_GPIO_PIN, \ 150 &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}); /*!< Enable target LED1 */ \ 151 } 152 #define LED_RED_ON() \ 153 GPIO_PortClear(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, \ 154 1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn on target LED1 */ 155 #define LED_RED_OFF() \ 156 GPIO_PortSet(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, \ 157 1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn off target LED1 \ \ \ \ \ \ \ \ \ \ \ 158 */ 159 #define LED_RED_TOGGLE() \ 160 GPIO_PortToggle(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, \ 161 1U << BOARD_LED_RED_GPIO_PIN) /*!< Toggle on target LED1 */ 162 163 #define LED_BLUE_INIT(output) \ 164 { \ 165 IOCON_PinMuxSet(IOCON, BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_GPIO_PIN, \ 166 (IOCON_PIO_FUNC0 | IOCON_PIO_MODE_INACT | IOCON_PIO_SLEW_STANDARD | IOCON_PIO_INV_DI | \ 167 IOCON_PIO_DIGITAL_EN | IOCON_PIO_OPENDRAIN_DI)); \ 168 GPIO_PinInit(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_GPIO_PIN, \ 169 &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}); /*!< Enable target LED1 */ \ 170 } 171 #define LED_BLUE_ON() \ 172 GPIO_PortClear(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \ 173 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn on target LED1 */ 174 #define LED_BLUE_OFF() \ 175 GPIO_PortSet(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \ 176 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn off target LED1 */ 177 #define LED_BLUE_TOGGLE() \ 178 GPIO_PortToggle(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \ 179 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Toggle on target LED1 */ 180 181 #define LED_GREEN_INIT(output) \ 182 GPIO_PinInit(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, BOARD_LED_GREEN_GPIO_PIN, \ 183 &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED1 */ 184 #define LED_GREEN_ON() \ 185 GPIO_PortClear(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \ 186 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn on target LED1 */ 187 #define LED_GREEN_OFF() \ 188 GPIO_PortSet(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \ 189 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn off target LED1 */ 190 #define LED_GREEN_TOGGLE() \ 191 GPIO_PortToggle(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \ 192 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Toggle on target LED1 */ 193 194 /*! @brief The WIFI-QCA shield pin. */ 195 #define BOARD_INITGT202SHIELD_PWRON_GPIO GPIO 196 #define BOARD_INITGT202SHIELD_PWRON_PORT 1U 197 #define BOARD_INITGT202SHIELD_PWRON_PIN 8U 198 199 #define BOARD_INITGT202SHIELD_IRQ_GPIO GPIO 200 #define BOARD_INITGT202SHIELD_IRQ_PORT 1U 201 #define BOARD_INITGT202SHIELD_IRQ_PIN 9U 202 203 /*! @brief The WIFI-QCA shield pin. */ 204 #define BOARD_INITSILEX2401SHIELD_PWRON_GPIO GPIO 205 #define BOARD_INITSILEX2401SHIELD_PWRON_PORT 1U 206 #define BOARD_INITSILEX2401SHIELD_PWRON_PIN 7U 207 208 #define BOARD_INITSILEX2401SHIELD_IRQ_GPIO GPIO 209 #define BOARD_INITSILEX2401SHIELD_IRQ_PORT 0U 210 #define BOARD_INITSILEX2401SHIELD_IRQ_GPIO_PIN 15U 211 212 #if defined(__cplusplus) 213 extern "C" { 214 #endif /* __cplusplus */ 215 216 /******************************************************************************* 217 * API 218 ******************************************************************************/ 219 220 void BOARD_InitDebugConsole(void); 221 void BOARD_InitDebugConsole_Core1(void); 222 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED 223 void BOARD_I2C_Init(I2C_Type *base, uint32_t clkSrc_Hz); 224 status_t BOARD_I2C_Send(I2C_Type *base, 225 uint8_t deviceAddress, 226 uint32_t subAddress, 227 uint8_t subaddressSize, 228 uint8_t *txBuff, 229 uint8_t txBuffSize); 230 status_t BOARD_I2C_Receive(I2C_Type *base, 231 uint8_t deviceAddress, 232 uint32_t subAddress, 233 uint8_t subaddressSize, 234 uint8_t *rxBuff, 235 uint8_t rxBuffSize); 236 void BOARD_Accel_I2C_Init(void); 237 status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff); 238 status_t BOARD_Accel_I2C_Receive( 239 uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize); 240 void BOARD_Codec_I2C_Init(void); 241 status_t BOARD_Codec_I2C_Send( 242 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, const uint8_t *txBuff, uint8_t txBuffSize); 243 status_t BOARD_Codec_I2C_Receive( 244 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize); 245 #endif /* SDK_I2C_BASED_COMPONENT_USED */ 246 247 #if defined(__cplusplus) 248 } 249 #endif /* __cplusplus */ 250 251 #endif /* _BOARD_H_ */ 252