boards: arm: lpcxpresso55s16: enable I2C support

Enable I2C support for the NXP LPCXpresso55S16 EVK development board.

Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
This commit is contained in:
Henrik Brix Andersen 2020-05-02 21:54:15 +02:00 committed by Maureen Helm
commit 144dcdd02b
5 changed files with 62 additions and 2 deletions

View file

@ -28,4 +28,8 @@ config GPIO_MCUX_LPC_PORT1
endif # GPIO_MCUX_LPC endif # GPIO_MCUX_LPC
config FXOS8700_DRDY_INT1
default y
depends on FXOS8700_TRIGGER
endif # BOARD_LPCXPRESSO55S16 endif # BOARD_LPCXPRESSO55S16

View file

@ -63,8 +63,12 @@ hardware features:
+-----------+------------+-------------------------------------+ +-----------+------------+-------------------------------------+
| GPIO | on-chip | gpio | | GPIO | on-chip | gpio |
+-----------+------------+-------------------------------------+ +-----------+------------+-------------------------------------+
| I2C | on-chip | i2c |
+-----------+------------+-------------------------------------+
| USART | on-chip | serial port | | USART | on-chip | serial port |
+-----------+------------+-------------------------------------+ +-----------+------------+-------------------------------------+
| SENSOR | off-chip | fxos8700 trigger |
+-----------+------------+-------------------------------------+
Other hardware features are not currently enabled. Other hardware features are not currently enabled.
@ -97,6 +101,12 @@ the functionality of a pin.
+---------+-----------------+----------------------------+ +---------+-----------------+----------------------------+
| PIO1_18 | GPIO | Wakeup SW1 | | PIO1_18 | GPIO | Wakeup SW1 |
+---------+-----------------+----------------------------+ +---------+-----------------+----------------------------+
| PIO1_20 | I2C | I2C SCL |
+---------+-----------------+----------------------------+
| PIO1_21 | I2C | I2C SDA |
+---------+-----------------+----------------------------+
| PIO1_26 | GPIO | FXOS8700 INT1 |
+---------+-----------------+----------------------------+
System Clock System Clock
============ ============
@ -109,8 +119,8 @@ Serial Port
=========== ===========
The LPC55S16 SoC has 8 FLEXCOMM interfaces for serial The LPC55S16 SoC has 8 FLEXCOMM interfaces for serial
communication. One is configured as USART for the console and the communication. One is configured as USART for the console, one is
remaining are not used. configured for I2C, and the remaining are not used.
Programming and Debugging Programming and Debugging
************************* *************************

View file

@ -61,3 +61,18 @@
compatible = "nxp,lpc-usart"; compatible = "nxp,lpc-usart";
current-speed = <115200>; current-speed = <115200>;
}; };
arduino_i2c: &flexcomm4 {
status = "okay";
compatible = "nxp,lpc-i2c";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
fxos8700@1e {
compatible = "nxp,fxos8700";
reg = <0x1e>;
label = "FXOS8700";
int1-gpios = <&gpio1 26 GPIO_ACTIVE_LOW>;
};
};

View file

@ -15,4 +15,6 @@ toolchain:
- gnuarmemb - gnuarmemb
- xtools - xtools
supported: supported:
- arduino_i2c
- gpio - gpio
- i2c

View file

@ -118,6 +118,35 @@ static int lpcxpresso_55s16_pinmux_init(struct device *dev)
pinmux_pin_set(port0, 30, port0_pin30_config); pinmux_pin_set(port0, 30, port0_pin30_config);
#endif #endif
#if DT_HAS_NODE(DT_NODELABEL(flexcomm4)) && \
DT_NODE_HAS_COMPAT(DT_NODELABEL(flexcomm4), nxp_lpc_i2c)
/* PORT1 PIN20 is configured as FC4_TXD_SCL_MISO_WS */
pinmux_pin_set(port1, 20, IOCON_PIO_FUNC5 |
IOCON_PIO_MODE_INACT |
IOCON_PIO_SLEW_STANDARD |
IOCON_PIO_INV_DI |
IOCON_PIO_DIGITAL_EN |
IOCON_PIO_OPENDRAIN_DI);
/* PORT1 PIN21 is configured as FC4_RXD_SDA_MOSI_DATA */
pinmux_pin_set(port1, 21, IOCON_PIO_FUNC5 |
IOCON_PIO_MODE_INACT |
IOCON_PIO_SLEW_STANDARD |
IOCON_PIO_INV_DI |
IOCON_PIO_DIGITAL_EN |
IOCON_PIO_OPENDRAIN_DI);
#endif
#ifdef CONFIG_FXOS8700_TRIGGER
pinmux_pin_set(port1, 26, IOCON_PIO_FUNC0 |
IOCON_PIO_MODE_PULLUP |
IOCON_PIO_INV_DI |
IOCON_PIO_DIGITAL_EN |
IOCON_PIO_INPFILT_OFF |
IOCON_PIO_SLEW_STANDARD |
IOCON_PIO_OPENDRAIN_DI);
#endif
return 0; return 0;
} }