ISSDK  1.8
IoT Sensing Software Development Kit
board.h
Go to the documentation of this file.
1 /*
2  * Copyright 2019 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 #include "fsl_port.h"
14 /*******************************************************************************
15  * Definitions
16  ******************************************************************************/
17 /*! @brief The board name */
18 #define BOARD_NAME "FRDM-K32L3A6"
19 
20 /* The UART to use for debug messages. */
21 #define BOARD_DEBUG_UART_TYPE kSerialPort_Uart
22 #define BOARD_DEBUG_UART_BAUDRATE 115200U
23 #define BOARD_DEBUG_UART_BASEADDR (uint32_t) LPUART0
24 #define BOARD_DEBUG_UART_INSTANCE 0U
25 #define BOARD_DEBUG_UART_CLK_FREQ CLOCK_GetIpFreq(kCLOCK_Lpuart0)
26 #define BOARD_UART_IRQ LPUART0_IRQn
27 #define BOARD_UART_IRQ_HANDLER LPUART0_IRQHandler
28 
29 /* @Brief Board accelerator sensor configuration */
30 #define BOARD_ACCEL_I2C_BASEADDR LPI2C3
31 #define BOARD_ACCEL_I2C_CLOCK_FREQ (CLOCK_GetIpFreq(kCLOCK_Lpi2c3))
32 
33 /* Definitions for eRPC MU transport layer */
34 #if defined(FSL_FEATURE_MU_SIDE_A)
35 #define MU_BASE MUA
36 #define MU_IRQ MUA_IRQn
37 #define MU_IRQ_HANDLER MUA_IRQHandler
38 #endif
39 #if defined(FSL_FEATURE_MU_SIDE_B)
40 #define MU_BASE MUB
41 #define MU_IRQ MUB_IRQn
42 #define MU_IRQ_HANDLER MUB_IRQHandler
43 #endif
44 #define MU_IRQ_PRIORITY (2)
45 
46 /*! @brief Define the port interrupt number for the board switches */
47 #ifndef BOARD_SW2_GPIO
48 #define BOARD_SW2_GPIO GPIOA
49 #endif
50 #ifndef BOARD_SW2_PORT
51 #define BOARD_SW2_PORT PORTA
52 #endif
53 #ifndef BOARD_SW2_GPIO_PIN
54 #define BOARD_SW2_GPIO_PIN 0U
55 #endif
56 #define BOARD_SW2_IRQ PORTA_IRQn
57 #define BOARD_SW2_IRQ_HANDLER PORTA_IRQHandler
58 #define BOARD_SW2_NAME "SW2"
59 
60 /* Board led color mapping */
61 #ifndef BOARD_LED_RED_GPIO
62 #define BOARD_LED_RED_GPIO GPIOA
63 #endif
64 #ifndef BOARD_LED_RED_GPIO_PIN
65 #define BOARD_LED_RED_GPIO_PIN 24U
66 #endif
67 
68 /*! @brief The TPM channel used for board */
69 #define BOARD_TPM_CHANNEL 0U
70 
71 #define LOGIC_LED_ON 1U
72 #define LOGIC_LED_OFF 0U
73 #ifndef BOARD_LED1_GPIO
74 #define BOARD_LED1_GPIO GPIOA
75 #endif
76 #ifndef BOARD_LED1_GPIO_PIN
77 #define BOARD_LED1_GPIO_PIN 24U
78 #endif
79 #ifndef BOARD_LED2_GPIO
80 #define BOARD_LED2_GPIO GPIOA
81 #endif
82 #ifndef BOARD_LED2_GPIO_PIN
83 #define BOARD_LED2_GPIO_PIN 23U
84 #endif
85 #ifndef BOARD_LED3_GPIO
86 #define BOARD_LED3_GPIO GPIOA
87 #endif
88 #ifndef BOARD_LED3_GPIO_PIN
89 #define BOARD_LED3_GPIO_PIN 22U
90 #endif
91 
92 #define LED1_INIT(output) \
93  GPIO_PinWrite(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PIN, output); \
94  BOARD_LED1_GPIO->PDDR |= (1U << BOARD_LED1_GPIO_PIN) /*!< Enable target LED1 */
95 #define LED1_ON() GPIO_PortSet(BOARD_LED1_GPIO, 1U << BOARD_LED1_GPIO_PIN) /*!< Turn on target LED1 */
96 #define LED1_OFF() GPIO_PortClear(BOARD_LED1_GPIO, 1U << BOARD_LED1_GPIO_PIN) /*!< Turn off target LED1 */
97 #define LED1_TOGGLE() GPIO_PortToggle(BOARD_LED1_GPIO, 1U << BOARD_LED1_GPIO_PIN) /*!< Toggle on target LED1 */
98 
99 #define LED2_INIT(output) \
100  GPIO_PinWrite(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PIN, output); \
101  BOARD_LED2_GPIO->PDDR |= (1U << BOARD_LED2_GPIO_PIN) /*!< Enable target LED2 */
102 #define LED2_ON() GPIO_PortSet(BOARD_LED2_GPIO, 1U << BOARD_LED2_GPIO_PIN) /*!< Turn on target LED2 */
103 #define LED2_OFF() GPIO_PortClear(BOARD_LED2_GPIO, 1U << BOARD_LED2_GPIO_PIN) /*!< Turn off target LED2 */
104 #define LED2_TOGGLE() GPIO_PortToggle(BOARD_LED2_GPIO, 1U << BOARD_LED2_GPIO_PIN) /*!< Toggle on target LED2 */
105 
106 #define LED3_INIT(output) \
107  GPIO_PinWrite(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PIN, output); \
108  BOARD_LED3_GPIO->PDDR |= (1U << BOARD_LED3_GPIO_PIN) /*!< Enable target LED3 */
109 #define LED3_ON() GPIO_PortSet(BOARD_LED3_GPIO, 1U << BOARD_LED3_GPIO_PIN) /*!< Turn on target LED3 */
110 #define LED3_OFF() GPIO_PortClear(BOARD_LED3_GPIO, 1U << BOARD_LED3_GPIO_PIN) /*!< Turn off target LED3 */
111 #define LED3_TOGGLE() GPIO_PortToggle(BOARD_LED3_GPIO, 1U << BOARD_LED3_GPIO_PIN) /*!< Toggle on target LED3 */
112 
113 #define BOARD_USDHC0_BASEADDR USDHC0
114 #define BOARD_USDHC_CD_PORT_BASE PORTC
115 #define BOARD_USDHC_CD_GPIO_BASE GPIOC
116 #define BOARD_USDHC_CD_GPIO_PIN 27
117 #define BOARD_USDHC_CD_PORT_IRQ PORTC_IRQn
118 #define BOARD_USDHC_CD_PORT_IRQ_HANDLER PORTC_IRQHandler
120 #define BOARD_USDHC_CD_GPIO_INIT() \
121  { \
122  gpio_pin_config_t sw_config = {kGPIO_DigitalInput, 0}; \
123  GPIO_PinInit(BOARD_USDHC_CD_GPIO_BASE, BOARD_USDHC_CD_GPIO_PIN, &sw_config); \
124  PORT_SetPinInterruptConfig(BOARD_USDHC_CD_PORT_BASE, BOARD_USDHC_CD_GPIO_PIN, kPORT_InterruptRisingEdge); \
125  }
127 #define BOARD_USDHC_CD_STATUS() (GPIO_PinRead(BOARD_USDHC_CD_GPIO_BASE, BOARD_USDHC_CD_GPIO_PIN))
128 
129 #define BOARD_USDHC_CD_INTERRUPT_STATUS() (GPIO_PortGetInterruptFlags(BOARD_USDHC_CD_GPIO_BASE))
130 #define BOARD_USDHC_CD_CLEAR_INTERRUPT(flag) (GPIO_PortClearInterruptFlags(BOARD_USDHC_CD_GPIO_BASE, flag))
131 #define BOARD_USDHC_CARD_INSERT_CD_LEVEL (1U)
132 #define BOARD_USDHC0_CLK_FREQ (CLOCK_GetIpFreq(kCLOCK_Sdhc0))
134 #define BOARD_SD_HOST_BASEADDR BOARD_USDHC0_BASEADDR
135 #define BOARD_SD_HOST_CLK_FREQ BOARD_USDHC0_CLK_FREQ
136 #define BOARD_SD_HOST_IRQ USDHC0_IRQn
137 #define BOARD_SD_SUPPORT_180V (0U)
138 #define BOARD_MMC_HOST_BASEADDR BOARD_USDHC0_BASEADDR
139 #define BOARD_MMC_HOST_CLK_FREQ BOARD_USDHC0_CLK_FREQ
140 #define BOARD_MMC_HOST_IRQ USDHC0_IRQn
141 #define BOARD_MMC_VCCQ_SUPPLY kMMC_VoltageWindows270to360
142 #define BOARD_MMC_VCC_SUPPLY kMMC_VoltageWindows270to360
143 #define BOARD_MMC_PIN_CONFIG(speed, strength)
145 /* this define not implement, due to EVK board have no power reset circuit */
146 #define BOARD_SD_POWER_RESET_GPIO ()
147 #define BOARD_SD_POWER_RESET_GPIO_PIN ()
148 #define BOARD_USDHC_SDCARD_POWER_CONTROL_INIT()
149 #define BOARD_USDHC_SDCARD_POWER_CONTROL(state)
150 #define BOARD_SD_PIN_CONFIG(speed, strength)
151 #define BOARD_USDHC_MMCCARD_POWER_CONTROL(enable)
152 #define BOARD_USDHC_MMCCARD_POWER_CONTROL_INIT()
154 #define LLWU_SW_GPIO BOARD_SW2_GPIO
155 #define LLWU_SW_PORT BOARD_SW2_PORT
156 #define LLWU_SW_GPIO_PIN BOARD_SW2_GPIO_PIN
157 #define LLWU_SW_IRQ BOARD_SW2_IRQ
158 #define LLWU_SW_IRQ_HANDLER BOARD_SW2_IRQ_HANDLER
159 #define LLWU_SW_NAME BOARD_SW2_NAME
161 #ifndef BOARD_SPI_FLASH_CS_GPIO
162 #define BOARD_SPI_FLASH_CS_GPIO GPIOB
163 #endif
164 #ifndef BOARD_SPI_FLASH_CS_GPIO_PIN
165 #define BOARD_SPI_FLASH_CS_GPIO_PIN 22U
166 #endif
167 #if defined(__cplusplus)
168 extern "C" {
169 #endif /* __cplusplus */
170 
171 /*******************************************************************************
172  * API
173  ******************************************************************************/
174 
175 void BOARD_InitDebugConsole(void);
176 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED
177 void BOARD_LPI2C_Init(LPI2C_Type *base, uint32_t clkSrc_Hz);
178 status_t BOARD_LPI2C_Send(LPI2C_Type *base,
179  uint8_t deviceAddress,
180  uint32_t subAddress,
181  uint8_t subaddressSize,
182  uint8_t *txBuff,
183  uint8_t txBuffSize);
184 status_t BOARD_LPI2C_Receive(LPI2C_Type *base,
185  uint8_t deviceAddress,
186  uint32_t subAddress,
187  uint8_t subaddressSize,
188  uint8_t *rxBuff,
189  uint8_t rxBuffSize);
190 void BOARD_Accel_I2C_Init(void);
191 status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff);
192 status_t BOARD_Accel_I2C_Receive(
193  uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);
194 #endif /* SDK_I2C_BASED_COMPONENT_USED */
195 #if defined(__cplusplus)
196 }
197 #endif /* __cplusplus */
198 
199 #endif /* _BOARD_H_ */
void BOARD_InitDebugConsole(void)
Definition: board.c:15