IKS01Ax MEMS expansion board

Revision as of 15:34, 14 May 2019 by Registered User

Template:ArticleMainWriter Template:ReviewersList


1. Article purpose[edit source]

The purpose of this article is to explain how to integrate the IKS01A expansion board with STM32MP157C-DK2. IKS01A expansion is a motion MEMS and environmental sensor expansion board.
This article will explain step by step how to support IKS01A expansion board on Linux part of software and describe how to use several motion MEMS like HTS221 and LSM6DX.

2. Pre-requisite[edit source]

2.1. Hardware[edit source]

  • STM32MP157C-DK2
STM32MP157C-DK2 recto

For more information about hardware and how to start it: link

  • IKS01A2 expansion board
IKS01A2
IKS01A2

3. Software[edit source]

For the software, please follow all step described on [start for STM32MP157C-DK2]

4. Software customization for supporting IKS01A expansion board[edit source]

For using IKS01A expansion board you need to configure the kernel with some devicetree addons and kernel configuration.

4.1. Kernel configuration[edit source]

By default the motions MEMS driver present on IKS01A expansion board are supported: hts221, pressure(lp22hb) and lsm6dsl

To verify if the kernel have this driver, at runtime on board , the configuration of kernel available:

$BOARD> cat /proc/config.gz | gunzip | grep HTS221
CONFIG_HTS221=y
CONFIG_HTS221_I2C=y
CONFIG_HTS221_SPI=y
$BOARD> cat /proc/config.gz | gunzip | grep ST_PRESS
CONFIG_IIO_ST_PRESS=m
CONFIG_IIO_ST_PRESS_I2C=m
CONFIG_IIO_ST_PRESS_SPI=m
$BOARD> cat /proc/config.gz | gunzip |  grep ST_LSM6DS
CONFIG_IIO_ST_LSM6DSX=m
CONFIG_IIO_ST_LSM6DSX_I2C=m
CONFIG_IIO_ST_LSM6DSX_SPI=m

4.2. Kernel devicetree[edit source]

The IKS01A expansion board are use via the IC2 bus and on STM32MP157C-DK2 this I2C bus associated are I2C5.
On Devicetree of STM32MP157C-DK2, the I2C5 must be activated and contains the entry for each hardware to support. Content to add in stm32mp157c-dk2.dts:

 &i2c5 {
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&i2c5_pins_a>;
	pinctrl-1 = <&i2c5_pins_sleep_a>;
	i2c-scl-rising-time-ns = <124>;
	i2c-scl-falling-time-ns = <3>;
	/delete-property/dmas;
	/delete-property/dma-names;

	status = "okay";

	hts221@5f {
		compatible = "st,hts221";
		reg = <0x5f>;
	};
	lsm6dsl@6b {
		compatible = "st,lsm6dsl";
		reg = <0x6b>;
	};
 };
Info white.png Information
Do regenerate a devicetree, please follow the indication of [Modify, rebuild and reload the Linux® kernel ]