Skip to content

Commit

Permalink
[bsp][nxp][mcxa153] add more UART channels (#9635)
Browse files Browse the repository at this point in the history
* [bsp][nxp][mcxa153] add more UART channels
  • Loading branch information
hywing authored Nov 13, 2024
1 parent f093463 commit be0161e
Show file tree
Hide file tree
Showing 3 changed files with 151 additions and 1 deletion.
41 changes: 41 additions & 0 deletions bsp/nxp/mcx/mcxa/Libraries/drivers/drv_uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 <rtdevice.h>
#include "drv_uart.h"
Expand Down Expand Up @@ -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[] =
{
Expand All @@ -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)
Expand Down
8 changes: 7 additions & 1 deletion bsp/nxp/mcx/mcxa/frdm-mcxa153/board/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
103 changes: 103 additions & 0 deletions bsp/nxp/mcx/mcxa/frdm-mcxa153/board/MCUX_Config/board/pin_mux.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit be0161e

Please sign in to comment.