1 /* 2 * Copyright 2023 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_gpio.h" 13 14 /******************************************************************************* 15 * Definitions 16 ******************************************************************************/ 17 /*! @brief The board name */ 18 #define BOARD_NAME "FRDM-KE17Z512" 19 20 /*! @brief The UART to use for debug messages. */ 21 #define BOARD_USE_UART 22 #define BOARD_DEBUG_UART_TYPE kSerialPort_Uart 23 #define BOARD_DEBUG_UART_BASEADDR (uint32_t) LPUART2 24 #define BOARD_DEBUG_UART_INSTANCE 2U 25 #define BOARD_DEBUG_UART_CLKSRC kCLOCK_IpSrcSysOscAsync 26 #define BOARD_UART_IRQ LPUART2_IRQn 27 #define BOARD_UART_IRQ_HANDLER LPUART2_IRQHandler 28 29 /* @Brief Board accelerator sensor configuration */ 30 #define BOARD_ACCEL_I2C_BASEADDR LPI2C0 31 #define BOARD_ACCEL_I2C_CLOCK_FREQ CLOCK_GetIpFreq(kCLOCK_Lpi2c0) 32 33 #ifndef BOARD_DEBUG_UART_BAUDRATE 34 #define BOARD_DEBUG_UART_BAUDRATE 115200 35 #endif /* BOARD_DEBUG_UART_BAUDRATE */ 36 37 /*! @brief The i2c instance used for i2c connection by default */ 38 #define BOARD_I2C_BASEADDR LPI2C0 39 40 /*! @brief The CMP instance/channel used for board. */ 41 #define BOARD_CMP_BASEADDR CMP0 42 #define BOARD_CMP_CHANNEL 0U 43 44 /*! @brief The rtc instance used for board. */ 45 #define BOARD_RTC_FUNC_BASEADDR RTC 46 47 /*! @brief Indexes of the TSI channels for on-board electrodes */ 48 #ifndef BOARD_TSI_ELECTRODE_1 49 #define BOARD_TSI_ELECTRODE_1 19U /* PTD16, TSI0_CH19 */ 50 #endif 51 #ifndef BOARD_TSI_ELECTRODE_2 52 #define BOARD_TSI_ELECTRODE_2 3U /* PTA1, TSI1_CH3*/ 53 #endif 54 55 /*! @brief Define the port interrupt number for the board switches */ 56 #ifndef BOARD_SW2_GPIO 57 #define BOARD_SW2_GPIO GPIOE 58 #endif 59 #ifndef BOARD_SW2_PORT 60 #define BOARD_SW2_PORT PORTE 61 #endif 62 #ifndef BOARD_SW2_GPIO_PIN 63 #define BOARD_SW2_GPIO_PIN 14U 64 #endif 65 #define BOARD_SW2_IRQ PORTAE_IRQn 66 #define BOARD_SW2_IRQ_HANDLER PORTAE_IRQHandler 67 #define BOARD_SW2_NAME "SW2" 68 69 /* Board RGB LED color mapping */ 70 #define LOGIC_LED_ON 0U 71 #define LOGIC_LED_OFF 1U 72 #ifndef BOARD_LED_RED_GPIO 73 #define BOARD_LED_RED_GPIO GPIOD 74 #endif 75 #define BOARD_LED_RED_GPIO_PORT PORTD 76 #ifndef BOARD_LED_RED_GPIO_PIN 77 #define BOARD_LED_RED_GPIO_PIN 10U 78 #endif 79 #ifndef BOARD_LED_GREEN_GPIO 80 #define BOARD_LED_GREEN_GPIO GPIOD 81 #endif 82 #define BOARD_LED_GREEN_GPIO_PORT PORTD 83 #ifndef BOARD_LED_GREEN_GPIO_PIN 84 #define BOARD_LED_GREEN_GPIO_PIN 5U 85 #endif 86 #ifndef BOARD_LED_BLUE_GPIO 87 #define BOARD_LED_BLUE_GPIO GPIOD 88 #endif 89 #define BOARD_LED_BLUE_GPIO_PORT PORTD 90 #ifndef BOARD_LED_BLUE_GPIO_PIN 91 #define BOARD_LED_BLUE_GPIO_PIN 12U 92 #endif 93 94 /*! @brief FRDM-TOUCH board defines */ 95 /* Push buttons - mutual electrodes */ 96 #define FRDM_TOUCH_BOARD_TSI_MUTUAL_TX_ELECTRODE_1 TF_TSI_MUTUAL_CAP_TX_CHANNEL_5 /* PTA10 */ 97 #define FRDM_TOUCH_BOARD_TSI_MUTUAL_RX_ELECTRODE_1 TF_TSI_MUTUAL_CAP_RX_CHANNEL_9 /* PTE11 */ 98 #define FRDM_TOUCH_BOARD_TSI_MUTUAL_TX_ELECTRODE_2 TF_TSI_MUTUAL_CAP_TX_CHANNEL_5 /* PTA10 */ 99 #define FRDM_TOUCH_BOARD_TSI_MUTUAL_RX_ELECTRODE_2 TF_TSI_MUTUAL_CAP_RX_CHANNEL_8 /* PTC5 */ 100 #define FRDM_TOUCH_BOARD_TSI_MUTUAL_TX_ELECTRODE_3 TF_TSI_MUTUAL_CAP_TX_CHANNEL_4 /* PTA11 */ 101 #define FRDM_TOUCH_BOARD_TSI_MUTUAL_RX_ELECTRODE_3 TF_TSI_MUTUAL_CAP_RX_CHANNEL_9 /* PTE11 */ 102 #define FRDM_TOUCH_BOARD_TSI_MUTUAL_TX_ELECTRODE_4 TF_TSI_MUTUAL_CAP_TX_CHANNEL_4 /* PTA11 */ 103 #define FRDM_TOUCH_BOARD_TSI_MUTUAL_RX_ELECTRODE_4 TF_TSI_MUTUAL_CAP_RX_CHANNEL_8 /* PTC5 */ 104 105 /* Slider - self electrodes */ 106 #define FRDM_TOUCH_BOARD_TSI_SLIDER_ELECTRODE_1 TF_TSI_SELF_CAP_CHANNEL_15 /* PTE13 */ 107 #define FRDM_TOUCH_BOARD_TSI_SLIDER_ELECTRODE_2 TF_TSI_SELF_CAP_CHANNEL_16 /* PTE5 */ 108 109 /* Rotary - self electrodes */ 110 #define FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_1 TF_TSI_SELF_CAP_CHANNEL_10 /* PTE10 */ 111 #define FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_2 TF_TSI_SELF_CAP_CHANNEL_11 /* PTD1 */ 112 #define FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_3 TF_TSI_SELF_CAP_CHANNEL_13 /* PTE16 */ 113 #define FRDM_TOUCH_BOARD_TSI_ROTARY_ELECTRODE_4 TF_TSI_SELF_CAP_CHANNEL_14 /* PTE15 */ 114 115 /*! @brief Indexes of the TSI mutual channels for FRDM-TOUCH board */ 116 #define BOARD_TSI_MUTUAL_TX_ELECTRODE_1 5U 117 #define BOARD_TSI_MUTUAL_RX_ELECTRODE_1 9U 118 119 #define LED_RED_INIT(output) \ 120 GPIO_PinWrite(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PIN, output); \ 121 BOARD_LED_RED_GPIO->PDDR |= (1U << BOARD_LED_RED_GPIO_PIN) /*!< Enable target LED_RED */ 122 #define LED_RED_ON() GPIO_PortClear(BOARD_LED_RED_GPIO, 1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn on target LED_RED */ 123 #define LED_RED_OFF() GPIO_PortSet(BOARD_LED_RED_GPIO, 1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn off target LED_RED */ 124 #define LED_RED_TOGGLE() \ 125 GPIO_PortToggle(BOARD_LED_RED_GPIO, 1U << BOARD_LED_RED_GPIO_PIN) /*!< Toggle on target LED_RED1 */ 126 127 #define LED_GREEN_INIT(output) \ 128 GPIO_PinWrite(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PIN, output); \ 129 BOARD_LED_GREEN_GPIO->PDDR |= (1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Enable target LED_GREEN */ 130 #define LED_GREEN_ON() \ 131 GPIO_PortClear(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn on target LED_GREEN */ 132 #define LED_GREEN_OFF() \ 133 GPIO_PortSet(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn off target LED_GREEN */ 134 #define LED_GREEN_TOGGLE() \ 135 GPIO_PortToggle(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Toggle on target LED_GREEN */ 136 137 #define LED_BLUE_INIT(output) \ 138 GPIO_PinWrite(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PIN, output); \ 139 BOARD_LED_BLUE_GPIO->PDDR |= (1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Enable target LED_BLUE */ 140 #define LED_BLUE_ON() \ 141 GPIO_PortClear(BOARD_LED_BLUE_GPIO, 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn on target LED_BLUE \ 142 */ 143 #define LED_BLUE_OFF() \ 144 GPIO_PortSet(BOARD_LED_BLUE_GPIO, 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn off target LED_BLUE \ 145 */ 146 #define LED_BLUE_TOGGLE() \ 147 GPIO_PortToggle(BOARD_LED_BLUE_GPIO, 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Toggle on target LED_BLUE */ 148 149 #if defined(__cplusplus) 150 extern "C" { 151 #endif /* __cplusplus */ 152 153 /******************************************************************************* 154 * API 155 ******************************************************************************/ 156 157 void BOARD_InitDebugConsole(void); 158 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED 159 void BOARD_LPI2C_Init(LPI2C_Type *base, uint32_t clkSrc_Hz); 160 status_t BOARD_LPI2C_Send(LPI2C_Type *base, 161 uint8_t deviceAddress, 162 uint32_t subAddress, 163 uint8_t subaddressSize, 164 uint8_t *txBuff, 165 uint8_t txBuffSize); 166 status_t BOARD_LPI2C_Receive(LPI2C_Type *base, 167 uint8_t deviceAddress, 168 uint32_t subAddress, 169 uint8_t subaddressSize, 170 uint8_t *rxBuff, 171 uint8_t rxBuffSize); 172 void BOARD_Accel_I2C_Init(void); 173 status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff); 174 status_t BOARD_Accel_I2C_Receive( 175 uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize); 176 #endif /* SDK_I2C_BASED_COMPONENT_USED */ 177 178 #if defined(__cplusplus) 179 } 180 #endif /* __cplusplus */ 181 182 #endif /* _BOARD_H_ */ 183