|
| 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 | + |
| 8 | +Overview |
| 9 | +******** |
| 10 | + |
| 11 | +This sample application demonstrates how to stream FIFO data using the :ref:`RTIO framework <rtio>`. |
| 12 | + |
| 13 | +The streaming is started using the sensor_stream() API and it is self-sustained by the |
| 14 | +SENSOR_TRIG_FIFO_WATERMARK trigger. |
| 15 | + |
| 16 | +Currently 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 | + |
| 25 | +Building and Running |
| 26 | +******************** |
| 27 | + |
| 28 | +This sample supports up to 10 FIFO streaming devices. Each device needs |
| 29 | +to 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 | + |
| 42 | +Example devicetree overlays and configurations are already available for nucleo_f401re and |
| 43 | +nucleo_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 | + |
| 61 | +For 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 | + |
| 69 | +Sample Output |
| 70 | +============= |
| 71 | + |
| 72 | +The following example output is for lsm6dsv16x IMU device with accelerometer, gyroscope |
| 73 | +and temperature sensor including also the Sensor Fusion Low Power (SFLP) information. |
| 74 | +The FIFO watermark is set to 64. The board used is a nucleo_h503rb |
| 75 | +equipped 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 |
0 commit comments