1 /* 2 * Copyright (c) 2015, Freescale Semiconductor, Inc. 3 * Copyright 2016-2018 NXP 4 * All rights reserved. 5 * 6 * 7 * SPDX-License-Identifier: BSD-3-Clause 8 */ 9 10 #ifndef _BOARD_H_ 11 #define _BOARD_H_ 12 13 #include "clock_config.h" 14 #include "fsl_gpio.h" 15 #include "fsl_port.h" 16 17 /******************************************************************************* 18 * Definitions 19 ******************************************************************************/ 20 21 /* The board name */ 22 #define BOARD_NAME "FRDM-K64F" 23 24 /* The UART to use for debug messages. */ 25 #define BOARD_DEBUG_UART_TYPE kSerialPort_Uart 26 #define BOARD_DEBUG_UART_BASEADDR (uint32_t) UART0 27 #define BOARD_DEBUG_UART_INSTANCE 0U 28 #define BOARD_DEBUG_UART_CLKSRC SYS_CLK 29 #define BOARD_DEBUG_UART_CLK_FREQ CLOCK_GetCoreSysClkFreq() 30 #define BOARD_UART_IRQ UART0_RX_TX_IRQn 31 #define BOARD_UART_IRQ_HANDLER UART0_RX_TX_IRQHandler 32 33 #ifndef BOARD_DEBUG_UART_BAUDRATE 34 #define BOARD_DEBUG_UART_BAUDRATE 115200 35 #endif /* BOARD_DEBUG_UART_BAUDRATE */ 36 37 /*! @brief The ENET PHY address. */ 38 #define BOARD_ENET0_PHY_ADDRESS (0x00U) /* Phy address of enet port 0. */ 39 40 /* Define the port interrupt number for the board switches */ 41 #ifndef BOARD_SW2_GPIO 42 #define BOARD_SW2_GPIO GPIOC 43 #endif 44 #ifndef BOARD_SW2_PORT 45 #define BOARD_SW2_PORT PORTC 46 #endif 47 #ifndef BOARD_SW2_GPIO_PIN 48 #define BOARD_SW2_GPIO_PIN 6U 49 #endif 50 #define BOARD_SW2_IRQ PORTC_IRQn 51 #define BOARD_SW2_IRQ_HANDLER PORTC_IRQHandler 52 #define BOARD_SW2_NAME "SW2" 53 54 #ifndef BOARD_SW3_GPIO 55 #define BOARD_SW3_GPIO GPIOA 56 #endif 57 #ifndef BOARD_SW3_PORT 58 #define BOARD_SW3_PORT PORTA 59 #endif 60 #ifndef BOARD_SW3_GPIO_PIN 61 #define BOARD_SW3_GPIO_PIN 4U 62 #endif 63 #define BOARD_SW3_IRQ PORTA_IRQn 64 #define BOARD_SW3_IRQ_HANDLER PORTA_IRQHandler 65 #define BOARD_SW3_NAME "SW3" 66 67 #define LLWU_SW_GPIO BOARD_SW2_GPIO 68 #define LLWU_SW_PORT BOARD_SW2_PORT 69 #define LLWU_SW_GPIO_PIN BOARD_SW2_GPIO_PIN 70 #define LLWU_SW_IRQ BOARD_SW2_IRQ 71 #define LLWU_SW_IRQ_HANDLER BOARD_SW2_IRQ_HANDLER 72 #define LLWU_SW_NAME BOARD_SW2_NAME 73 74 /* Board led color mapping */ 75 #define LOGIC_LED_ON 0U 76 #define LOGIC_LED_OFF 1U 77 #ifndef BOARD_LED_RED_GPIO 78 #define BOARD_LED_RED_GPIO GPIOB 79 #endif 80 #define BOARD_LED_RED_GPIO_PORT PORTB 81 #ifndef BOARD_LED_RED_GPIO_PIN 82 #define BOARD_LED_RED_GPIO_PIN 22U 83 #endif 84 #ifndef BOARD_LED_GREEN_GPIO 85 #define BOARD_LED_GREEN_GPIO GPIOE 86 #endif 87 #define BOARD_LED_GREEN_GPIO_PORT PORTE 88 #ifndef BOARD_LED_GREEN_GPIO_PIN 89 #define BOARD_LED_GREEN_GPIO_PIN 26U 90 #endif 91 #ifndef BOARD_LED_BLUE_GPIO 92 #define BOARD_LED_BLUE_GPIO GPIOB 93 #endif 94 #define BOARD_LED_BLUE_GPIO_PORT PORTB 95 #ifndef BOARD_LED_BLUE_GPIO_PIN 96 #define BOARD_LED_BLUE_GPIO_PIN 21U 97 #endif 98 99 #define BOARD_ARDUINO_INT_IRQ (PORTC_IRQn) 100 #define BOARD_ARDUINO_I2C_IRQ (I2C0_IRQn) 101 #define BOARD_ARDUINO_I2C_INDEX (0) 102 103 #define LED_RED_INIT(output) \ 104 GPIO_PinWrite(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PIN, output); \ 105 BOARD_LED_RED_GPIO->PDDR |= (1U << BOARD_LED_RED_GPIO_PIN) /*!< Enable target LED_RED */ 106 #define LED_RED_ON() GPIO_PortClear(BOARD_LED_RED_GPIO, 1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn on target LED_RED */ 107 #define LED_RED_OFF() GPIO_PortSet(BOARD_LED_RED_GPIO, 1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn off target LED_RED */ 108 #define LED_RED_TOGGLE() \ 109 GPIO_PortToggle(BOARD_LED_RED_GPIO, 1U << BOARD_LED_RED_GPIO_PIN) /*!< Toggle on target LED_RED */ 110 111 #define LED_GREEN_INIT(output) \ 112 GPIO_PinWrite(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PIN, output); \ 113 BOARD_LED_GREEN_GPIO->PDDR |= (1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Enable target LED_GREEN */ 114 #define LED_GREEN_ON() \ 115 GPIO_PortClear(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn on target LED_GREEN */ 116 #define LED_GREEN_OFF() \ 117 GPIO_PortSet(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn off target LED_GREEN */ 118 #define LED_GREEN_TOGGLE() \ 119 GPIO_PortToggle(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Toggle on target LED_GREEN */ 120 121 #define LED_BLUE_INIT(output) \ 122 GPIO_PinWrite(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PIN, output); \ 123 BOARD_LED_BLUE_GPIO->PDDR |= (1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Enable target LED_BLUE */ 124 #define LED_BLUE_ON() \ 125 GPIO_PortClear(BOARD_LED_BLUE_GPIO, 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn on target LED_BLUE \ \ 126 */ 127 #define LED_BLUE_OFF() \ 128 GPIO_PortSet(BOARD_LED_BLUE_GPIO, 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn off target LED_BLUE \ \ 129 */ 130 #define LED_BLUE_TOGGLE() \ 131 GPIO_PortToggle(BOARD_LED_BLUE_GPIO, 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Toggle on target LED_BLUE */ 132 133 #define BOARD_ACCEL_I2C_BASEADDR I2C0 134 #define BOARD_ACCEL_I2C_CLOCK_FREQ CLOCK_GetFreq(I2C0_CLK_SRC) 135 136 /* ERPC DSPI configuration */ 137 #define ERPC_BOARD_SPI_SLAVE_READY_USE_GPIO (1) 138 #define ERPC_BOARD_DSPI_BASEADDR SPI0 139 #define ERPC_BOARD_DSPI_BAUDRATE 500000U 140 #define ERPC_BOARD_DSPI_CLKSRC DSPI0_CLK_SRC 141 #define ERPC_BOARD_DSPI_CLK_FREQ CLOCK_GetFreq(DSPI0_CLK_SRC) 142 #define ERPC_BOARD_DSPI_INT_GPIO GPIOB 143 #define ERPC_BOARD_DSPI_INT_PORT PORTB 144 #define ERPC_BOARD_DSPI_INT_PIN 2U 145 #define ERPC_BOARD_DSPI_INT_PIN_IRQ PORTB_IRQn 146 #define ERPC_BOARD_DSPI_INT_PIN_IRQ_HANDLER PORTB_IRQHandler 147 148 /* DAC base address */ 149 #define BOARD_DAC_BASEADDR DAC0 150 151 /* Board accelerometer driver */ 152 #define BOARD_ACCEL_FXOS 153 154 #if defined(__cplusplus) 155 extern "C" { 156 #endif /* __cplusplus */ 157 158 /******************************************************************************* 159 * API 160 ******************************************************************************/ 161 void BOARD_InitDebugConsole(void); 162 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED 163 void BOARD_I2C_Init(I2C_Type *base, uint32_t clkSrc_Hz); 164 status_t BOARD_I2C_Send(I2C_Type *base, 165 uint8_t deviceAddress, 166 uint32_t subAddress, 167 uint8_t subaddressSize, 168 uint8_t *txBuff, 169 uint8_t txBuffSize); 170 status_t BOARD_I2C_Receive(I2C_Type *base, 171 uint8_t deviceAddress, 172 uint32_t subAddress, 173 uint8_t subaddressSize, 174 uint8_t *rxBuff, 175 uint8_t rxBuffSize); 176 void BOARD_Accel_I2C_Init(void); 177 status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff); 178 status_t BOARD_Accel_I2C_Receive( 179 uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize); 180 #endif /* SDK_I2C_BASED_COMPONENT_USED */ 181 #if defined(__cplusplus) 182 } 183 #endif /* __cplusplus */ 184 185 #endif /* _BOARD_H_ */ 186