1.. zephyr:code-sample:: stream_fifo
2 :name: Generic device FIFO streaming
3 :relevant-api: sensor_interface
4
5 Get accelerometer/gyroscope/temperature FIFO data frames from a sensor using
6 SENSOR_TRIG_FIFO_WATERMARK as a trigger.
7
8Overview
9********
10
11This sample application demonstrates how to stream FIFO data using the :ref:`RTIO framework <rtio>`.
12
13The streaming is started using the sensor_stream() API and it is self-sustained by the
14SENSOR_TRIG_FIFO_WATERMARK trigger.
15
16Currently the sample gets/prints data for the following sensor channels:
17
18- SENSOR_CHAN_ACCEL_XYZ
19- SENSOR_CHAN_GYRO_XYZ
20- SENSOR_CHAN_DIE_TEMP
21- SENSOR_CHAN_GAME_ROTATION_VECTOR
22- SENSOR_CHAN_GRAVITY_VECTOR
23- SENSOR_CHAN_GBIAS_XYZ
24
25Building and Running
26********************
27
28This sample supports up to 10 FIFO streaming devices. Each device needs
29to be aliased as :samp:`stream{N}` where ``N`` goes from ``0`` to ``9``. For example:
30
31.. code-block:: devicetree
32
33 / {
34 aliases {
35 stream0 = &lsm6dsv16x_6b_x_nucleo_iks4a1;
36 };
37 };
38
39.. note::
40 Note that NUM_SENSORS defined in main.c must match ``N`` and should be set accordingly.
41
42Example devicetree overlays and configurations are already available for nucleo_f401re and
43nucleo_h503rb in the boards directory:
44
45- :zephyr_file:`samples/sensor/stream_fifo/boards/nucleo_f401re.overlay`
46
47 DT overlay file for the nucleo_f401re board.
48
49- :zephyr_file:`samples/sensor/stream_fifo/boards/nucleo_f401re.conf`
50
51 Configuration file for the nucleo_f401re board.
52
53- :zephyr_file:`samples/sensor/stream_fifo/boards/nucleo_h503rb.overlay`
54
55 DT overlay file for the nucleo_h503rb board.
56
57- :zephyr_file:`samples/sensor/stream_fifo/boards/nucleo_h503rb.conf`
58
59 Configuration file for the nucleo_h503rb board.
60
61For example, build and run sample for nucleo_h503rb with:
62
63.. zephyr-app-commands::
64 :zephyr-app: samples/sensor/stream_fifo
65 :board: nucleo_h503rb
66 :goals: build flash
67 :compact:
68
69Sample Output
70=============
71
72The following example output is for lsm6dsv16x IMU device with accelerometer, gyroscope
73and temperature sensor including also the Sensor Fusion Low Power (SFLP) information.
74The FIFO watermark is set to 64. The board used is a nucleo_h503rb
75equipped with a :ref:`x-nucleo-iks4a1` shield.
76
77.. code-block:: console
78
79 FIFO count - 64
80 XL data for lsm6dsv16x@6b 1680572433340ns (0.373229, -0.009569, 9.909734)
81 XL data for lsm6dsv16x@6b 1680639100006ns (0.354089, -0.023924, 9.909734)
82 XL data for lsm6dsv16x@6b 1680705766672ns (0.368444, 0.000000, 9.933659)
83 XL data for lsm6dsv16x@6b 1680772433338ns (0.373229, 0.000000, 9.924089)
84 XL data for lsm6dsv16x@6b 1680839100004ns (0.368444, -0.004784, 9.924089)
85 XL data for lsm6dsv16x@6b 1680905766670ns (0.363659, -0.009569, 9.924089)
86 XL data for lsm6dsv16x@6b 1680972433336ns (0.358874, -0.004784, 9.928874)
87 XL data for lsm6dsv16x@6b 1681039100002ns (0.363659, 0.004784, 9.928874)
88 GY data for lsm6dsv16x@6b 1680572433340ns (0.001524, -0.000609, 0.004269)
89 GY data for lsm6dsv16x@6b 1680639100006ns (-0.001219, 0.002134, 0.004879)
90 GY data for lsm6dsv16x@6b 1680705766672ns (0.001219, -0.001219, 0.004879)
91 GY data for lsm6dsv16x@6b 1680772433338ns (-0.000914, 0.001219, 0.003964)
92 GY data for lsm6dsv16x@6b 1680839100004ns (0.000914, -0.001219, 0.004574)
93 GY data for lsm6dsv16x@6b 1680905766670ns (0.001829, 0.000914, 0.005489)
94 GY data for lsm6dsv16x@6b 1680972433336ns (-0.000609, 0.000304, 0.004574)
95 GY data for lsm6dsv16x@6b 1681039100002ns (0.001829, 0.000304, 0.004879)
96 TP data for lsm6dsv16x@6b 1680572433340ns 24.347656 °C
97 TP data for lsm6dsv16x@6b 1680639100006ns 24.324218 °C
98 TP data for lsm6dsv16x@6b 1680705766672ns 24.316406 °C
99 TP data for lsm6dsv16x@6b 1680772433338ns 24.296875 °C
100 ROT data for lsm6dsv16x@6b 1680639100006ns (-0.000008, -0.018661, 0.021575, 0.999593)
101 ROT data for lsm6dsv16x@6b 1680705766672ns (-0.000139, -0.018524, 0.021606, 0.999594)
102 ROT data for lsm6dsv16x@6b 1680772433338ns (-0.000055, -0.018569, 0.021621, 0.999593)
103 ROT data for lsm6dsv16x@6b 1680839100004ns (-0.000050, -0.018539, 0.021606, 0.999594)
104 ROT data for lsm6dsv16x@6b 1680905766670ns (-0.000003, -0.018569, 0.021621, 0.999593)
105 ROT data for lsm6dsv16x@6b 1680972433336ns (0.000044, -0.018493, 0.021667, 0.999594)
106 ROT data for lsm6dsv16x@6b 1681039100002ns (0.000013, -0.018432, 0.021667, 0.999595)
107 ROT data for lsm6dsv16x@6b 1681105766668ns (0.000113, -0.018402, 0.021682, 0.999595)
108 GV data for lsm6dsv16x@6b 1680639100006ns (37.270999, -0.792999, 998.447998)
109 GV data for lsm6dsv16x@6b 1680705766672ns (36.965999, -1.037000, 998.447998)
110 GV data for lsm6dsv16x@6b 1680772433338ns (37.088001, -0.854000, 998.447998)
111 GV data for lsm6dsv16x@6b 1680839100004ns (37.027000, -0.854000, 998.447998)
112 GV data for lsm6dsv16x@6b 1680905766670ns (37.088001, -0.792999, 998.447998)
113 GV data for lsm6dsv16x@6b 1680972433336ns (36.904998, -0.670999, 998.447998)
114 GV data for lsm6dsv16x@6b 1681039100002ns (36.783000, -0.732000, 998.447998)
115 GV data for lsm6dsv16x@6b 1681105766668ns (36.722000, -0.548999, 998.447998)
116 GY GBIAS data for lsm6dsv16x@6b 1680572433340ns (0.000303, -0.000151, 0.004179)
117 GY GBIAS data for lsm6dsv16x@6b 1680639100006ns (0.000303, 0.000000, 0.004179)
118 GY GBIAS data for lsm6dsv16x@6b 1680705766672ns (0.000303, -0.000075, 0.004179)
119 GY GBIAS data for lsm6dsv16x@6b 1680772433338ns (0.000227, 0.000000, 0.004179)
120 GY GBIAS data for lsm6dsv16x@6b 1680839100004ns (0.000303, -0.000075, 0.004179)
121 GY GBIAS data for lsm6dsv16x@6b 1680905766670ns (0.000303, 0.000000, 0.004255)
122 GY GBIAS data for lsm6dsv16x@6b 1680972433336ns (0.000303, 0.000000, 0.004255)
123 GY GBIAS data for lsm6dsv16x@6b 1681039100002ns (0.000379, 0.000000, 0.004255)
124 XL data for lsm6dsv16x@6b 1681105766668ns (0.358874, -0.019139, 9.928874)
125 XL data for lsm6dsv16x@6b 1681172433334ns (0.382799, -0.004784, 9.962369)
126 XL data for lsm6dsv16x@6b 1681239100000ns (0.354089, 0.000000, 9.914519)
127 GY data for lsm6dsv16x@6b 1681105766668ns (0.000304, 0.002134, 0.004574)
128 GY data for lsm6dsv16x@6b 1681172433334ns (-0.000914, 0.000914, 0.004574)
129 GY data for lsm6dsv16x@6b 1681239100000ns (0.002744, -0.002439, 0.004879)
130 TP data for lsm6dsv16x@6b 1680839100004ns 24.339843 °C
131 TP data for lsm6dsv16x@6b 1680905766670ns 24.339843 °C
132 TP data for lsm6dsv16x@6b 1680972433336ns 24.289062 °C
133 TP data for lsm6dsv16x@6b 1681039100002ns 24.296875 °C
134 ROT data for lsm6dsv16x@6b 1681172433334ns (0.000049, -0.018310, 0.021697, 0.999596)
135 ROT data for lsm6dsv16x@6b 1681239100000ns (0.000020, -0.018371, 0.021697, 0.999595)
136 GV data for lsm6dsv16x@6b 1681172433334ns (36.539001, -0.670999, 998.447998)
137 GV data for lsm6dsv16x@6b 1681239100000ns (36.660999, -0.732000, 998.447998)
138 GY GBIAS data for lsm6dsv16x@6b 1681105766668ns (0.000379, 0.000000, 0.004331)
139 GY GBIAS data for lsm6dsv16x@6b 1681172433334ns (0.000303, 0.000075, 0.004331)
140 GY GBIAS data for lsm6dsv16x@6b 1681239100000ns (0.000379, 0.000000, 0.004331)
141 TP data for lsm6dsv16x@6b 1681105766668ns 24.289062 °C
142 TP data for lsm6dsv16x@6b 1681172433334ns 24.324218 °C
143 TP data for lsm6dsv16x@6b 1681239100000ns 24.281250 °C
144