diff --git a/boards/shields/x_nucleo_iks01a3/doc/img/x-nucleo-iks01a3.jpg b/boards/shields/x_nucleo_iks01a3/doc/img/x-nucleo-iks01a3.jpg new file mode 100644 index 00000000000..1d24a439fd2 Binary files /dev/null and b/boards/shields/x_nucleo_iks01a3/doc/img/x-nucleo-iks01a3.jpg differ diff --git a/boards/shields/x_nucleo_iks01a3/doc/index.rst b/boards/shields/x_nucleo_iks01a3/doc/index.rst new file mode 100644 index 00000000000..4b1e8e7e603 --- /dev/null +++ b/boards/shields/x_nucleo_iks01a3/doc/index.rst @@ -0,0 +1,103 @@ +.. _x-nucleo-iks01a3: + +X-NUCLEO-IKS01A3: MEMS Inertial and Environmental Multi sensor shield +##################################################################### + +Overview +******** +The X-NUCLEO-IKS01A3 is a motion MEMS and environmental sensor expansion board +for the STM32 Nucleo. It is equipped with Arduino UNO R3 connector layout, and +is designed around the LSM6DSO 3D accelerometer and 3D gyroscope, the LIS2MDL +3-axis magnetometer, the LIS2DW12 3-axis accelerometer, the HTS221 humidity and +temperature sensor, the LPS22HH pressure sensor, and the STTS751 temperature sensor. + +The X-NUCLEO-IKS01A3 interfaces with the STM32 microcontroller via the I2C pin, +and it is possible to change the default I2C port. + +.. image:: img/x-nucleo-iks01a3.jpg + :width: 786px + :height: 543px + :align: center + :alt: X-NUCLEO-IKS01A3 + +More information about the board can be found at the +`X-NUCLEO-IKS01A3 website`_. + +Hardware Description +******************** + +X-NUCLEO-IKS01A3 provides the following key features: + + - LSM6DO MEMS 3D accelerometer (±2/±4/±8/±16 g) and + 3D gyroscope (±125/±250/±500/±1000/±2000 dps) + - LIS2MDL MEMS 3D magnetometer (±50 gauss) + - LIS2DW12 MEMS 3D accelerometer (±2/±4/±8/±16 g) + - LPS22HH MEMS pressure sensor, 260-1260 hPa absolute digital output barometer + - HTS221 capacitive digital relative humidity and temperature + - STTS751 Temperature sensor (-40 °C to +125 °C) + - DIL24 socket for additional MEMS adapters and other sensors (configurable in I2C or SPI) + - I2C sensor hub features on LSM6DSO available + - Compatible with STM32 Nucleo boards + - Equipped with Arduino UNO R3 connector + - RoHS compliant + - WEEE compliant + +Hardware Configuration +********************** + +X-NUCLEO-IKS01A3 board connects the various devices on two separate I2C bus: + +- LIS2DW12 and LSM6DO are on I2C2 +- LIS2MDL, LPS22HH, HTS221 are STTS751 are on I2C1 + +X-NUCLEO-IKS01A3 board can be configured in two different ways: Mode 1 and Mode 2 + + +Mode 1: Standard Mode +===================== + +In standard I2C mode the two buses are connected together. As a consequence, all devices on the shield +reside on the same I2C bus and are accessible from the main board thru I2C bus. + +The jumper configuration to activate this mode is: + +- JP7 => 1-2, 3-4 (I2C1 = I2C2, I2Cx=GND) +- JP8 => 1-2, 3-4 (I2C1 = I2C2, I2Cx=GND) + + +Mode 2: SensorHub Mode +====================== + +In SensorHub mode LSM6DSO and LIS2DW12 are connected to I2C2 and are accessible from the main board. +All the other devices are connected to LSM6DSO master thru I2C1. + +The jumper configuration to activate this mode is: + +- JP7 => 2-3 (I2C1 = I2Cx) +- JP8 => 2-3 (I2C1 = I2Cx) + +More information about X-NUCLEO-IKS01A3 configuration modes can be found in the +`X-NUCLEO-IKS01A3 user manual`_ + +Programming +*********** + +Two samples are provided as examples for ``x-nucleo-iks01a3`` shield: + +- :ref:`x-nucleo-iks01a3-std-sample` application, to be used when the shield is configured + in Standard Mode +- :ref:`x-nucleo-iks01a3-shub-sample` application, to be used when the shield is configured + in SensorHub Mode + +See also :ref:`shields` for more details. + +References +********** + +.. target-notes:: + +.. _X-NUCLEO-IKS01A3 website: + http://www.st.com/en/ecosystems/x-nucleo-iks01a3.html + +.. _X-NUCLEO-IKS01A3 user manual: + https://www.st.com/resource/en/user_manual/dm00601501.pdf diff --git a/boards/shields/x_nucleo_iks01a3/x_nucleo_iks01a3.overlay b/boards/shields/x_nucleo_iks01a3/x_nucleo_iks01a3.overlay new file mode 100644 index 00000000000..16db5b1d05b --- /dev/null +++ b/boards/shields/x_nucleo_iks01a3/x_nucleo_iks01a3.overlay @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2019 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&arduino_i2c { + + hts221@5f { + compatible = "st,hts221"; + reg = <0x5f>; + label = "HTS221"; + }; + + lps22hh@5d { + compatible = "st,lps22hh"; + reg = <0x5d>; + drdy-gpios = <&arduino_header 12 0>; /* D6 */ + label = "LPS22HH"; + }; + + lis2mdl@1e { + compatible = "st,lis2mdl-magn"; + reg = <0x1e>; + label = "LIS2MDL"; + }; + + lis2dw12@19 { + compatible = "st,lis2dw12"; + reg = <0x19>; + irq-gpios = <&arduino_header 3 0>; /* A3 */ + label = "LIS2DW12"; + }; + + lsm6dso@6b { + compatible = "st,lsm6dso"; + reg = <0x6b>; + irq-gpios = <&arduino_header 10 0>; /* D4 */ + label = "LSM6DSO"; + }; +}; diff --git a/boards/shields/x_nucleo_iks01a3/x_nucleo_iks01a3_shub.overlay b/boards/shields/x_nucleo_iks01a3/x_nucleo_iks01a3_shub.overlay new file mode 100644 index 00000000000..72e04648a65 --- /dev/null +++ b/boards/shields/x_nucleo_iks01a3/x_nucleo_iks01a3_shub.overlay @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2019 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&arduino_i2c { + + lis2dw12@19 { + compatible = "st,lis2dw12"; + reg = <0x19>; + irq-gpios = <&arduino_header 3 0>; /* A3 */ + label = "LIS2DW12"; + }; + + lsm6dso@6b { + compatible = "st,lsm6dso"; + reg = <0x6b>; + irq-gpios = <&arduino_header 10 0>; /* D4 */ + label = "LSM6DSO"; + }; +};