diff --git a/boards/arm/lpcxpresso55s16/doc/index.rst b/boards/arm/lpcxpresso55s16/doc/index.rst index 803ca1bf08e..2bb31c09bae 100644 --- a/boards/arm/lpcxpresso55s16/doc/index.rst +++ b/boards/arm/lpcxpresso55s16/doc/index.rst @@ -73,6 +73,8 @@ hardware features: +-----------+------------+-------------------------------------+ | CLOCK | on-chip | clock_control | +-----------+------------+-------------------------------------+ +| CAN | on-chip | canbus | ++-----------+------------+-------------------------------------+ Other hardware features are not currently enabled. @@ -119,6 +121,10 @@ the functionality of a pin. +---------+-----------------+----------------------------+ | PIO1_26 | GPIO | FXOS8700 INT1 | +---------+-----------------+----------------------------+ +| PIO1_22 | CAN | CAN RXD | ++---------+-----------------+----------------------------+ +| PIO1_27 | CAN | CAN TXD | ++---------+-----------------+----------------------------+ System Clock ============ diff --git a/boards/arm/lpcxpresso55s16/lpcxpresso55s16.yaml b/boards/arm/lpcxpresso55s16/lpcxpresso55s16.yaml index e2afc5e5886..6ffaa94250d 100644 --- a/boards/arm/lpcxpresso55s16/lpcxpresso55s16.yaml +++ b/boards/arm/lpcxpresso55s16/lpcxpresso55s16.yaml @@ -18,6 +18,8 @@ supported: - arduino_gpio - arduino_i2c - arduino_spi + - can + - canfd - gpio - i2c - spi diff --git a/boards/arm/lpcxpresso55s16/lpcxpresso55s16_common.dtsi b/boards/arm/lpcxpresso55s16/lpcxpresso55s16_common.dtsi index e85b20fdd4d..e6969a82298 100644 --- a/boards/arm/lpcxpresso55s16/lpcxpresso55s16_common.dtsi +++ b/boards/arm/lpcxpresso55s16/lpcxpresso55s16_common.dtsi @@ -12,6 +12,7 @@ zephyr,console = &flexcomm0; zephyr,shell-uart = &flexcomm0; zephyr,entropy = &rng; + zephyr,canbus = &can0; }; aliases{ @@ -131,6 +132,12 @@ }; }; +&can0 { + status = "okay"; + bus-speed = <125000>; + bus-speed-data = <1000000>; +}; + &hs_lspi { status = "okay"; }; diff --git a/boards/arm/lpcxpresso55s16/pinmux.c b/boards/arm/lpcxpresso55s16/pinmux.c index ecc978ae21e..75af4710701 100644 --- a/boards/arm/lpcxpresso55s16/pinmux.c +++ b/boards/arm/lpcxpresso55s16/pinmux.c @@ -181,6 +181,28 @@ static int lpcxpresso_55s16_pinmux_init(const struct device *dev) IOCON_PIO_OPENDRAIN_DI); #endif +#if DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(can0), nxp_lpc_mcan, okay) && CONFIG_CAN + /* CAN RXD, TXD */ + uint32_t port1_pin22_config = ( + IOCON_PIO_FUNC9 | + IOCON_PIO_MODE_INACT | + IOCON_PIO_INV_DI | + IOCON_PIO_DIGITAL_EN | + IOCON_PIO_SLEW_STANDARD | + IOCON_PIO_OPENDRAIN_DI + ); + uint32_t port1_pin27_config = ( + IOCON_PIO_FUNC9 | + IOCON_PIO_MODE_INACT | + IOCON_PIO_INV_DI | + IOCON_PIO_DIGITAL_EN | + IOCON_PIO_SLEW_STANDARD | + IOCON_PIO_OPENDRAIN_DI + ); + pinmux_pin_set(port1, 22, port1_pin22_config); + pinmux_pin_set(port1, 27, port1_pin27_config); +#endif + return 0; }