From b31b1d133eee7bb34d02c438a7f908bbb80c084e Mon Sep 17 00:00:00 2001 From: Yestin Sun Date: Wed, 11 Nov 2020 19:24:55 -0800 Subject: [PATCH] boards: stm32l562e_dk: add support for I2C Add i2c1 interface for stm32l552xx and stm32l562xx microcontrollers and enable i2c1 that connects to lsm6dso sensor module on the stm32l562e_dk board. Signed-off-by: Yestin Sun --- boards/arm/stm32l562e_dk/doc/index.rst | 3 +++ boards/arm/stm32l562e_dk/stm32l562e_dk.yaml | 2 ++ boards/arm/stm32l562e_dk/stm32l562e_dk_common.dtsi | 13 +++++++++++++ dts/arm/st/l5/stm32l5.dtsi | 14 ++++++++++++++ soc/arm/st_stm32/stm32l5/soc.h | 4 ++++ 5 files changed, 36 insertions(+) diff --git a/boards/arm/stm32l562e_dk/doc/index.rst b/boards/arm/stm32l562e_dk/doc/index.rst index b8fc92d1b53..f1399c4dea1 100644 --- a/boards/arm/stm32l562e_dk/doc/index.rst +++ b/boards/arm/stm32l562e_dk/doc/index.rst @@ -162,6 +162,8 @@ The Zephyr stm32l562e_dk board configuration supports the following hardware fea +-----------+------------+-------------------------------------+ | GPIO | on-chip | gpio | +-----------+------------+-------------------------------------+ +| I2C | on-chip | i2c | ++-----------+------------+-------------------------------------+ Other hardware features are not yet supported on this Zephyr port. @@ -181,6 +183,7 @@ Default Zephyr Peripheral Mapping: ---------------------------------- - USART_1 TX/RX : PA9/PA10 +- I2C_1 SCL/SDA : PB6/PB7 - USER_PB : PC13 - LD10 : PG12 diff --git a/boards/arm/stm32l562e_dk/stm32l562e_dk.yaml b/boards/arm/stm32l562e_dk/stm32l562e_dk.yaml index ae75f43d042..c6ab1e87c00 100644 --- a/boards/arm/stm32l562e_dk/stm32l562e_dk.yaml +++ b/boards/arm/stm32l562e_dk/stm32l562e_dk.yaml @@ -7,5 +7,7 @@ toolchain: - gnuarmemb supported: - gpio + - i2c + - lsm6dso ram: 192 flash: 512 diff --git a/boards/arm/stm32l562e_dk/stm32l562e_dk_common.dtsi b/boards/arm/stm32l562e_dk/stm32l562e_dk_common.dtsi index 105520544a5..5cce9bb9933 100644 --- a/boards/arm/stm32l562e_dk/stm32l562e_dk_common.dtsi +++ b/boards/arm/stm32l562e_dk/stm32l562e_dk_common.dtsi @@ -35,3 +35,16 @@ current-speed = <115200>; status = "okay"; }; + +&i2c1 { + pinctrl-0 = <&i2c1_scl_pb6 &i2c1_sda_pb7>; + status = "okay"; + clock-frequency = ; + + lsm6dso@6a { + compatible = "st,lsm6dso"; + reg = <0x6a>; + irq-gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>; + label = "LSM6DSO"; + }; +}; diff --git a/dts/arm/st/l5/stm32l5.dtsi b/dts/arm/st/l5/stm32l5.dtsi index ba3b48c299f..2db62834696 100644 --- a/dts/arm/st/l5/stm32l5.dtsi +++ b/dts/arm/st/l5/stm32l5.dtsi @@ -8,6 +8,7 @@ #include #include #include +#include #include / { @@ -190,6 +191,19 @@ status = "disabled"; label = "LPUART_1"; }; + + i2c1: i2c@40005400 { + compatible = "st,stm32-i2c-v2"; + clock-frequency = ; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x40005400 0x400>; + clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00200000>; + interrupts = <55 0>, <56 0>; + interrupt-names = "event", "error"; + status = "disabled"; + label= "I2C_1"; + }; }; }; diff --git a/soc/arm/st_stm32/stm32l5/soc.h b/soc/arm/st_stm32/stm32l5/soc.h index 388927a33c6..4ce932869e1 100644 --- a/soc/arm/st_stm32/stm32l5/soc.h +++ b/soc/arm/st_stm32/stm32l5/soc.h @@ -43,6 +43,10 @@ #include #endif +#ifdef CONFIG_I2C_STM32 +#include +#endif + #ifdef CONFIG_SERIAL_HAS_DRIVER #include #include