ISSDK  1.8
IoT Sensing Software Development Kit
board.h
Go to the documentation of this file.
1 /*
2  * Copyright 2018 NXP
3  * All rights reserved.
4  *
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  */
8 
9 #ifndef _BOARD_H_
10 #define _BOARD_H_
11 
12 #include "clock_config.h"
13 #include "fsl_common.h"
14 #include "fsl_reset.h"
15 #include "fsl_gpio.h"
16 
17 /*******************************************************************************
18  * Definitions
19  ******************************************************************************/
20 /*! @brief The board name */
21 #define BOARD_NAME "MIMXRT685-EVK"
22 #define BOARD_I3C_CODEC (1)
23 
24 /*! @brief The UART to use for debug messages. */
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 CLOCK_GetFreq(kCLOCK_Flexcomm0)
29 #define BOARD_DEBUG_UART_FRG_CLK \
30  (&(const clock_frg_clk_config_t){0, kCLOCK_FrgPllDiv, 0, 0}) /*!< Select FRG0 mux as frg_pll */
31 #define BOARD_DEBUG_UART_CLK_ATTACH kFRG_to_FLEXCOMM0
32 #define BOARD_DEBUG_UART_RST kFC0_RST_SHIFT_RSTn
33 #define BOARD_DEBUG_UART_CLKSRC kCLOCK_Flexcomm0
34 #define BOARD_UART_IRQ_HANDLER FLEXCOMM0_IRQHandler
35 #define BOARD_UART_IRQ FLEXCOMM0_IRQn
36 
37 #ifndef BOARD_DEBUG_UART_BAUDRATE
38 #define BOARD_DEBUG_UART_BAUDRATE 115200
39 #endif /* BOARD_DEBUG_UART_BAUDRATE */
40 
41 #if BOARD_I3C_CODEC
42 #define BOARD_CODEC_I2C_BASEADDR I3C
43 #define BOARD_CODEC_I2C_CLOCK_FREQ CLOCK_GetFreq(kCLOCK_I3cClk)
44 #else
45 #define BOARD_CODEC_I2C_BASEADDR I2C4
46 #define BOARD_CODEC_I2C_CLOCK_FREQ CLOCK_GetFreq(kCLOCK_Flexcomm4)
47 #endif
48 
49 #define BOARD_PMIC_I2C_BASEADDR I2C15
50 #define BOARD_PMIC_I2C_CLOCK_FREQ CLOCK_GetFreq(kCLOCK_Flexcomm15)
51 
52 #define BOARD_ACCEL_I2C_BASEADDR I2C2
53 #define BOARD_ACCEL_I2C_CLOCK_FREQ CLOCK_GetFreq(kCLOCK_Flexcomm2)
54 
55 /* Board led color mapping */
56 #define LOGIC_LED_ON 1U
57 #define LOGIC_LED_OFF 0U
58 
59 #ifndef BOARD_LED_RED_GPIO
60 #define BOARD_LED_RED_GPIO GPIO
61 #endif
62 #define BOARD_LED_RED_GPIO_PORT 0U
63 #ifndef BOARD_LED_RED_GPIO_PIN
64 #define BOARD_LED_RED_GPIO_PIN 31U
65 #endif
66 
67 #ifndef BOARD_LED_GREEN_GPIO
68 #define BOARD_LED_GREEN_GPIO GPIO
69 #endif
70 #define BOARD_LED_GREEN_GPIO_PORT 0U
71 #ifndef BOARD_LED_GREEN_GPIO_PIN
72 #define BOARD_LED_GREEN_GPIO_PIN 14U
73 #endif
74 #ifndef BOARD_LED_BLUE_GPIO
75 #define BOARD_LED_BLUE_GPIO GPIO
76 #endif
77 #define BOARD_LED_BLUE_GPIO_PORT 0U
78 #ifndef BOARD_LED_BLUE_GPIO_PIN
79 #define BOARD_LED_BLUE_GPIO_PIN 26U
80 #endif
81 
82 #define LED_RED_INIT(output) \
83  GPIO_PinInit(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, BOARD_LED_RED_GPIO_PIN, \
84  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED_RED */
85 #define LED_RED_ON() \
86  GPIO_PortSet(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, \
87  1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn on target LED_RED */
88 #define LED_RED_OFF() \
89  GPIO_PortClear(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, \
90  1U << BOARD_LED_RED_GPIO_PIN) /*!< Turn off target LED_RED */
91 #define LED_RED_TOGGLE() \
92  GPIO_PortToggle(BOARD_LED_RED_GPIO, BOARD_LED_RED_GPIO_PORT, \
93  1U << BOARD_LED_RED_GPIO_PIN) /*!< Toggle on target LED_RED */
94 
95 #define LED_GREEN_INIT(output) \
96  GPIO_PinInit(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, BOARD_LED_GREEN_GPIO_PIN, \
97  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED_GREEN */
98 #define LED_GREEN_ON() \
99  GPIO_PortSet(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \
100  1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn on target LED_GREEN */
101 #define LED_GREEN_OFF() \
102  GPIO_PortClear(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \
103  1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn off target LED_GREEN */
104 #define LED_GREEN_TOGGLE() \
105  GPIO_PortToggle(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PORT, \
106  1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Toggle on target LED_GREEN */
107 
108 #define LED_BLUE_INIT(output) \
109  GPIO_PinInit(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_GPIO_PIN, \
110  &(gpio_pin_config_t){kGPIO_DigitalOutput, (output)}) /*!< Enable target LED_BLUE */
111 #define LED_BLUE_ON() \
112  GPIO_PortSet(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \
113  1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn on target LED_BLUE */
114 #define LED_BLUE_OFF() \
115  GPIO_PortClear(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \
116  1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn off target LED_BLUE */
117 #define LED_BLUE_TOGGLE() \
118  GPIO_PortToggle(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PORT, \
119  1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Toggle on target LED_BLUE */
120 
121 /* Board SW PIN */
122 #ifndef BOARD_SW1_GPIO
123 #define BOARD_SW1_GPIO GPIO
124 #endif
125 #define BOARD_SW1_GPIO_PORT 1U
126 #ifndef BOARD_SW1_GPIO_PIN
127 #define BOARD_SW1_GPIO_PIN 1U
128 #endif
130 #ifndef BOARD_SW2_GPIO
131 #define BOARD_SW2_GPIO GPIO
132 #endif
133 #define BOARD_SW2_GPIO_PORT 0U
134 #ifndef BOARD_SW2_GPIO_PIN
135 #define BOARD_SW2_GPIO_PIN 27U
136 #endif
137 
138 /* USDHC configuration */
139 #define BOARD_SD_SUPPORT_180V (1)
140 #define BOARD_USDHC_CD_GPIO_BASE GPIO
141 #define BOARD_USDHC_CD_GPIO_PORT (2)
142 #define BOARD_USDHC_CD_GPIO_PIN (9)
143 #define BOARD_SD_POWER_RESET_GPIO (GPIO)
144 #define BOARD_SD_POWER_RESET_GPIO_PORT (2)
145 #define BOARD_SD_POWER_RESET_GPIO_PIN (10)
146 
147 /* Card detect handled by uSDHC, no GPIO interrupt */
148 #define BOARD_SD_DETECT_TYPE kSDMMCHOST_DetectCardByHostCD
149 #define BOARD_USDHC_CD_PORT_IRQ USDHC0_IRQn
150 #define BOARD_USDHC_CD_STATUS() 0
151 #define BOARD_USDHC_CD_INTERRUPT_STATUS() 0
152 #define BOARD_USDHC_CD_CLEAR_INTERRUPT(flag)
153 #define BOARD_USDHC_CD_GPIO_INIT()
154 
155 #define BOARD_HAS_SDCARD (1U)
156 #define BOARD_USDHC_CARD_INSERT_CD_LEVEL (0U)
158 #define BOARD_USDHC_MMCCARD_POWER_CONTROL_INIT()
159 #define BOARD_USDHC_MMCCARD_POWER_CONTROL(state)
160 #define BOARD_USDHC_SDCARD_POWER_CONTROL_INIT() \
161  { \
162  GPIO_PortInit(BOARD_SD_POWER_RESET_GPIO, BOARD_SD_POWER_RESET_GPIO_PORT); \
163  GPIO_PinInit(BOARD_SD_POWER_RESET_GPIO, BOARD_SD_POWER_RESET_GPIO_PORT, BOARD_SD_POWER_RESET_GPIO_PIN, \
164  &(gpio_pin_config_t){kGPIO_DigitalOutput, 0}); \
165  }
166 /*#define BOARD_USDHC_SDCARD_POWER_CONTROL(state) \
167  GPIO_PortSet(BOARD_SD_POWER_RESET_GPIO, BOARD_SD_POWER_RESET_GPIO_PORT, (state ? 1U : 0U) \
168  << BOARD_SD_POWER_RESET_GPIO_PIN)*/
170 #define BOARD_USDHC_SDCARD_POWER_CONTROL(state) \
171  (state ? \
172  GPIO_PortSet(BOARD_SD_POWER_RESET_GPIO, BOARD_SD_POWER_RESET_GPIO_PORT, 1 << BOARD_SD_POWER_RESET_GPIO_PIN) : \
173  GPIO_PortClear(BOARD_SD_POWER_RESET_GPIO, BOARD_SD_POWER_RESET_GPIO_PORT, \
174  1 << BOARD_SD_POWER_RESET_GPIO_PIN))
176 #define BOARD_USDHC0_BASEADDR USDHC0
177 #define BOARD_USDHC1_BASEADDR USDHC1
178 
179 #define BOARD_USDHC0_CLK_FREQ (CLOCK_GetFreq(kCLOCK_Sdio0Clk))
180 #define BOARD_USDHC1_CLK_FREQ (CLOCK_GetFreq(kCLOCK_Sdio1Clk))
181 
182 #define BOARD_USDHC_SWITCH_VOLTAGE_FUNCTION 1U
184 /* GT202 */
185 #define BOARD_INITGT202SHIELD_PWRON_GPIO GPIO
186 #define BOARD_INITGT202SHIELD_IRQ_GPIO GPIO
187 #define BOARD_INITGT202SHIELD_PWRON_DIRECTION kGPIO_DigitalOutput
188 #define BOARD_INITGT202SHIELD_IRQ_DIRECTION kGPIO_DigitalInput
189 #define BOARD_INITGT202SHIELD_PWRON_PORT 1
190 #define BOARD_INITGT202SHIELD_IRQ_PORT 1
191 #define BOARD_INITGT202SHIELD_PWRON_GPIO_PIN 9
192 #define BOARD_INITGT202SHIELD_IRQ_GPIO_PIN 8
193 
194 /* Silex2401 */
195 #define BOARD_INITSILEX2401SHIELD_PWRON_GPIO GPIO
196 #define BOARD_INITSILEX2401SHIELD_IRQ_GPIO GPIO
197 #define BOARD_INITSILEX2401SHIELD_PWRON_DIRECTION kGPIO_DigitalOutput
198 #define BOARD_INITSILEX2401SHIELD_IRQ_DIRECTION kGPIO_DigitalInput
199 #define BOARD_INITSILEX2401SHIELD_PWRON_PORT 1
200 #define BOARD_INITSILEX2401SHIELD_IRQ_PORT 0
201 #define BOARD_INITSILEX2401SHIELD_PWRON_GPIO_PIN 0
202 #define BOARD_INITSILEX2401SHIELD_IRQ_GPIO_PIN 28
204 #define BOARD_SD_HOST_BASEADDR BOARD_USDHC0_BASEADDR
205 #define BOARD_SD_HOST_CLK_FREQ BOARD_USDHC0_CLK_FREQ
206 #define BOARD_SD_HOST_IRQ USDHC0_IRQn
207 
208 #define BOARD_SD_Pin_Config(speed, strength)
210 /* USB PHY condfiguration */
211 #define BOARD_USB_PHY_D_CAL (0x0CU)
212 #define BOARD_USB_PHY_TXCAL45DP (0x06U)
213 #define BOARD_USB_PHY_TXCAL45DM (0x06U)
215 #define BOARD_FLASH_SIZE (0x4000000U)
216 #if defined(__cplusplus)
217 extern "C" {
218 #endif /* __cplusplus */
220 /*******************************************************************************
221  * API
222  ******************************************************************************/
225 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED
226 void BOARD_I2C_Init(I2C_Type *base, uint32_t clkSrc_Hz);
227 status_t BOARD_I2C_Send(I2C_Type *base,
228  uint8_t deviceAddress,
229  uint32_t subAddress,
230  uint8_t subaddressSize,
231  uint8_t *txBuff,
232  uint8_t txBuffSize);
233 status_t BOARD_I2C_Receive(I2C_Type *base,
234  uint8_t deviceAddress,
235  uint32_t subAddress,
236  uint8_t subaddressSize,
237  uint8_t *rxBuff,
238  uint8_t rxBuffSize);
239 #endif
240 #if defined BOARD_USE_CODEC
241 void BOARD_I3C_Init(I3C_Type *base, uint32_t clkSrc_Hz);
242 status_t BOARD_I3C_Send(I3C_Type *base,
243  uint8_t deviceAddress,
244  uint32_t subAddress,
245  uint8_t subaddressSize,
246  uint8_t *txBuff,
247  uint8_t txBuffSize);
248 status_t BOARD_I3C_Receive(I3C_Type *base,
249  uint8_t deviceAddress,
250  uint32_t subAddress,
251  uint8_t subaddressSize,
252  uint8_t *rxBuff,
253  uint8_t rxBuffSize);
254 void BOARD_Codec_I2C_Init(void);
255 status_t BOARD_Codec_I2C_Send(
256  uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, const uint8_t *txBuff, uint8_t txBuffSize);
257 status_t BOARD_Codec_I2C_Receive(
258  uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);
259 #endif
260 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED
261 void BOARD_PMIC_I2C_Init(void);
262 status_t BOARD_PMIC_I2C_Send(
263  uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, const uint8_t *txBuff, uint8_t txBuffSize);
264 status_t BOARD_PMIC_I2C_Receive(
265  uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);
266 
267 void BOARD_Accel_I2C_Init(void);
268 status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff);
269 status_t BOARD_Accel_I2C_Receive(
270  uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);
271 
272 #endif /* SDK_I2C_BASED_COMPONENT_USED */
273 #if defined(__cplusplus)
274 }
275 #endif /* __cplusplus */
276 
277 #endif /* _BOARD_H_ */
void BOARD_InitDebugConsole(void)
Definition: board.c:15
#define I2C_Type
Definition: frdm_ke15z.h:130