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