[bsp][nxp]support imxrt1180-evk board gpio and LPUART, Serial V2, DMA (V2) (#11489)

* support gpio and LPUART, Serial V2, DMA (V2)

* remove unused ci comment workflows

* fix: correct YAML indentation on line 12 in ci workflow files

* [bsp][nxp]support imxrt1180-evk board gpio and LPUART, Serial V2, DMA V2

* fix: address review feedback - revert CI/drv_uart.c/dev_serial.c, remove drv_uart_v2.h, use drv_uart.h instead

* revert: remove framework file changes per review feedback

* fix: remove unused variable 'value' in imxrt_pin_read

* fix: remove trailing whitespace in pin_mux.c
This commit is contained in:
shannon2000
2026-07-20 09:08:53 +08:00
committed by GitHub
parent 23c05e48a1
commit 247f540f6b
13 changed files with 5099 additions and 140 deletions
@@ -238,10 +238,11 @@ CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_UNAMED_PIPE_NUMBER=64
# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
CONFIG_RT_USING_SERIAL=y
CONFIG_RT_USING_SERIAL_V1=y
# CONFIG_RT_USING_SERIAL_V2 is not set
# CONFIG_RT_SERIAL_USING_DMA is not set
CONFIG_RT_SERIAL_RB_BUFSZ=64
# CONFIG_RT_USING_SERIAL_V1 is not set
CONFIG_RT_USING_SERIAL_V2=y
# CONFIG_RT_SERIAL_BUF_STRATEGY_DROP is not set
CONFIG_RT_SERIAL_BUF_STRATEGY_OVERWRITE=y
CONFIG_RT_SERIAL_USING_DMA=y
# CONFIG_RT_USING_SERIAL_BYPASS is not set
# CONFIG_RT_USING_CAN is not set
# CONFIG_RT_USING_CLOCK_TIME is not set
@@ -273,6 +274,7 @@ CONFIG_RT_USING_ADC=y
# CONFIG_RT_USING_BLK is not set
# CONFIG_RT_USING_REGULATOR is not set
# CONFIG_RT_USING_POWER_SUPPLY is not set
CONFIG_RT_USING_PIN=y
# CONFIG_RT_USING_CHERRYUSB is not set
# end of Device Drivers
@@ -1469,15 +1471,18 @@ CONFIG_BSP_USING_DMA=y
CONFIG_BSP_USING_LPADC=y
CONFIG_BSP_USING_LPADC1=y
CONFIG_BSP_LPADC1_USING_DMA=y
# CONFIG_BSP_USING_GPIO is not set
CONFIG_BSP_USING_GPIO=y
# CONFIG_BSP_USING_RTC is not set
# CONFIG_BSP_USING_USB is not set
# CONFIG_BSP_USING_SDIO is not set
CONFIG_BSP_USING_LPUART=y
CONFIG_BSP_USING_LPUART1=y
# CONFIG_BSP_LPUART1_RX_USING_DMA is not set
# CONFIG_BSP_LPUART1_TX_USING_DMA is not set
# CONFIG_BSP_USING_LPUART3 is not set
CONFIG_BSP_LPUART1_RX_USING_DMA=y
CONFIG_BSP_LPUART1_RX_DMA_CHANNEL=0
CONFIG_BSP_LPUART1_TX_USING_DMA=y
CONFIG_BSP_LPUART1_TX_DMA_CHANNEL=1
# CONFIG_BSP_USING_LPUART10 is not set
# CONFIG_BSP_USING_LPUART12 is not set
# CONFIG_BSP_USING_CAN is not set
# CONFIG_BSP_USING_FLEXSPI is not set
# end of On-chip Peripheral Drivers
@@ -12,14 +12,21 @@
#include <rtthread.h>
#include <rtdevice.h>
#include <drv_gpio.h>
#include <fsl_rgpio.h>
#define LED_PIN GET_PIN(4, 27)
int main(void)
{
rt_kprintf("MIMXRT1180_CM33 Hello_World\r\n");
rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);
while (1)
{
rt_pin_write(LED_PIN, PIN_HIGH);
rt_thread_mdelay(500);
rt_pin_write(LED_PIN, PIN_LOW);
rt_thread_mdelay(500);
}
}
@@ -118,34 +118,62 @@ menu "On-chip Peripheral Drivers"
int "Set LPUART1 TX DMA channel (0-32)"
default 1
config BSP_USING_LPUART3
bool "Enable LPUART3"
default n
config BSP_USING_LPUART10
bool "Enable LPUART10"
default n
config BSP_LPUART3_RX_USING_DMA
bool "Enable LPUART3 RX DMA"
depends on BSP_USING_LPUART3
select BSP_USING_DMA
select RT_SERIAL_USING_DMA
default n
config BSP_LPUART10_RX_USING_DMA
bool "Enable LPUART10 RX DMA"
depends on BSP_USING_LPUART10
select BSP_USING_DMA
select RT_SERIAL_USING_DMA
default n
config BSP_LPUART3_RX_DMA_CHANNEL
depends on BSP_LPUART3_RX_USING_DMA
int "Set LPUART3 RX DMA channel (0-32)"
default 0
config BSP_LPUART10_RX_DMA_CHANNEL
depends on BSP_LPUART10_RX_USING_DMA
int "Set LPUART10 RX DMA channel (0-32)"
default 0
config BSP_LPUART3_TX_USING_DMA
bool "Enable LPUART3 TX DMA"
depends on BSP_USING_LPUART3
select BSP_USING_DMA
select RT_SERIAL_USING_DMA
default n
config BSP_LPUART10_TX_USING_DMA
bool "Enable LPUART10 TX DMA"
depends on BSP_USING_LPUART10
select BSP_USING_DMA
select RT_SERIAL_USING_DMA
default n
config BSP_LPUART3_TX_DMA_CHANNEL
depends on BSP_LPUART3_TX_USING_DMA
int "Set LPUART3 TX DMA channel (0-32)"
default 1
endif
config BSP_LPUART10_TX_DMA_CHANNEL
depends on BSP_LPUART10_TX_USING_DMA
int "Set LPUART10 TX DMA channel (0-32)"
default 1
config BSP_USING_LPUART12
bool "Enable LPUART12"
default n
config BSP_LPUART12_RX_USING_DMA
bool "Enable LPUART12 RX DMA"
depends on BSP_USING_LPUART12
select BSP_USING_DMA
select RT_SERIAL_USING_DMA
default n
config BSP_LPUART12_RX_DMA_CHANNEL
depends on BSP_LPUART12_RX_USING_DMA
int "Set LPUART12 RX DMA channel (0-32)"
default 2
config BSP_LPUART12_TX_USING_DMA
bool "Enable LPUART12 TX DMA"
depends on BSP_USING_LPUART12
select BSP_USING_DMA
select RT_SERIAL_USING_DMA
default n
config BSP_LPUART12_TX_DMA_CHANNEL
depends on BSP_LPUART12_TX_USING_DMA
int "Set LPUART12 TX DMA channel (0-32)"
default 3
endif
menuconfig BSP_USING_I2C
bool "Enable I2C"
@@ -26,10 +26,10 @@ processor_version: 0.15.9
#include "pin_mux.h"
/* FUNCTION ************************************************************************************************************
*
*
* Function Name : BOARD_InitBootPins
* Description : Calls initialization functions.
*
*
* END ****************************************************************************************************************/
void BOARD_InitBootPins(void) {
BOARD_InitPins();
@@ -57,75 +57,69 @@ void BOARD_InitPins(void) {
CLOCK_EnableClock(kCLOCK_Iomuxc1); /* Turn on LPCG: LPCG is ON. */
CLOCK_EnableClock(kCLOCK_Iomuxc2); /* Turn on LPCG: LPCG is ON. */
// /* GPIO configuration on GPIO_AD_27 (pin M16) */
// rgpio_pin_config_t gpio4_pinM16_config = {
// .pinDirection = kRGPIO_DigitalOutput,
// .outputLogic = 1U,
// };
// /* Initialize GPIO functionality on GPIO_AD_27 (pin M16) */
// RGPIO_PinInit(RGPIO4, 27U, &gpio4_pinM16_config);
// IOMUXC_SetPinMux(
// IOMUXC_GPIO_AD_27_GPIO4_IO27, /* GPIO_AD_27 is configured as GPIO4_IO27 */
// 0U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_AON_08_LPUART1_TX, /* GPIO_AON_08 is configured as LPUART1_TX */
0U); /* Software Input On Field: Input Path is determined by functionality */
IOMUXC_GPIO_AON_08_LPUART1_TX,
0U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_AON_09_LPUART1_RX, /* GPIO_AON_09 is configured as LPUART1_RX */
0U); /* Software Input On Field: Input Path is determined by functionality */
IOMUXC_GPIO_AON_09_LPUART1_RX,
0U);
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AON_08_LPUART1_TX, /* GPIO_AON_08 PAD functional properties : */
0x02U); /* Slew Rate Field: Fast Slew Rate
Drive Strength Field: high driver
Pull / Keep Select Field: Pull Disable, Highz
Pull Up / Down Config. Field: Weak pull down
Open Drain Field: Disabled */
IOMUXC_GPIO_AON_08_LPUART1_TX,
0x02U);
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AON_09_LPUART1_RX, /* GPIO_AON_09 PAD functional properties : */
0x02U); /* Slew Rate Field: Fast Slew Rate
Drive Strength Field: high driver
Pull / Keep Select Field: Pull Disable, Highz
Pull Up / Down Config. Field: Weak pull down
Open Drain Field: Disabled */
IOMUXC_GPIO_AON_09_LPUART1_RX,
0x02U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_AON_16_LPI2C2_SCL, /* GPIO_AON_16 is configured as LPI2C2_SCL */
1U); /* Software Input On Field: Force input path of pad GPIO_AON_16 */
IOMUXC_GPIO_AD_32_LPUART10_TX,
0U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_AON_15_LPI2C2_SDA, /* GPIO_AON_15 is configured as LPI2C2_SDA */
1U); /* Software Input On Field: Force input path of pad GPIO_AON_15 */
IOMUXC_GPIO_AD_33_LPUART10_RX,
0U);
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AON_16_LPI2C2_SCL, /* GPIO_AON_16 PAD functional properties : */
0x1DU); /* Slew Rate Field: Slow Slew Rate
Pull Enable Field: Pull Enable
Pull Up / Down Config. Field: Weak pull up
Open Drain Field: Enabled */
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AON_15_LPI2C2_SDA, /* GPIO_AON_15 PAD functional properties : */
0x1DU); /* Slew Rate Field: Slow Slew Rate
Pull Enable Field: Pull Enable
Pull Up / Down Config. Field: Weak pull up
Open Drain Field: Enabled */
IOMUXC_GPIO_AD_32_LPUART10_TX,
0x02U);
IOMUXC_GPIO_AD_33_LPUART10_RX,
0x02U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_AD_18_LPI2C3_SCL, /* GPIO_AD_18 is configured as LPI2C3_SCL */
0U); /* Software Input On Field: Input Path is determined by functionality */
IOMUXC_SetPinMux(
IOMUXC_GPIO_AD_19_LPI2C3_SDA, /* GPIO_AD_19 is configured as LPI2C3_SDA */
0U); /* Software Input On Field: Input Path is determined by functionality */
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AD_18_LPI2C3_SCL, /* GPIO_AD_18 PAD functional properties : */
0x1DU); /* Slew Rate Field: Slow Slew Rate
Pull Enable Field: Pull Enable
Pull Up / Down Config. Field: Weak pull up
Open Drain Field: Enabled */
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AD_19_LPI2C3_SDA, /* GPIO_AD_19 PAD functional properties : */
0x1DU); /* Slew Rate Field: Slow Slew Rate
Pull Enable Field: Pull Enable
Pull Up / Down Config. Field: Weak pull up
Open Drain Field: Enabled */
IOMUXC_SetPinMux(
IOMUXC_GPIO_AON_19_LPUART12_TX,
0U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_AON_20_LPUART12_RX,
0U);
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AON_19_LPUART12_TX,
0x02U);
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AON_20_LPUART12_RX,
0x02U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_AON_16_LPI2C2_SCL,
1U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_AON_15_LPI2C2_SDA,
1U);
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AON_16_LPI2C2_SCL,
0x1DU);
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AON_15_LPI2C2_SDA,
0x1DU);
IOMUXC_SetPinMux(
IOMUXC_GPIO_AD_18_LPI2C3_SCL,
0U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_AD_19_LPI2C3_SDA,
0U);
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AD_18_LPI2C3_SCL,
0x1DU);
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AD_19_LPI2C3_SDA,
0x1DU);
}
void BOARD_InitLeds(void) {
@@ -142,7 +136,7 @@ void BOARD_InitLeds(void) {
IOMUXC_SetPinMux(
IOMUXC_GPIO_AD_27_GPIO4_IO27, /* GPIO_AD_27 is configured as GPIO4_IO27 */
0U);
0U);
}
@@ -1269,6 +1269,10 @@ void rt_hw_board_init()
rt_components_board_init();
#endif
#ifdef RT_USING_HEAP
rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
#endif
#ifdef RT_USING_CONSOLE
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
#endif
@@ -1278,8 +1282,6 @@ void rt_hw_board_init()
rt_kprintf("Heap: 0x%08x - 0x%08x (Size: %d bytes)\n",
HEAP_BEGIN, HEAP_END,
(uint32_t)HEAP_END - (uint32_t)HEAP_BEGIN);
rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
#endif
}
@@ -78,7 +78,7 @@
#if defined(__heap_size__)
#define heap_size __heap_size__
#else
#define heap_size 0x04000
#define heap_size 0x20000
#endif
/* Target specific definition, code & data allocation */
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -147,8 +147,9 @@
#define RT_USING_DEVICE_IPC
#define RT_UNAMED_PIPE_NUMBER 64
#define RT_USING_SERIAL
#define RT_USING_SERIAL_V1
#define RT_SERIAL_RB_BUFSZ 64
#define RT_USING_SERIAL_V2
#define RT_SERIAL_BUF_STRATEGY_OVERWRITE
#define RT_SERIAL_USING_DMA
#define RT_USING_ADC
#define RT_USING_PIN
/* end of Device Drivers */
@@ -431,8 +432,13 @@
#define BSP_USING_LPADC
#define BSP_USING_LPADC1
#define BSP_LPADC1_USING_DMA
#define BSP_USING_GPIO
#define BSP_USING_LPUART
#define BSP_USING_LPUART1
#define BSP_LPUART1_RX_USING_DMA
#define BSP_LPUART1_RX_DMA_CHANNEL 0
#define BSP_LPUART1_TX_USING_DMA
#define BSP_LPUART1_TX_DMA_CHANNEL 1
/* end of On-chip Peripheral Drivers */
/* Onboard Peripheral Drivers */
@@ -1061,9 +1061,9 @@
</FileOption>
</File>
<File>
<FileName>dev_serial.c</FileName>
<FileName>dev_serial_v2.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\..\components\drivers\serial\dev_serial.c</FilePath>
<FilePath>..\..\..\..\..\components\drivers\serial\dev_serial_v2.c</FilePath>
<FileOption>
<CommonProperty>
<UseCPPCompiler>2</UseCPPCompiler>
@@ -1142,9 +1142,9 @@
<FilePath>..\libraries\drivers\drv_common.c</FilePath>
</File>
<File>
<FileName>drv_uart.c</FileName>
<FileName>drv_uart_v2.c</FileName>
<FileType>1</FileType>
<FilePath>..\libraries\drivers\drv_uart.c</FilePath>
<FilePath>..\libraries\drivers\drv_uart_v2.c</FilePath>
</File>
</Files>
</Group>
@@ -2161,6 +2161,21 @@
<FileType>1</FileType>
<FilePath>packages\nxp-imxrt-sdk-latest\MIMXRT1180\MIMXRT1189\drivers\fsl_lpuart.c</FilePath>
</File>
<File>
<FileName>fsl_lpuart_edma.c</FileName>
<FileType>1</FileType>
<FilePath>packages\nxp-imxrt-sdk-latest\MIMXRT1180\MIMXRT1189\drivers\fsl_lpuart_edma.c</FilePath>
</File>
<File>
<FileName>fsl_edma.c</FileName>
<FileType>1</FileType>
<FilePath>packages\nxp-imxrt-sdk-latest\MIMXRT1180\MIMXRT1189\drivers\fsl_edma.c</FilePath>
</File>
<File>
<FileName>fsl_edma_soc.c</FileName>
<FileType>1</FileType>
<FilePath>packages\nxp-imxrt-sdk-latest\MIMXRT1180\MIMXRT1189\drivers\fsl_edma_soc.c</FilePath>
</File>
<File>
<FileName>fsl_dcdc.c</FileName>
<FileType>1</FileType>
@@ -13,7 +13,10 @@ if GetDepend('BSP_USING_GPIO'):
src += ['drv_gpio.c']
if GetDepend('BSP_USING_LPUART'):
src += ['drv_uart.c']
if GetDepend('RT_USING_SERIAL_V2'):
src += ['drv_uart_v2.c']
else:
src += ['drv_uart.c']
if GetDepend('BSP_USING_CLOCK_TIMER'):
src += ['drv_timer.c']
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff