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