1 /*
2  * Copyright 2021 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 "TWR-KM34Z50MV3"
19 
20 /*! @brief The UART to use for debug messages. */
21 #define BOARD_DEBUG_UART_TYPE     kSerialPort_Uart
22 #define BOARD_DEBUG_UART_BASEADDR (uint32_t) UART1
23 #define BOARD_DEBUG_UART_INSTANCE 1U
24 #define BOARD_DEBUG_UART_CLKSRC   SYS_CLK
25 #define BOARD_DEBUG_UART_CLK_FREQ CLOCK_GetCoreSysClkFreq()
26 #define BOARD_UART_IRQ            UART0_UART1_IRQn
27 #define BOARD_UART_IRQ_HANDLER    UART0_UART1_IRQHandler
28 
29 #ifndef BOARD_DEBUG_UART_BAUDRATE
30 #define BOARD_DEBUG_UART_BAUDRATE 115200
31 #endif /* BOARD_DEBUG_UART_BAUDRATE */
32 
33 #ifndef BOARD_LPUART_CLOCK_SOURCE
34 #define BOARD_LPUART_CLOCK_SOURCE kClockLpuartSrcOsc0erClk
35 #endif
36 
37 /*! @brief The spi instance used for board. */
38 #define BOARD_SPI_BASEADDR SPI0
39 
40 /*! @brief The i2c instance used for board. */
41 #define BOARD_I2C_BASEADDR I2C0
42 
43 /*! @brief ADC0 input channel */
44 #define BOARD_ADC0_INPUT_CHANNEL 0U
45 
46 /*! @brief The CMP instance/channel used for board. */
47 #define BOARD_CMP_BASEADDR CMP2
48 #define BOARD_CMP_CHANNEL  4U
49 
50 /*! @brief The rtc instance used for board. */
51 #define BOARD_RTC_FUNC_BASEADDR RTC
52 
53 /*! @brief Define the port interrupt number for the board switches */
54 #ifndef BOARD_SW1_GPIO
55 #define BOARD_SW1_GPIO GPIOD
56 #endif
57 #ifndef BOARD_SW1_PORT
58 #define BOARD_SW1_PORT PORTD
59 #endif
60 #ifndef BOARD_SW1_GPIO_PIN
61 #define BOARD_SW1_GPIO_PIN 0U
62 #endif
63 #define BOARD_SW1_IRQ         PTx_IRQn
64 #define BOARD_SW1_IRQ_HANDLER PTx_IRQHandler
65 #define BOARD_SW1_NAME        "SW1"
66 
67 /* Board led color mapping */
68 #define LOGIC_LED_ON  0U
69 #define LOGIC_LED_OFF 1U
70 #ifndef BOARD_LED_RED_GPIO
71 #define BOARD_LED_RED_GPIO GPIOF
72 #endif
73 #define BOARD_LED_RED_GPIO_PORT PORTF
74 #ifndef BOARD_LED_RED_GPIO_PIN
75 #define BOARD_LED_RED_GPIO_PIN 1U
76 #endif
77 #ifndef BOARD_LED_GREEN_GPIO
78 #define BOARD_LED_GREEN_GPIO GPIOE
79 #endif
80 #define BOARD_LED_GREEN_GPIO_PORT PORTE
81 #ifndef BOARD_LED_GREEN_GPIO_PIN
82 #define BOARD_LED_GREEN_GPIO_PIN 5U
83 #endif
84 #ifndef BOARD_LED_ORANGE_GPIO
85 #define BOARD_LED_ORANGE_GPIO GPIOD
86 #endif
87 #define BOARD_LED_ORANGE_GPIO_PORT PORTD
88 #ifndef BOARD_LED_ORANGE_GPIO_PIN
89 #define BOARD_LED_ORANGE_GPIO_PIN 1U
90 #endif
91 
92 #define LED_RED_INIT(output)                                           \
93     GPIO_PinWrite(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PIN, output); \
94     BOARD_LED_RED_GPIO->PDDR |= (1U << BOARD_LED_RED_GPIO_PIN)                         /*!< Enable target LED_RED */
95 #define LED_RED_ON()  GPIO_PortClear(BOARD_LED_RED_GPIO, 1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn on target LED_RED */
96 #define LED_RED_OFF() GPIO_PortSet(BOARD_LED_RED_GPIO, 1U << BOARD_LED_RED_GPIO_PIN)   /*!< Turn off target LED_RED */
97 #define LED_RED_TOGGLE() \
98     GPIO_PortToggle(BOARD_LED_RED_GPIO, 1U << BOARD_LED_RED_GPIO_PIN) /*!< Toggle on target LED_RED */
99 
100 #define LED_GREEN_INIT(output)                                             \
101     GPIO_PinWrite(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PIN, output); \
102     BOARD_LED_GREEN_GPIO->PDDR |= (1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Enable target LED_GREEN */
103 #define LED_GREEN_ON() \
104     GPIO_PortClear(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn on target LED_GREEN */
105 #define LED_GREEN_OFF() \
106     GPIO_PortSet(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn off target LED_GREEN */
107 #define LED_GREEN_TOGGLE() \
108     GPIO_PortToggle(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Toggle on target LED_GREEN */
109 
110 #define LED_ORANGE_INIT(output)                                              \
111     GPIO_PinWrite(BOARD_LED_ORANGE_GPIO, BOARD_LED_ORANGE_GPIO_PIN, output); \
112     BOARD_LED_ORANGE_GPIO->PDDR |= (1U << BOARD_LED_ORANGE_GPIO_PIN) /*!< Enable target LED_ORANGE */
113 #define LED_ORANGE_ON() \
114     GPIO_PortClear(BOARD_LED_ORANGE_GPIO, 1U << BOARD_LED_ORANGE_GPIO_PIN) /*!< Turn on target LED_ORANGE */
115 #define LED_ORANGE_OFF() \
116     GPIO_PortSet(BOARD_LED_ORANGE_GPIO, 1U << BOARD_LED_ORANGE_GPIO_PIN) /*!< Turn off target LED_ORANGE */
117 #define LED_ORANGE_TOGGLE() \
118     GPIO_PortToggle(BOARD_LED_ORANGE_GPIO, 1U << BOARD_LED_ORANGE_GPIO_PIN) /*!< Toggle on target LED_ORANGE */
119 
120 #define BOARD_ACCEL_I2C_BASEADDR I2C0
121 
122 #if defined(__cplusplus)
123 extern "C" {
124 #endif /* __cplusplus */
125 
126 /*******************************************************************************
127  * API
128  ******************************************************************************/
129 
130 void BOARD_InitDebugConsole(void);
131 
132 #if defined(__cplusplus)
133 }
134 #endif /* __cplusplus */
135 
136 #endif /* _BOARD_H_ */
137