1.. _x-nucleo-iks4a1:
2
3X-NUCLEO-IKS4A1: MEMS Inertial and Environmental Multi sensor shield
4####################################################################
5
6Overview
7********
8The X-NUCLEO-IKS4A1 is a motion MEMS and environmental sensor expansion board
9for the STM32 Nucleo. It is equipped with Arduino UNO R3 connector layout, and
10allows application development with features like sensor HUB (LSM6DSO16IS and
11LSM6DSV16X), camera module integration and Qvar touch/swipe gestures (thanks to
12the equipped electrode).
13
14.. image:: img/x-nucleo-iks4a1.jpg
15     :align: center
16     :alt: X-NUCLEO-IKS4A1
17
18More general information about the board can be found at the
19`X-NUCLEO-IKS4A1 website`_.
20
21Hardware Description
22********************
23
24X-NUCLEO-IKS4A1 provides the following key features:
25
26 - LSM6DSO16IS: MEMS 3D accelerometer (±2/±4/±8/±16 g) + 3D gyroscope
27   (±125/±250/±500/±1000/±2000 dps) with ISPU (Intelligent Processing Unit)
28 - LIS2MDL: MEMS 3D magnetometer (±50 gauss)
29 - LIS2DUXS12: Ultra low-power MEMS 3D accelerometer (±2/±4/±8/±16 g) with
30   Qvar, AI, & anti-aliasing
31 - LPS22DF: Low-power and high-precision MEMS pressure sensor, 260-1260 hPa
32   absolute digital output barometer
33 - SHT40AD1B: High-accuracy, ultra-low-power relative humidity and temperature
34   sensor (by Sensirion)
35 - STTS22H: Low-voltage, ultralow-power, 0.5 °C accuracy temperature sensor
36   (–40 °C to +125 °C)
37 - LSM6DSV16X: MEMS 3D accelerometer (±2/±4/±8/±16 g) + 3D gyroscope
38   (±125/±250/±500/±1000/±2000/±4000 dps) with embedded sensor fusion, AI, Qvar
39 - DIL 24-pin socket available for additional MEMS adapters and other sensors
40 - Free comprehensive development firmware library and example for all sensors
41   compatible with STM32Cube firmware
42 - Equipped with Qvar touch/swipe electrode
43 - I²C sensor hub features on LSM6DSO and LSM6DSV16X available
44 - MIPI I3C® compatibility for communication with LIS2DUXS12, LSM6DSV16X and
45   LPS22DF
46 - Compatible with STM32 Nucleo boards
47 - Equipped with Arduino UNO R3 connector
48 - Equipped with industrial connector for IR sensor (STHS34PF80) application
49   development. It can be connected at the same time of external MEMS through
50   DIL24 adapter
51 - Available interface for external camera module applications coupled with
52   LSM6DSV16X through aux SPI (3/4 w)
53 - RoHS compliant
54 - WEEE compliant
55 - UKCA compliant
56
57Hardware Configuration
58**********************
59
60X-NUCLEO-IKS4A1 board can be configured in five different modes, which can be
61selected through J4 and J5 jumpers. Additional information about X-NUCLEO-IKS4A1
62configuration modes and how sensors are connected together can be found in the
63`X-NUCLEO-IKS4A1 user manual`_
64
65.. _x-nucleo-iks4a1-mode-1:
66
67Mode 1: Standard Mode
68=====================
69
70In standard I2C mode, all devices are connected to an external main board via the
71same I2C bus.
72
73The board configuration is:
74
75 - J4: 1-2, 11-12 (STM_SDA = SENS_SDA, HUB_SDx = GND)
76 - J5: 1-2, 11-12 (STM_SCL = SENS_SCL, HUB_SCx = GND)
77
78.. _x-nucleo-iks4a1-mode-2:
79
80Mode 2: LSM6DSO16IS SensorHub Mode (SHUB2)
81==========================================
82
83In this sensor hub I2C mode, it is possible to power-up the 6-axes IMU
84(Inertial Measurement Unit) functionalities by collecting external data
85through a direct control of the on-board environmental sensors (temperature,
86pressure and magnetometer) and external sensor (DIL24) through the auxiliary
87I2Cz bus "SENS_I2C". LSM6DSV16X, LIS2DUXS12 and SHT40AD1B remains connected
88to the main bus "uC_I2C" coming from the external board.
89
90The board configuration is:
91
92 - J4: 7-8 (HUB2_SDx = SENS_SDA)
93 - J5: 7-8 (HUB2_SCx = SENS_SCL)
94
95.. _x-nucleo-iks4a1-mode-3:
96
97Mode 3: LSM6DSV16X SensorHub Mode (SHUB1)
98=========================================
99
100In this sensor hub, it is possible to power-up the 6-axes IMU (Inertial
101Measurement Unit) functionalities by collecting external data through
102a direct control of the on-board environmental sensors (temperature,
103pressure and magnetometer) and external sensor (DIL24) through the auxiliary
104I2C bus "SENS_I2C". LSM6DSO16IS, LIS2DUXS12 and SHT40AD1B remains connected
105to the main bus "uC_I2C" coming from the external board.
106
107The board configuration is:
108
109 - J4: 5-6 (HUB1_SDx = SENS_SDA)
110 - J5: 5-6 (HUB1_SDx = SENS_SDA)
111
112Mode 4: DIL24 SensorHub Mode
113============================
114
115In case a sensor with sensor hub embedded functionality is mounted to the
116board through DIL24 adapter, it is possible to exploit this functionality
117as for LSM6DSO16IS and the LSM6DSV16X. In this configuration, may be necessary
118to connect the DIL24 to the external board through SPI lines in order to
119avoid an address conflict on I2C bus with the LSM6DSO16IS and the LSM6DSV16X.
120This is done by changing the SBx configuration.
121
122The board configuration is:
123
124 - J4: 9-10 (DIL_SDx = SENS_SDA)
125 - J5: 9-10 (DIL_SDx = SENS_SDA)
126
127Mode 5: LSM6DSO16IS as Qvar controller
128======================================
129
130In this configuration, it is possible to use the equipped Qvar swipe electrode
131(by plugging it on JP6 and JP7 connectors) through the LSM6DSO16IS.
132
133The board configuration is:
134
135 - J4: 3-4 (HUB1_SDx = QVAR1)
136 - J5: 3-4 (HUB1_Scx = QVAR2)
137
138Devicetree Overlays
139*******************
140
141There are three predefined DT overlays in the board:
142
143- :zephyr_file:`boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1.overlay`
144  This overlay describes sensor connections (and matching h/w configuration to be done)
145  as explained in Standard Mode (:ref:`x-nucleo-iks4a1-mode-1`)
146- :zephyr_file:`boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1_shub1.overlay`
147  This overlay describes sensor connections (and matching h/w configuration to be done)
148  as explained in SHUB1 Mode (:ref:`x-nucleo-iks4a1-mode-3`)
149- :zephyr_file:`boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1_shub2.overlay`
150  This overlay describes sensor connections (and matching h/w configuration to be done)
151  as explained in SHUB2 Mode (:ref:`x-nucleo-iks4a1-mode-2`)
152
153Examples
154********
155
156Three samples are provided as examples for ``x-nucleo-iks4a1`` shield, each one associated
157with one of the overlays described above:
158
159- :ref:`x-nucleo-iks4a1-std-sample` application, to be used when the shield is configured
160  in Standard Mode (Mode 1)
161- :ref:`x-nucleo-iks4a1-shub1-sample` application, to be used when the shield is configured
162  in SHUB1 Mode (Mode 3)
163- :ref:`x-nucleo-iks4a1-shub2-sample` application, to be used when the shield is configured
164  in SHUB2 Mode (Mode 2)
165
166See also :ref:`shields` for more details.
167
168.. _X-NUCLEO-IKS4A1 website:
169   http://www.st.com/en/ecosystems/x-nucleo-iks4a1.html
170
171.. _X-NUCLEO-IKS4A1 user manual:
172   https://www.st.com/resource/en/user_manual/um3239-getting-started-with-the-xnucleoiks4a1-motion-mems-and-environmental-sensor-expansion-board-for-stm32-nucleo-stmicroelectronics.pdf
173