ISSDK  1.8
IoT Sensing Software Development Kit
evkmimxrt1015.c
Go to the documentation of this file.
1 /*
2  * Copyright 2018 NXP
3  * All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 /**
9  * @file evkmimxrt1015.c
10  * @brief The evkmimxrt1015.c file defines GPIO pins and I2C CMSIS utilities for evkmimxrt1015 board.
11  */
12 
13 #include "evkmimxrt1015.h"
14 
15 /*******************************************************************************
16  * Definitions
17  ******************************************************************************/
18 /* Select USB1 PLL (480 MHz) as master lpi2c clock source */
19 #define LPI2C_CLOCK_SOURCE_SELECT (0U)
20 /* Clock divider for master lpi2c clock source */
21 #define LPI2C_CLOCK_SOURCE_DIVIDER (5U)
22 /* Get frequency of lpi2c clock */
23 #define LPI2C_CLOCK_FREQUENCY ((CLOCK_GetFreq(kCLOCK_Usb1PllClk) / 8) / (LPI2C_CLOCK_SOURCE_DIVIDER + 1U))
24 
25 // I2C20 Pin Handles
26 // GPIO_SD_B1_02
28  .base = GPIO1, .pinNumber = 2, .mask = 1 << (2), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
29 // GPIO_SD_B1_03
31  .base = GPIO1, .pinNumber = 3, .mask = 1 << (3), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
32 
33 // I2C1 Pin Handles
34 // GPIO_AD_B1_14
36  .base = GPIO1, .pinNumber = 14, .mask = 1 << (14), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
37 // GPIO_AD_B1_15
39  .base = GPIO1, .pinNumber = 15, .mask = 1 << (15), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
40 
41 // LPSPI1 Pin Handles
42 // GPIO_AD_B0_10
44  .base = GPIO3, .pinNumber = 10, .mask = 1 << (10), .irq = GPIO3_Combined_0_15_IRQn, .portNumber = GPIO3_NUM};
45 // GPIO_AD_B0_13
47  .base = GPIO3, .pinNumber = 13, .mask = 1 << (13), .irq = GPIO3_Combined_0_15_IRQn, .portNumber = GPIO3_NUM};
48 // GPIO_AD_B0_12
50  .base = GPIO3, .pinNumber = 12, .mask = 1 << (12), .irq = GPIO3_Combined_0_15_IRQn, .portNumber = GPIO3_NUM};
51 // GPIO_AD_B0_11
53  .base = GPIO3, .pinNumber = 11, .mask = 1 << (11), .irq = GPIO3_Combined_0_15_IRQn, .portNumber = GPIO3_NUM};
54 
55 // LPUART1 Handle
56 // GPIO_AD_B1_09
58  .base = GPIO2, .pinNumber = 9, .mask = 1 << (9), .irq = GPIO2_Combined_0_15_IRQn, .portNumber = GPIO2_NUM};
59 // GPIO_AD_B1_08
61  .base = GPIO2, .pinNumber = 8, .mask = 1 << (8), .irq = GPIO2_Combined_16_31_IRQn, .portNumber = GPIO2_NUM};
62 
63 // evkmimxrt1015 Arduino Connector Pin Defintion
65  .base = GPIO1, .pinNumber = 26, .mask = 1 << (26), .irq = GPIO1_Combined_16_31_IRQn, .portNumber = GPIO1_NUM};
67  .base = GPIO1, .pinNumber = 27, .mask = 1 << (27), .irq = GPIO1_Combined_16_31_IRQn, .portNumber = GPIO1_NUM};
69  .base = GPIO1, .pinNumber = 20, .mask = 1 << (20), .irq = GPIO1_Combined_16_31_IRQn, .portNumber = GPIO1_NUM};
71  .base = GPIO1, .pinNumber = 21, .mask = 1 << (21), .irq = GPIO1_Combined_16_31_IRQn, .portNumber = GPIO1_NUM};
73  .base = GPIO1, .pinNumber = 11, .mask = 1 << (11), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
75  .base = GPIO1, .pinNumber = 24, .mask = 1 << (24), .irq = GPIO1_Combined_16_31_IRQn, .portNumber = GPIO1_NUM};
77  .base = GPIO1, .pinNumber = 9, .mask = 1 << (9), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
79  .base = GPIO1, .pinNumber = 10, .mask = 1 << (10), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
81  .base = GPIO1, .pinNumber = 18, .mask = 1 << (18), .irq = GPIO1_Combined_16_31_IRQn, .portNumber = GPIO1_NUM};
83  .base = GPIO1, .pinNumber = 19, .mask = 1 << (19), .irq = GPIO1_Combined_16_31_IRQn, .portNumber = GPIO1_NUM};
85  .base = GPIO1, .pinNumber = 3, .mask = 1 << (3), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
87  .base = GPIO1, .pinNumber = 2, .mask = 1 << (2), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
88 
89 // K3S Internal Peripheral Pin Definitions
90 // LEDs mapped to USER_LED
92  .base = GPIO1, .pinNumber = 9, .mask = 1 << (9), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
94  .base = GPIO1, .pinNumber = 9, .mask = 1 << (9), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
96  .base = GPIO1, .pinNumber = 9, .mask = 1 << (9), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
97 
98 // i.MXRT1050 EVK Combo Sensor Pin Definitions
100  .base = GPIO1, .pinNumber = 10, .mask = 1 << (10), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
102  .base = GPIO1, .pinNumber = 11, .mask = 1 << (11), .irq = GPIO1_Combined_0_15_IRQn, .portNumber = GPIO1_NUM};
103 
104 /*
105  * Execute the instrument to enter low power.
106  */
107 static void stop(void)
108 {
109  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
110  __asm("WFI");
111 }
112 
113 /*!
114  * @brief Configures the system to WAIT power mode.
115  * API name used from Kinetis family to maintain compatibility.
116  *
117  * @param Power peripheral base address (dummy).
118  * @return Configuration error code.
119  */
120 status_t SMC_SetPowerModeWait(void *arg)
121 {
122  CLOCK_SetMode(kCLOCK_ModeWait);
123  stop();
124 
125  return kStatus_Success;
126 }
127 
128 /*!
129  * @brief Configures the system to VLPR power mode.
130  * API name used from Kinetis family to maintain compatibility.
131  *
132  * @param Power peripheral base address (dummy).
133  * @return Configuration error code.
134  */
135 status_t SMC_SetPowerModeVlpr(void *arg)
136 {
137  CLOCK_SetMode(kCLOCK_ModeWait);
138  stop();
139 
140  return kStatus_Success;
141 }
142 
143 /*! @brief Determines the Clock Frequency feature.
144  * @details The Clock Frequecny computation API required by fsl_uart_cmsis.c.
145  * @param[in] void
146  * @Constraints None
147  * @Reentrant Yes
148  * @return uint32_t Returns the clock frequency .
149  */
150 uint32_t LPUART1_GetFreq(void)
151 {
152  return CLOCK_GetFreq((clock_name_t)kCLOCK_Lpuart1);
153 }
154 
155 /*! @brief Determines the Clock Frequency feature.
156  * @details The Clock Frequecny computation API required by fsl_i2c_cmsis.c.
157  * @param[in] void
158  * @Constraints None
159  * @Reentrant Yes
160  * @return uint32_t Returns the clock frequency .
161  */
162 uint32_t LPI2C1_GetFreq(void)
163 {
164  /*Clock setting for LPI2C*/
165  CLOCK_SetMux(kCLOCK_Lpi2cMux, LPI2C_CLOCK_SOURCE_SELECT);
166  CLOCK_SetDiv(kCLOCK_Lpi2cDiv, LPI2C_CLOCK_SOURCE_DIVIDER);
167  return CLOCK_GetFreq((clock_name_t)kCLOCK_Lpi2c1);
168 }
169 
170 /*! @brief Determines the Clock Frequency feature.
171  * @details The Clock Frequecny computation API required by fsl_spi_cmsis.c.
172  * @param[in] void
173  * @Constraints None
174  * @Reentrant Yes
175  * @return uint32_t Returns the clock frequency .
176  */
177 uint32_t LPSPI1_GetFreq(void)
178 {
179  return CLOCK_GetFreq((clock_name_t)kCLOCK_Lpspi1);
180 }
gpioHandleiMXSDK_t A0
Definition: evkmimxrt1015.c:64
gpioHandleiMXSDK_t D11
Definition: evkmimxrt1015.c:49
gpioHandleiMXSDK_t A2
Definition: evkmimxrt1015.c:68
The evkmimxrt1015.h file defines GPIO pin mappings for evkmimxrt1015 board.
gpioHandleiMXSDK_t D12
Definition: evkmimxrt1015.c:46
gpioHandleiMXSDK_t INT2
uint32_t LPI2C1_GetFreq(void)
Determines the Clock Frequency feature.
gpioHandleiMXSDK_t D0
Definition: evkmimxrt1015.c:57
gpioHandleiMXSDK_t D6
Definition: evkmimxrt1015.c:80
gpioHandleiMXSDK_t D1
Definition: evkmimxrt1015.c:60
uint32_t LPSPI1_GetFreq(void)
Determines the Clock Frequency feature.
#define LPI2C_CLOCK_SOURCE_DIVIDER
Definition: evkmimxrt1015.c:21
gpioHandleiMXSDK_t INT1
Definition: evkmimxrt1015.c:99
gpioHandleiMXSDK_t D14
Definition: evkmimxrt1015.c:30
gpioHandleiMXSDK_t A5
Definition: evkmimxrt1015.c:35
gpioHandleiMXSDK_t GREEN_LED
Definition: evkmimxrt1015.c:93
gpioHandleiMXSDK_t D15
Definition: evkmimxrt1015.c:27
gpioHandleiMXSDK_t A1
Definition: evkmimxrt1015.c:66
#define LPI2C_CLOCK_SOURCE_SELECT
Definition: evkmimxrt1015.c:19
status_t SMC_SetPowerModeWait(void *arg)
Configures the system to WAIT power mode. API name used from Kinetis family to maintain compatibility...
gpioHandleiMXSDK_t D3
Definition: evkmimxrt1015.c:74
gpioHandleiMXSDK_t D8
Definition: evkmimxrt1015.c:84
gpioHandleiMXSDK_t A4
Definition: evkmimxrt1015.c:38
gpioHandleiMXSDK_t D4
Definition: evkmimxrt1015.c:76
gpioHandleiMXSDK_t RED_LED
Definition: evkmimxrt1015.c:91
status_t SMC_SetPowerModeVlpr(void *arg)
Configures the system to VLPR power mode. API name used from Kinetis family to maintain compatibility...
gpioHandleiMXSDK_t D13
Definition: evkmimxrt1015.c:43
gpioHandleiMXSDK_t D7
Definition: evkmimxrt1015.c:82
The GPIO pin handle for i.MX SDK.
Definition: gpio_driver.h:49
gpioHandleiMXSDK_t D9
Definition: evkmimxrt1015.c:86
gpioHandleiMXSDK_t D5
Definition: evkmimxrt1015.c:78
GPIO_Type * base
Definition: gpio_driver.h:51
uint32_t LPUART1_GetFreq(void)
Determines the Clock Frequency feature.
gpioHandleiMXSDK_t BLUE_LED
Definition: evkmimxrt1015.c:95
gpioHandleiMXSDK_t D2
Definition: evkmimxrt1015.c:72
gpioHandleiMXSDK_t D10
Definition: evkmimxrt1015.c:52
gpioHandleiMXSDK_t A3
Definition: evkmimxrt1015.c:70