Add sample to read from up to 10 streaming devices, using the
sensor_stream() API and the RTIO framework:
https://docs.zephyrproject.org/latest/services/rtio/index.html
The devices has to be aliased as streamN (0 <= N <= 9) in DT, and
will be instantiated using SENSOR_DT_STREAM_IODEV() macro.
Currently the sample gets/prints data on SENSOR_TRIG_DATA_READY
trigger basis for the following sensor channels:
- SENSOR_CHAN_ACCEL_XYZ
Signed-off-by: Armando Visconti <armando.visconti@st.com>
114 lines
4.2 KiB
ReStructuredText
114 lines
4.2 KiB
ReStructuredText
.. zephyr:code-sample:: stream_drdy
|
|
:name: Generic device sample streaming using Data Ready trigger
|
|
:relevant-api: sensor_interface
|
|
|
|
Get accelerometer data frames from a sensor using SENSOR_TRIG_DATA_READY.
|
|
|
|
Overview
|
|
********
|
|
|
|
This sample application demonstrates how to stream accel data using the
|
|
:ref:`RTIO framework <rtio>` based :ref:`Read and Decode method <sensor-read-and-decode>`.
|
|
|
|
The streaming is started using the sensor_stream() API and it is self-sustained by the
|
|
SENSOR_TRIG_DATA_READY trigger.
|
|
|
|
Currently the sample gets/prints data only for the accel sensor channel:
|
|
|
|
- SENSOR_CHAN_ACCEL_XYZ
|
|
|
|
Building and Running
|
|
********************
|
|
|
|
This sample supports up to 10 streaming devices. Each device needs
|
|
to be aliased as ``streamN`` where ``N`` goes from ``0`` to ``9``. For example:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/ {
|
|
aliases {
|
|
stream0 = &lsm6dsv16x_6b_x_nucleo_iks4a1;
|
|
};
|
|
};
|
|
|
|
Example devicetree overlays and configurations are already available for sensortile_box_pro,
|
|
nucleo_f401re and nucleo_h503rb in the boards directory:
|
|
|
|
- :zephyr_file:`samples/sensor/stream_drdy/boards/sensortile_box_pro.overlay`
|
|
|
|
DT overlay file for the sensortile_box_pro board.
|
|
|
|
- :zephyr_file:`samples/sensor/stream_drdy/boards/sensortile_box_pro.conf`
|
|
|
|
Configuration file for the sensortile_box_pro board.
|
|
|
|
- :zephyr_file:`samples/sensor/stream_drdy/boards/nucleo_f401re.overlay`
|
|
|
|
DT overlay file for the nucleo_f401re board.
|
|
|
|
- :zephyr_file:`samples/sensor/stream_drdy/boards/nucleo_f401re.conf`
|
|
|
|
Configuration file for the nucleo_f401re board.
|
|
|
|
- :zephyr_file:`samples/sensor/stream_drdy/boards/nucleo_h503rb.overlay`
|
|
|
|
DT overlay file for the nucleo_h503rb board.
|
|
|
|
- :zephyr_file:`samples/sensor/stream_drdy/boards/nucleo_h503rb.conf`
|
|
|
|
Configuration file for the nucleo_h503rb board.
|
|
|
|
For example, build and run sample for sensortile_box_pro with:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/sensor/stream_drdy
|
|
:board: sensortile_box_pro
|
|
:goals: build flash
|
|
:compact:
|
|
|
|
Sample Output
|
|
=============
|
|
|
|
The following example output is for a lsm6dsv16x IMU device with accelerometer sensor.
|
|
The board used is a sensortile_box_pro.
|
|
|
|
.. code-block:: console
|
|
|
|
XL data for lsm6dsv16x@0 7320515312ns (-0.387584, 0.224894, 9.766184)
|
|
XL data for lsm6dsv16x@0 7321538600ns (-0.363659, 0.282314, 9.948014)
|
|
XL data for lsm6dsv16x@0 7322561362ns (-0.301454, 0.172259, 9.775754)
|
|
XL data for lsm6dsv16x@0 7323584881ns (-0.210539, 0.153119, 9.857099)
|
|
XL data for lsm6dsv16x@0 7324608368ns (-0.287099, 0.167474, 9.852314)
|
|
XL data for lsm6dsv16x@0 7325631281ns (-0.306239, 0.181829, 9.847529)
|
|
XL data for lsm6dsv16x@0 7326654425ns (-0.272744, 0.167474, 9.842744)
|
|
XL data for lsm6dsv16x@0 7327677993ns (-0.296669, 0.224894, 9.981509)
|
|
XL data for lsm6dsv16x@0 7328701506ns (-0.282314, 0.210539, 9.828389)
|
|
XL data for lsm6dsv16x@0 7329724306ns (-0.244034, 0.153119, 9.866669)
|
|
XL data for lsm6dsv16x@0 7330747556ns (-0.234464, 0.119624, 9.780539)
|
|
XL data for lsm6dsv16x@0 7331771000ns (-0.239249, 0.148334, 9.933659)
|
|
XL data for lsm6dsv16x@0 7332794575ns (-0.220109, 0.119624, 9.833174)
|
|
XL data for lsm6dsv16x@0 7333817437ns (-0.205754, 0.119624, 9.823604)
|
|
XL data for lsm6dsv16x@0 7334840643ns (-0.205754, 0.148334, 9.866669)
|
|
XL data for lsm6dsv16x@0 7335864162ns (-0.186614, 0.129194, 9.861884)
|
|
XL data for lsm6dsv16x@0 7336887593ns (-0.196184, 0.110054, 9.804464)
|
|
XL data for lsm6dsv16x@0 7337910356ns (-0.181829, 0.133979, 9.938444)
|
|
XL data for lsm6dsv16x@0 7338933650ns (-0.215324, 0.081344, 9.536504)
|
|
XL data for lsm6dsv16x@0 7339957075ns (-0.157904, 0.119624, 9.995864)
|
|
XL data for lsm6dsv16x@0 7340980675ns (-0.205754, 0.110054, 9.809249)
|
|
XL data for lsm6dsv16x@0 7342003487ns (-0.177044, 0.143549, 9.971939)
|
|
XL data for lsm6dsv16x@0 7343026593ns (-0.172259, 0.100484, 9.794894)
|
|
XL data for lsm6dsv16x@0 7344050168ns (-0.177044, 0.124409, 9.881024)
|
|
XL data for lsm6dsv16x@0 7345073643ns (-0.191399, 0.124409, 9.986294)
|
|
XL data for lsm6dsv16x@0 7346096587ns (-0.191399, 0.105269, 9.790109)
|
|
|
|
References
|
|
==========
|
|
|
|
.. target-notes::
|
|
|
|
.. _RTIO framework:
|
|
https://docs.zephyrproject.org/latest/services/rtio/index.html
|
|
|
|
.. _x-nucleo-iks4a1:
|
|
http://www.st.com/en/ecosystems/x-nucleo-iks4a1.html
|