diff --git a/bsp/nxp/mcx/mcxa/Libraries/drivers/drv_uart.c b/bsp/nxp/mcx/mcxa/Libraries/drivers/drv_uart.c index 6088bae2e61..e0bb222d4e1 100644 --- a/bsp/nxp/mcx/mcxa/Libraries/drivers/drv_uart.c +++ b/bsp/nxp/mcx/mcxa/Libraries/drivers/drv_uart.c @@ -6,6 +6,7 @@ * Change Logs: * Date Author Notes * 2024-02-06 yandld The first version for MCX + * 2024-11-11 hywing add more UART channels */ #include #include "drv_uart.h" @@ -35,6 +36,22 @@ void LPUART0_IRQHandler(void) uart_isr(&serial0); } #endif +#if defined(BSP_USING_UART1) +struct rt_serial_device serial1; + +void LPUART1_IRQHandler(void) +{ + uart_isr(&serial1); +} +#endif +#if defined(BSP_USING_UART2) +struct rt_serial_device serial2; + +void LPUART2_IRQHandler(void) +{ + uart_isr(&serial2); +} +#endif static const struct mcx_uart uarts[] = { @@ -50,6 +67,30 @@ static const struct mcx_uart uarts[] = "uart0", }, #endif +#ifdef BSP_USING_UART1 + { + &serial1, + LPUART1, + LPUART1_IRQn, + kCLOCK_Fro12M, + kFRO12M_to_LPUART1, + kCLOCK_GateLPUART1, + kCLOCK_DivLPUART1, + "uart1", + }, +#endif +#ifdef BSP_USING_UART2 + { + &serial2, + LPUART2, + LPUART2_IRQn, + kCLOCK_Fro12M, + kFRO12M_to_LPUART2, + kCLOCK_GateLPUART2, + kCLOCK_DivLPUART2, + "uart2", + }, +#endif }; static rt_err_t mcx_configure(struct rt_serial_device *serial, struct serial_configure *cfg) diff --git a/bsp/nxp/mcx/mcxa/frdm-mcxa153/board/Kconfig b/bsp/nxp/mcx/mcxa/frdm-mcxa153/board/Kconfig index 7b00dcc5b8d..3685b3fb876 100644 --- a/bsp/nxp/mcx/mcxa/frdm-mcxa153/board/Kconfig +++ b/bsp/nxp/mcx/mcxa/frdm-mcxa153/board/Kconfig @@ -27,8 +27,14 @@ menu "On-chip Peripheral Drivers" if BSP_USING_UART config BSP_USING_UART0 - bool "Enable LPUART as UART" + bool "Enable LPUART as UART0" default y + config BSP_USING_UART1 + bool "Enable LPUART as UART1" + default n + config BSP_USING_UART2 + bool "Enable LPUART as UART2" + default n endif menuconfig BSP_USING_I2C diff --git a/bsp/nxp/mcx/mcxa/frdm-mcxa153/board/MCUX_Config/board/pin_mux.c b/bsp/nxp/mcx/mcxa/frdm-mcxa153/board/MCUX_Config/board/pin_mux.c index f4931722009..e0c56633e40 100644 --- a/bsp/nxp/mcx/mcxa/frdm-mcxa153/board/MCUX_Config/board/pin_mux.c +++ b/bsp/nxp/mcx/mcxa/frdm-mcxa153/board/MCUX_Config/board/pin_mux.c @@ -117,6 +117,109 @@ void BOARD_InitPins(void) /* PORT0_3 (pin 52) is configured as LPUART0_TXD */ PORT_SetPinConfig(PORT0, 3U, &port0_3_pin52_config); +#ifdef BSP_USING_UART1 + const port_pin_config_t port1_8_pin2_config = {/* Internal pull-up resistor is enabled */ + kPORT_PullUp, + /* Low internal pull resistor value is selected. */ + kPORT_LowPullResistor, + /* Fast slew rate is configured */ + kPORT_FastSlewRate, + /* Passive input filter is disabled */ + kPORT_PassiveFilterDisable, + /* Open drain output is disabled */ + kPORT_OpenDrainDisable, + /* Low drive strength is configured */ + kPORT_LowDriveStrength, + /* Normal drive strength is configured */ + kPORT_NormalDriveStrength, + /* Pin is configured as LPUART1_RXD */ + kPORT_MuxAlt2, + /* Digital input enabled */ + kPORT_InputBufferEnable, + /* Digital input is not inverted */ + kPORT_InputNormal, + /* Pin Control Register fields [15:0] are not locked */ + kPORT_UnlockRegister}; + /* PORT1_8 (pin 2) is configured as LPUART1_RXD */ + PORT_SetPinConfig(PORT1, 8U, &port1_8_pin2_config); + + const port_pin_config_t port1_9_pin3_config = {/* Internal pull-up resistor is enabled */ + kPORT_PullUp, + /* Low internal pull resistor value is selected. */ + kPORT_LowPullResistor, + /* Fast slew rate is configured */ + kPORT_FastSlewRate, + /* Passive input filter is disabled */ + kPORT_PassiveFilterDisable, + /* Open drain output is disabled */ + kPORT_OpenDrainDisable, + /* Low drive strength is configured */ + kPORT_LowDriveStrength, + /* Normal drive strength is configured */ + kPORT_NormalDriveStrength, + /* Pin is configured as LPUART1_TXD */ + kPORT_MuxAlt2, + /* Digital input enabled */ + kPORT_InputBufferEnable, + /* Digital input is not inverted */ + kPORT_InputNormal, + /* Pin Control Register fields [15:0] are not locked */ + kPORT_UnlockRegister}; + /* PORT1_9 (pin 3) is configured as LPUART1_TXD */ + PORT_SetPinConfig(PORT1, 9U, &port1_9_pin3_config); +#endif +#ifdef BSP_USING_UART2 + const port_pin_config_t port3_14_pin36_config = {/* Internal pull-up resistor is enabled */ + kPORT_PullUp, + /* Low internal pull resistor value is selected. */ + kPORT_LowPullResistor, + /* Fast slew rate is configured */ + kPORT_FastSlewRate, + /* Passive input filter is disabled */ + kPORT_PassiveFilterDisable, + /* Open drain output is disabled */ + kPORT_OpenDrainDisable, + /* Low drive strength is configured */ + kPORT_LowDriveStrength, + /* Normal drive strength is configured */ + kPORT_NormalDriveStrength, + /* Pin is configured as LPUART2_RXD */ + kPORT_MuxAlt2, + /* Digital input enabled */ + kPORT_InputBufferEnable, + /* Digital input is not inverted */ + kPORT_InputNormal, + /* Pin Control Register fields [15:0] are not locked */ + kPORT_UnlockRegister}; + /* PORT3_14 (pin 36) is configured as LPUART2_RXD */ + PORT_SetPinConfig(PORT3, 14U, &port3_14_pin36_config); + + const port_pin_config_t port3_15_pin35_config = {/* Internal pull-up resistor is enabled */ + kPORT_PullUp, + /* Low internal pull resistor value is selected. */ + kPORT_LowPullResistor, + /* Fast slew rate is configured */ + kPORT_FastSlewRate, + /* Passive input filter is disabled */ + kPORT_PassiveFilterDisable, + /* Open drain output is disabled */ + kPORT_OpenDrainDisable, + /* Low drive strength is configured */ + kPORT_LowDriveStrength, + /* Normal drive strength is configured */ + kPORT_NormalDriveStrength, + /* Pin is configured as LPUART2_TXD */ + kPORT_MuxAlt2, + /* Digital input enabled */ + kPORT_InputBufferEnable, + /* Digital input is not inverted */ + kPORT_InputNormal, + /* Pin Control Register fields [15:0] are not locked */ + kPORT_UnlockRegister}; + /* PORT3_15 (pin 35) is configured as LPUART2_TXD */ + PORT_SetPinConfig(PORT3, 15U, &port3_15_pin35_config); +#endif + #ifdef BSP_USING_PWM0 ctimer_config_t config; CTIMER_Init(CTIMER1, &config);