boards/shields: add support for x-nucleo-iks4a1 shield
x-nucleo-iks4a1 shield is an arduino compatible companion board which can be used on top of Nucleo standard boards for industrial applications. Following MEMS sensor are currently supported: - LSM6DSO16IS: MEMS 3D accelerometer + 3D gyroscope - LSM6DSV16X: MEMS 3D accelerometer + 3D gyroscope - LIS2MDL: MEMS 3D magnetometer - LPS22DF: Low-power and high-precision MEMS pressure sensor (https://www.st.com/resource/en/data_brief/x-nucleo-iks4a1.pdf) The board exports three overlays: 1. x_nucleo_iks4a1.overlay (standard mode) All MEMS sensors are connected to micro-controller. 2. x_nucleo_iks4a1_shub1.overlay (HUB1 mode) LSM6DSV16X IMU sensor act as a sensor_hub with LIS2MDL and LPS22DF connected to it. 3. x_nucleo_iks4a1_shub2.overlay (HUB2 mode) LSM6DSO16IS IMU sensor act as a sensor_hub with LIS2MDL and LPS22DF connected to it. Signed-off-by: Armando Visconti <armando.visconti@st.com>
This commit is contained in:
parent
ed0ccbbc0b
commit
cc3040aed6
6 changed files with 252 additions and 0 deletions
5
boards/shields/x_nucleo_iks4a1/Kconfig.shield
Normal file
5
boards/shields/x_nucleo_iks4a1/Kconfig.shield
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Copyright (c) 2024 STMicroelectronics
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config SHIELD_X_NUCLEO_IKS01A4
|
||||
def_bool $(shields_list_contains,x_nucleo_iks4a1)
|
BIN
boards/shields/x_nucleo_iks4a1/doc/img/x-nucleo-iks4a1.jpg
Normal file
BIN
boards/shields/x_nucleo_iks4a1/doc/img/x-nucleo-iks4a1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 71 KiB |
157
boards/shields/x_nucleo_iks4a1/doc/index.rst
Normal file
157
boards/shields/x_nucleo_iks4a1/doc/index.rst
Normal file
|
@ -0,0 +1,157 @@
|
|||
.. _x-nucleo-iks4a1:
|
||||
|
||||
X-NUCLEO-IKS4A1: MEMS Inertial and Environmental Multi sensor shield
|
||||
####################################################################
|
||||
|
||||
Overview
|
||||
********
|
||||
The X-NUCLEO-IKS4A1 is a motion MEMS and environmental sensor expansion board
|
||||
for the STM32 Nucleo. It is equipped with Arduino UNO R3 connector layout, and
|
||||
allows application development with features like sensor HUB (LSM6DSO16IS and
|
||||
LSM6DSV16X), camera module integration and Qvar touch/swipe gestures (thanks to
|
||||
the equipped electrode).
|
||||
|
||||
.. image:: img/x-nucleo-iks4a1.jpg
|
||||
:align: center
|
||||
:alt: X-NUCLEO-IKS4A1
|
||||
|
||||
More general information about the board can be found at the
|
||||
`X-NUCLEO-IKS4A1 website`_.
|
||||
|
||||
Hardware Description
|
||||
********************
|
||||
|
||||
X-NUCLEO-IKS4A1 provides the following key features:
|
||||
|
||||
- LSM6DSO16IS: MEMS 3D accelerometer (±2/±4/±8/±16 g) + 3D gyroscope
|
||||
(±125/±250/±500/±1000/±2000 dps) with ISPU (Intelligent Processing Unit)
|
||||
- LIS2MDL: MEMS 3D magnetometer (±50 gauss)
|
||||
- LIS2DUXS12: Ultra low-power MEMS 3D accelerometer (±2/±4/±8/±16 g) with
|
||||
Qvar, AI, & anti-aliasing
|
||||
- LPS22DF: Low-power and high-precision MEMS pressure sensor, 260-1260 hPa
|
||||
absolute digital output barometer
|
||||
- SHT40AD1B: High-accuracy, ultra-low-power relative humidity and temperature
|
||||
sensor (by Sensirion)
|
||||
- STTS22H: Low-voltage, ultralow-power, 0.5 °C accuracy temperature sensor
|
||||
(–40 °C to +125 °C)
|
||||
- LSM6DSV16X: MEMS 3D accelerometer (±2/±4/±8/±16 g) + 3D gyroscope
|
||||
(±125/±250/±500/±1000/±2000/±4000 dps) with embedded sensor fusion, AI, Qvar
|
||||
- DIL 24-pin socket available for additional MEMS adapters and other sensors
|
||||
- Free comprehensive development firmware library and example for all sensors
|
||||
compatible with STM32Cube firmware
|
||||
- Equipped with Qvar touch/swipe electrode
|
||||
- I²C sensor hub features on LSM6DSO and LSM6DSV16X available
|
||||
- MIPI I3C® compatibility for communication with LIS2DUXS12, LSM6DSV16X and
|
||||
LPS22DF
|
||||
- Compatible with STM32 Nucleo boards
|
||||
- Equipped with Arduino UNO R3 connector
|
||||
- Equipped with industrial connector for IR sensor (STHS34PF80) application
|
||||
development. It can be connected at the same time of external MEMS through
|
||||
DIL24 adapter
|
||||
- Available interface for external camera module applications coupled with
|
||||
LSM6DSV16X through aux SPI (3/4 w)
|
||||
- RoHS compliant
|
||||
- WEEE compliant
|
||||
- UKCA compliant
|
||||
|
||||
Hardware Configuration
|
||||
**********************
|
||||
|
||||
X-NUCLEO-IKS4A1 board can be configured in five different modes, which can be
|
||||
selected through J4 and J5 jumpers. Additional information about X-NUCLEO-IKS4A1
|
||||
configuration modes and how sensors are connected together can be found in the
|
||||
`X-NUCLEO-IKS4A1 user manual`_
|
||||
|
||||
.. _x-nucleo-iks4a1-mode-1:
|
||||
|
||||
Mode 1: Standard Mode
|
||||
=====================
|
||||
|
||||
In standard I2C mode, all devices are connected to an external main board via the
|
||||
same I2C bus.
|
||||
|
||||
The board configuration is:
|
||||
|
||||
- J4: 1-2, 11-12 (STM_SDA = SENS_SDA, HUB_SDx = GND)
|
||||
- J5: 1-2, 11-12 (STM_SCL = SENS_SCL, HUB_SCx = GND)
|
||||
|
||||
.. _x-nucleo-iks4a1-mode-2:
|
||||
|
||||
Mode 2: LSM6DSO16IS SensorHub Mode (SHUB2)
|
||||
==========================================
|
||||
|
||||
In this sensor hub I2C mode, it is possible to power-up the 6-axes IMU
|
||||
(Inertial Measurement Unit) functionalities by collecting external data
|
||||
through a direct control of the on-board environmental sensors (temperature,
|
||||
pressure and magnetometer) and external sensor (DIL24) through the auxiliary
|
||||
I2Cz bus "SENS_I2C". LSM6DSV16X, LIS2DUXS12 and SHT40AD1B remains connected
|
||||
to the main bus "uC_I2C" coming from the external board.
|
||||
|
||||
The board configuration is:
|
||||
|
||||
- J4: 7-8 (HUB2_SDx = SENS_SDA)
|
||||
- J5: 7-8 (HUB2_SCx = SENS_SCL)
|
||||
|
||||
.. _x-nucleo-iks4a1-mode-3:
|
||||
|
||||
Mode 3: LSM6DSV16X SensorHub Mode (SHUB1)
|
||||
=========================================
|
||||
|
||||
In this sensor hub, it is possible to power-up the 6-axes IMU (Inertial
|
||||
Measurement Unit) functionalities by collecting external data through
|
||||
a direct control of the on-board environmental sensors (temperature,
|
||||
pressure and magnetometer) and external sensor (DIL24) through the auxiliary
|
||||
I2C bus "SENS_I2C". LSM6DSO16IS, LIS2DUXS12 and SHT40AD1B remains connected
|
||||
to the main bus "uC_I2C" coming from the external board.
|
||||
|
||||
The board configuration is:
|
||||
|
||||
- J4: 5-6 (HUB1_SDx = SENS_SDA)
|
||||
- J5: 5-6 (HUB1_SDx = SENS_SDA)
|
||||
|
||||
Mode 4: DIL24 SensorHub Mode
|
||||
============================
|
||||
|
||||
In case a sensor with sensor hub embedded functionality is mounted to the
|
||||
board through DIL24 adapter, it is possible to exploit this functionality
|
||||
as for LSM6DSO16IS and the LSM6DSV16X. In this configuration, may be necessary
|
||||
to connect the DIL24 to the external board through SPI lines in order to
|
||||
avoid an address conflict on I2C bus with the LSM6DSO16IS and the LSM6DSV16X.
|
||||
This is done by changing the SBx configuration.
|
||||
|
||||
The board configuration is:
|
||||
|
||||
- J4: 9-10 (DIL_SDx = SENS_SDA)
|
||||
- J5: 9-10 (DIL_SDx = SENS_SDA)
|
||||
|
||||
Mode 5: LSM6DSO16IS as Qvar controller
|
||||
======================================
|
||||
|
||||
In this configuration, it is possible to use the equipped Qvar swipe electrode
|
||||
(by plugging it on JP6 and JP7 connectors) through the LSM6DSO16IS.
|
||||
|
||||
The board configuration is:
|
||||
|
||||
- J4: 3-4 (HUB1_SDx = QVAR1)
|
||||
- J5: 3-4 (HUB1_Scx = QVAR2)
|
||||
|
||||
Devicetree Overlays
|
||||
*******************
|
||||
|
||||
There are three predefined DT overlays in the board:
|
||||
|
||||
- :zephyr_file:`boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1.overlay`
|
||||
This overlay describes sensor connections (and matching h/w configuration to be done)
|
||||
as explained in Standard Mode (:ref:`x-nucleo-iks4a1-mode-1`)
|
||||
- :zephyr_file:`boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1_shub1.overlay`
|
||||
This overlay describes sensor connections (and matching h/w configuration to be done)
|
||||
as explained in SHUB1 Mode (:ref:`x-nucleo-iks4a1-mode-3`)
|
||||
- :zephyr_file:`boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1_shub2.overlay`
|
||||
This overlay describes sensor connections (and matching h/w configuration to be done)
|
||||
as explained in SHUB2 Mode (:ref:`x-nucleo-iks4a1-mode-2`)
|
||||
|
||||
.. _X-NUCLEO-IKS4A1 website:
|
||||
http://www.st.com/en/ecosystems/x-nucleo-iks4a1.html
|
||||
|
||||
.. _X-NUCLEO-IKS4A1 user manual:
|
||||
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
|
48
boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1.overlay
Normal file
48
boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1.overlay
Normal file
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* Copyright (c) 2024 STMicroelectronics
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
magn0 = &lis2mdl_1e_x_nucleo_iks4a1;
|
||||
accel0 = &lsm6dso16is_6a_x_nucleo_iks4a1;
|
||||
accel1 = &lsm6dsv16x_6b_x_nucleo_iks4a1;
|
||||
press0 = &lps22df_5d_x_nucleo_iks4a1;
|
||||
};
|
||||
};
|
||||
|
||||
&arduino_i2c {
|
||||
lsm6dso16is_6a_x_nucleo_iks4a1: lsm6dso16is@6a {
|
||||
compatible = "st,lsm6dso16is";
|
||||
reg = <0x6a>;
|
||||
accel-odr = <0x1b>;
|
||||
gyro-odr = <0x11>;
|
||||
irq-gpios = <&arduino_header 5 GPIO_ACTIVE_HIGH>; /* A5 (PC0) */
|
||||
drdy-pin = <1>;
|
||||
};
|
||||
|
||||
lsm6dsv16x_6b_x_nucleo_iks4a1: lsm6dsv16x@6b {
|
||||
compatible = "st,lsm6dsv16x";
|
||||
reg = <0x6b>;
|
||||
accel-odr = <0x02>;
|
||||
gyro-odr = <0x02>;
|
||||
int2-gpios = <&arduino_header 10 GPIO_ACTIVE_HIGH>; /* D4 (PB5) */
|
||||
drdy-pin = <2>;
|
||||
drdy-pulsed;
|
||||
};
|
||||
|
||||
lis2mdl_1e_x_nucleo_iks4a1: lis2mdl@1e {
|
||||
compatible = "st,lis2mdl";
|
||||
reg = <0x1e>;
|
||||
irq-gpios = <&arduino_header 2 GPIO_ACTIVE_HIGH>; /* A2 (PA4) */
|
||||
};
|
||||
|
||||
lps22df_5d_x_nucleo_iks4a1: lps22df@5d {
|
||||
compatible = "st,lps22df";
|
||||
reg = <0x5d>;
|
||||
drdy-pulsed;
|
||||
drdy-gpios = <&arduino_header 12 GPIO_ACTIVE_HIGH>; /* D6 (PB10) */
|
||||
};
|
||||
};
|
22
boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1_shub1.overlay
Normal file
22
boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1_shub1.overlay
Normal file
|
@ -0,0 +1,22 @@
|
|||
/*
|
||||
* Copyright (c) 2024 STMicroelectronics
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
accel0 = &lsm6dsv16x_6b_x_nucleo_iks4a1;
|
||||
};
|
||||
};
|
||||
|
||||
&arduino_i2c {
|
||||
lsm6dsv16x_6b_x_nucleo_iks4a1: lsm6dsv16x@6b {
|
||||
compatible = "st,lsm6dsv16x";
|
||||
reg = <0x6b>;
|
||||
accel-odr = <0x02>;
|
||||
gyro-odr = <0x02>;
|
||||
int1-gpios = <&arduino_header 11 GPIO_ACTIVE_HIGH>; /* D5 */
|
||||
drdy-pin = <1>;
|
||||
};
|
||||
};
|
20
boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1_shub2.overlay
Normal file
20
boards/shields/x_nucleo_iks4a1/x_nucleo_iks4a1_shub2.overlay
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Copyright (c) 2024 STMicroelectronics
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
accel0 = &lsm6dso16is_6a_x_nucleo_iks4a1_shub;
|
||||
};
|
||||
};
|
||||
|
||||
&arduino_i2c {
|
||||
lsm6dso16is_6a_x_nucleo_iks4a1_shub: lsm6dso16is@6a {
|
||||
compatible = "st,lsm6dso16is";
|
||||
reg = <0x6a>;
|
||||
irq-gpios = <&arduino_header 5 GPIO_ACTIVE_HIGH>; /* A5 */
|
||||
drdy-pin = <1>;
|
||||
};
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue