ISSDK  1.8
IoT Sensing Software Development Kit
evkmimxrt1020.c
Go to the documentation of this file.
1 /*
2  * Copyright 2017 NXP
3  * All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 /**
9  * @file evkmimxrt1020.c
10  * @brief The evkmimxrt1020.c file defines GPIO pins and I2C CMSIS utilities for evkmimxrt1020 board.
11  */
12 
13 #include "evkmimxrt1020.h"
14 
15 // I2C20 Pin Handles
16 // GPIO_SD_B1_02
18  .pinNumber = 2,
19  .mask = 1 << (2),
20  .irq = GPIO1_Combined_0_15_IRQn,
21  .portNumber = GPIO1_NUM};
22 // GPIO_SD_B1_03
24  .pinNumber = 3,
25  .mask = 1 << (3),
26  .irq = GPIO1_Combined_0_15_IRQn,
27  .portNumber = GPIO1_NUM};
28 
29 // I2C1 Pin Handles
30 // GPIO_AD_B1_14
32  .pinNumber = 14,
33  .mask = 1 << (14),
34  .irq = GPIO1_Combined_0_15_IRQn,
35  .portNumber = GPIO1_NUM};
36 // GPIO_AD_B1_15
38  .pinNumber = 15,
39  .mask = 1 << (15),
40  .irq = GPIO1_Combined_0_15_IRQn,
41  .portNumber = GPIO1_NUM};
42 
43 // LPSPI1 Pin Handles
44 // GPIO_AD_B0_10
46  .pinNumber = 10,
47  .mask = 1 << (10),
48  .irq = GPIO3_Combined_0_15_IRQn,
49  .portNumber = GPIO3_NUM};
50 // GPIO_AD_B0_13
52  .pinNumber = 13,
53  .mask = 1 << (13),
54  .irq = GPIO3_Combined_0_15_IRQn,
55  .portNumber = GPIO3_NUM};
56 // GPIO_AD_B0_12
58  .pinNumber = 12,
59  .mask = 1 << (12),
60  .irq = GPIO3_Combined_0_15_IRQn,
61  .portNumber = GPIO3_NUM};
62 // GPIO_AD_B0_11
64  .pinNumber = 11,
65  .mask = 1 << (11),
66  .irq = GPIO3_Combined_0_15_IRQn,
67  .portNumber = GPIO3_NUM};
68 
69 // LPUART1 Handle
70 // GPIO_AD_B1_09
72  .pinNumber = 9,
73  .mask = 1 << (9),
74  .irq = GPIO2_Combined_0_15_IRQn,
75  .portNumber = GPIO2_NUM};
76 // GPIO_AD_B1_08
78  .pinNumber = 8,
79  .mask = 1 << (8),
80  .irq = GPIO2_Combined_16_31_IRQn,
81  .portNumber = GPIO2_NUM};
82 
83 // evkmimxrt1020 Arduino Connector Pin Defintion
85  .pinNumber = 26,
86  .mask = 1 << (26),
87  .irq = GPIO1_Combined_16_31_IRQn,
88  .portNumber = GPIO1_NUM};
90  .pinNumber = 27,
91  .mask = 1 << (27),
92  .irq = GPIO1_Combined_16_31_IRQn,
93  .portNumber = GPIO1_NUM};
95  .pinNumber = 20,
96  .mask = 1 << (20),
97  .irq = GPIO1_Combined_16_31_IRQn,
98  .portNumber = GPIO1_NUM};
100  .pinNumber = 21,
101  .mask = 1 << (21),
102  .irq = GPIO1_Combined_16_31_IRQn,
103  .portNumber = GPIO1_NUM};
105  .pinNumber = 11,
106  .mask = 1 << (11),
107  .irq = GPIO1_Combined_0_15_IRQn,
108  .portNumber = GPIO1_NUM};
110  .pinNumber = 24,
111  .mask = 1 << (24),
112  .irq = GPIO1_Combined_16_31_IRQn,
113  .portNumber = GPIO1_NUM};
115  .pinNumber = 9,
116  .mask = 1 << (9),
117  .irq = GPIO1_Combined_0_15_IRQn,
118  .portNumber = GPIO1_NUM};
120  .pinNumber = 10,
121  .mask = 1 << (10),
122  .irq = GPIO1_Combined_0_15_IRQn,
123  .portNumber = GPIO1_NUM};
125  .pinNumber = 18,
126  .mask = 1 << (18),
127  .irq = GPIO1_Combined_16_31_IRQn,
128  .portNumber = GPIO1_NUM};
130  .pinNumber = 19,
131  .mask = 1 << (19),
132  .irq = GPIO1_Combined_16_31_IRQn,
133  .portNumber = GPIO1_NUM};
135  .pinNumber = 3,
136  .mask = 1 << (3),
137  .irq = GPIO1_Combined_0_15_IRQn,
138  .portNumber = GPIO1_NUM};
140  .pinNumber = 2,
141  .mask = 1 << (2),
142  .irq = GPIO1_Combined_0_15_IRQn,
143  .portNumber = GPIO1_NUM};
144 
145 // K3S Internal Peripheral Pin Definitions
146 // LEDs mapped to USER_LED
148  .pinNumber = 9,
149  .mask = 1 << (9),
150  .irq = GPIO1_Combined_0_15_IRQn,
151  .portNumber = GPIO1_NUM};
153  .pinNumber = 9,
154  .mask = 1 << (9),
155  .irq = GPIO1_Combined_0_15_IRQn,
156  .portNumber = GPIO1_NUM};
158  .pinNumber = 9,
159  .mask = 1 << (9),
160  .irq = GPIO1_Combined_0_15_IRQn,
161  .portNumber = GPIO1_NUM};
162 
163 // i.MXRT1050 EVK Combo Sensor Pin Definitions
165  .pinNumber = 10,
166  .mask = 1 << (10),
167  .irq = GPIO1_Combined_0_15_IRQn,
168  .portNumber = GPIO1_NUM};
170  .pinNumber = 11,
171  .mask = 1 << (11),
172  .irq = GPIO1_Combined_0_15_IRQn,
173  .portNumber = GPIO1_NUM};
174 
175 
176 /*
177  * Execute the instrument to enter low power.
178  */
179 static void stop(void)
180 {
181  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
182  __asm("WFI");
183 }
184 
185 /*!
186  * @brief Configures the system to WAIT power mode.
187  * API name used from Kinetis family to maintain compatibility.
188  *
189  * @param Power peripheral base address (dummy).
190  * @return Configuration error code.
191  */
192 status_t SMC_SetPowerModeWait(void *arg)
193 {
194  CLOCK_SetMode(kCLOCK_ModeWait);
195  stop();
196 
197  return kStatus_Success;
198 }
199 
200 /*!
201  * @brief Configures the system to VLPR power mode.
202  * API name used from Kinetis family to maintain compatibility.
203  *
204  * @param Power peripheral base address (dummy).
205  * @return Configuration error code.
206  */
207 status_t SMC_SetPowerModeVlpr(void *arg)
208 {
209  CLOCK_SetMode(kCLOCK_ModeWait);
210  stop();
211 
212  return kStatus_Success;
213 }
214 
215 /*! @brief Determines the Clock Frequency feature.
216  * @details The Clock Frequecny computation API required by fsl_uart_cmsis.c.
217  * @param[in] void
218  * @Constraints None
219  * @Reentrant Yes
220  * @return uint32_t Returns the clock frequency .
221  */
222 uint32_t LPUART1_GetFreq(void)
223 {
224  return CLOCK_GetFreq((clock_name_t) kCLOCK_Lpuart1);
225 }
226 
227 /*! @brief Determines the Clock Frequency feature.
228  * @details The Clock Frequecny computation API required by fsl_i2c_cmsis.c.
229  * @param[in] void
230  * @Constraints None
231  * @Reentrant Yes
232  * @return uint32_t Returns the clock frequency .
233  */
234 uint32_t LPI2C1_GetFreq(void)
235 {
236  return CLOCK_GetFreq((clock_name_t) kCLOCK_Lpi2c1);
237 }
238 
239 /*! @brief Determines the Clock Frequency feature.
240  * @details The Clock Frequecny computation API required by fsl_spi_cmsis.c.
241  * @param[in] void
242  * @Constraints None
243  * @Reentrant Yes
244  * @return uint32_t Returns the clock frequency .
245  */
246 uint32_t LPSPI1_GetFreq(void)
247 {
248  return CLOCK_GetFreq((clock_name_t) kCLOCK_Lpspi1);
249 }
gpioHandleiMXSDK_t A0
Definition: evkmimxrt1020.c:84
gpioHandleiMXSDK_t INT1
gpioHandleiMXSDK_t D1
Definition: evkmimxrt1020.c:77
gpioHandleiMXSDK_t A2
Definition: evkmimxrt1020.c:94
gpioHandleiMXSDK_t BLUE_LED
status_t SMC_SetPowerModeWait(void *arg)
Configures the system to WAIT power mode. API name used from Kinetis family to maintain compatibility...
gpioHandleiMXSDK_t D8
gpioHandleiMXSDK_t GREEN_LED
gpioHandleiMXSDK_t D7
gpioHandleiMXSDK_t D15
Definition: evkmimxrt1020.c:17
gpioHandleiMXSDK_t INT2
gpioHandleiMXSDK_t A1
Definition: evkmimxrt1020.c:89
uint32_t LPI2C1_GetFreq(void)
Determines the Clock Frequency feature.
uint32_t LPSPI1_GetFreq(void)
Determines the Clock Frequency feature.
gpioHandleiMXSDK_t D6
gpioHandleiMXSDK_t A4
Definition: evkmimxrt1020.c:37
gpioHandleiMXSDK_t RED_LED
gpioHandleiMXSDK_t D11
Definition: evkmimxrt1020.c:57
gpioHandleiMXSDK_t D9
gpioHandleiMXSDK_t D4
gpioHandleiMXSDK_t D13
Definition: evkmimxrt1020.c:45
uint32_t LPUART1_GetFreq(void)
Determines the Clock Frequency feature.
The GPIO pin handle for i.MX SDK.
Definition: gpio_driver.h:49
gpioHandleiMXSDK_t D5
gpioHandleiMXSDK_t D14
Definition: evkmimxrt1020.c:23
gpioHandleiMXSDK_t A5
Definition: evkmimxrt1020.c:31
GPIO_Type * base
Definition: gpio_driver.h:51
status_t SMC_SetPowerModeVlpr(void *arg)
Configures the system to VLPR power mode. API name used from Kinetis family to maintain compatibility...
gpioHandleiMXSDK_t D2
gpioHandleiMXSDK_t D12
Definition: evkmimxrt1020.c:51
The evkmimxrt1020.h file defines GPIO pin mappings for evkmimxrt1020 board.
gpioHandleiMXSDK_t D0
Definition: evkmimxrt1020.c:71
gpioHandleiMXSDK_t D3
gpioHandleiMXSDK_t D10
Definition: evkmimxrt1020.c:63
gpioHandleiMXSDK_t A3
Definition: evkmimxrt1020.c:99