← Documents Documentation/iio/adis16480.rst GitHub 원문 ↗

Linux 6.18.37 · IIO

ADIS16480 driver

ADIS16480 계열 IMU의 7종 채널, 축별 보정·필터, 진단과 burst 버퍼를 설명합니다.

Source pathDocumentation/iio/adis16480.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

adis16480.rst:1-446

ADIS16480 드라이버는 12개 SPI IMU의 3축 가속도·각속도, delta 값과 온도를 제공합니다. ADIS16480·16488은 자력·기압 채널을 추가하며, 축별 보정 배율과 필터, debugfs 진단 및 상호 배타적인 일반·delta burst 버퍼를 지원합니다.

문서 개요
항목
SourceDocumentation/iio/adis16480.rst
분량446 source lines
지원 장치12
처리값 채널 유형7
자력·기압ADIS16480, ADIS16488
Delta bufferADIS16545, ADIS16547

지원 범위와 특수 기능을 요약합니다.

통합 IMU 흐름
관성·온도 및 선택 자력·기압 센서 취득공장 보상과 축별 사용자 보정 적용Raw·offset·scale로 물리 단위 계산일반 또는 delta burst 그룹 선택Sysfs 또는 IIO buffer에서 결과 수집

다중 센서 취득부터 처리값 또는 버퍼 읽기까지의 전체 경로입니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 ================
4 ADIS16480 driver
5 ================
6
7 This driver supports Analog Device's IMUs on SPI bus.
8
9 1. Supported devices
10 ====================
11
12 * `ADIS16375 <https://www.analog.com/ADIS16375>`_
13 * `ADIS16480 <https://www.analog.com/ADIS16480>`_
14 * `ADIS16485 <https://www.analog.com/ADIS16485>`_
15 * `ADIS16486 <https://www.analog.com/ADIS16486>`_
16 * `ADIS16487 <https://www.analog.com/ADIS16487>`_
17 * `ADIS16488 <https://www.analog.com/ADIS16488>`_
18 * `ADIS16489 <https://www.analog.com/ADIS16489>`_
19 * `ADIS16490 <https://www.analog.com/ADIS16490>`_
20 * `ADIS16495 <https://www.analog.com/ADIS16495>`_
21 * `ADIS16497 <https://www.analog.com/ADIS16497>`_
22 * `ADIS16545 <https://www.analog.com/ADIS16545>`_
23 * `ADIS16547 <https://www.analog.com/ADIS16547>`_
24
25 Each supported device is a complete inertial system that includes a triaxial
26 gyroscope and a triaxial accelerometer. Each inertial sensor in device combines
27 with signal conditioning that optimizes dynamic performance. The factory
28 calibration characterizes each sensor for sensitivity, bias, and alignment. As
29 a result, each sensor has its own dynamic compensation formulas that provide
30 accurate sensor measurements.
31
32 2. Device attributes
33 ====================
34
35 Accelerometer, gyroscope measurements are always provided. Furthermore, the
36 driver offers the capability to retrieve the delta angle and the delta velocity
37 measurements computed by the device.
38
39 The delta angle measurements represent a calculation of angular displacement
40 between each sample update, while the delta velocity measurements represent a
41 calculation of linear velocity change between each sample update.
42
43 Finally, temperature data are provided which show a coarse measurement of
44 the temperature inside of the IMU device. This data is most useful for
45 monitoring relative changes in the thermal environment.
46
47 ADIS16480 and ADIS16488 also provide access to barometric pressure data and
48 triaxial magnetometer measurements.
49
50 Each IIO device, has a device folder under ``/sys/bus/iio/devices/iio:deviceX``,
51 where X is the IIO index of the device. Under these folders reside a set of
52 device files, depending on the characteristics and features of the hardware
53 device in questions. These files are consistently generalized and documented in
54 the IIO ABI documentation.
55
56 The following tables show the adis16480 related device files, found in the
57 specific device folder path ``/sys/bus/iio/devices/iio:deviceX``.
58
59 **Available only for ADIS16480 and ADIS16488:**
60
61 +------------------------------------------+---------------------------------------------------------+
62 | 3-Axis Magnetometer related device files | Description |
63 +------------------------------------------+---------------------------------------------------------+
64 | in_magn_scale | Scale for the magnetometer channels. |
65 +------------------------------------------+---------------------------------------------------------+
66 | in_magn_x_calibbias | Calibration offset for the X-axis magnetometer channel. |
67 +------------------------------------------+---------------------------------------------------------+
68 | in_magn_x_filter_low_pass_3db_frequency | Bandwidth for the X-axis magnetometer channel. |
69 +------------------------------------------+---------------------------------------------------------+
70 | in_magn_x_raw | Raw X-axis magnetometer channel value. |
71 +------------------------------------------+---------------------------------------------------------+
72 | in_magn_y_calibbias | Calibration offset for the Y-axis magnetometer channel. |
73 +------------------------------------------+---------------------------------------------------------+
74 | in_magn_y_filter_low_pass_3db_frequency | Bandwidth for the Y-axis magnetometer channel. |
75 +------------------------------------------+---------------------------------------------------------+
76 | in_magn_y_raw | Raw Y-axis magnetometer channel value. |
77 +------------------------------------------+---------------------------------------------------------+
78 | in_magn_z_calibbias | Calibration offset for the Z-axis magnetometer channel. |
79 +------------------------------------------+---------------------------------------------------------+
80 | in_magn_z_filter_low_pass_3db_frequency | Bandwidth for the Z-axis magnetometer channel. |
81 +------------------------------------------+---------------------------------------------------------+
82 | in_magn_z_raw | Raw Z-axis magnetometer channel value. |
83 +------------------------------------------+---------------------------------------------------------+
84
85 +------------------------------------------+-----------------------------------------------------+
86 | Barometric pressure sensor related files | Description |
87 +------------------------------------------+-----------------------------------------------------+
88 | in_pressure0_calibbias | Calibration offset for barometric pressure channel. |
89 +------------------------------------------+-----------------------------------------------------+
90 | in_pressure0_raw | Raw barometric pressure channel value. |
91 +------------------------------------------+-----------------------------------------------------+
92 | in_pressure0_scale | Scale for the barometric pressure sensor channel. |
93 +------------------------------------------+-----------------------------------------------------+
94
95 **Available for all supported devices:**
96
97 +-------------------------------------------+----------------------------------------------------------+
98 | 3-Axis Accelerometer related device files | Description |
99 +-------------------------------------------+----------------------------------------------------------+
100 | in_accel_scale | Scale for the accelerometer channels. |
101 +-------------------------------------------+----------------------------------------------------------+
102 | in_accel_x_calibbias | Calibration offset for the X-axis accelerometer channel. |
103 +-------------------------------------------+----------------------------------------------------------+
104 | in_accel_x_calibscale | Calibration scale for the X-axis accelerometer channel. |
105 +-------------------------------------------+----------------------------------------------------------+
106 | in_accel_x_filter_low_pass_3db_frequency | Bandwidth for the X-axis accelerometer channel. |
107 +-------------------------------------------+----------------------------------------------------------+
108 | in_accel_x_raw | Raw X-axis accelerometer channel value. |
109 +-------------------------------------------+----------------------------------------------------------+
110 | in_accel_y_calibbias | Calibration offset for the Y-axis accelerometer channel. |
111 +-------------------------------------------+----------------------------------------------------------+
112 | in_accel_y_calibscale | Calibration scale for the Y-axis accelerometer channel. |
113 +-------------------------------------------+----------------------------------------------------------+
114 | in_accel_y_filter_low_pass_3db_frequency | Bandwidth for the Y-axis accelerometer channel. |
115 +-------------------------------------------+----------------------------------------------------------+
116 | in_accel_y_raw | Raw Y-axis accelerometer channel value. |
117 +-------------------------------------------+----------------------------------------------------------+
118 | in_accel_z_calibbias | Calibration offset for the Z-axis accelerometer channel. |
119 +-------------------------------------------+----------------------------------------------------------+
120 | in_accel_z_calibscale | Calibration scale for the Z-axis accelerometer channel. |
121 +-------------------------------------------+----------------------------------------------------------+
122 | in_accel_z_filter_low_pass_3db_frequency | Bandwidth for the Z-axis accelerometer channel. |
123 +-------------------------------------------+----------------------------------------------------------+
124 | in_accel_z_raw | Raw Z-axis accelerometer channel value. |
125 +-------------------------------------------+----------------------------------------------------------+
126 | in_deltavelocity_scale | Scale for delta velocity channels. |
127 +-------------------------------------------+----------------------------------------------------------+
128 | in_deltavelocity_x_raw | Raw X-axis delta velocity channel value. |
129 +-------------------------------------------+----------------------------------------------------------+
130 | in_deltavelocity_y_raw | Raw Y-axis delta velocity channel value. |
131 +-------------------------------------------+----------------------------------------------------------+
132 | in_deltavelocity_z_raw | Raw Z-axis delta velocity channel value. |
133 +-------------------------------------------+----------------------------------------------------------+
134
135 +--------------------------------------------+------------------------------------------------------+
136 | 3-Axis Gyroscope related device files | Description |
137 +--------------------------------------------+------------------------------------------------------+
138 | in_anglvel_scale | Scale for the gyroscope channels. |
139 +--------------------------------------------+------------------------------------------------------+
140 | in_anglvel_x_calibbias | Calibration offset for the X-axis gyroscope channel. |
141 +--------------------------------------------+------------------------------------------------------+
142 | in_anglvel_x_calibscale | Calibration scale for the X-axis gyroscope channel. |
143 +--------------------------------------------+------------------------------------------------------+
144 | in_anglvel_x_filter_low_pass_3db_frequency | Bandwidth for the X-axis gyroscope channel. |
145 +--------------------------------------------+------------------------------------------------------+
146 | in_anglvel_x_raw | Raw X-axis gyroscope channel value. |
147 +--------------------------------------------+------------------------------------------------------+
148 | in_anglvel_y_calibbias | Calibration offset for the Y-axis gyroscope channel. |
149 +--------------------------------------------+------------------------------------------------------+
150 | in_anglvel_y_calibscale | Calibration scale for the Y-axis gyroscope channel. |
151 +--------------------------------------------+------------------------------------------------------+
152 | in_anglvel_y_filter_low_pass_3db_frequency | Bandwidth for the Y-axis gyroscope channel. |
153 +--------------------------------------------+------------------------------------------------------+
154 | in_anglvel_y_raw | Raw Y-axis gyroscope channel value. |
155 +--------------------------------------------+------------------------------------------------------+
156 | in_anglvel_z_calibbias | Calibration offset for the Z-axis gyroscope channel. |
157 +--------------------------------------------+------------------------------------------------------+
158 | in_anglvel_z_calibscale | Calibration scale for the Z-axis gyroscope channel. |
159 +--------------------------------------------+------------------------------------------------------+
160 | in_anglvel_z_filter_low_pass_3db_frequency | Bandwidth for the Z-axis gyroscope channel. |
161 +--------------------------------------------+------------------------------------------------------+
162 | in_anglvel_z_raw | Raw Z-axis gyroscope channel value. |
163 +--------------------------------------------+------------------------------------------------------+
164 | in_deltaangl_scale | Scale for delta angle channels. |
165 +--------------------------------------------+------------------------------------------------------+
166 | in_deltaangl_x_raw | Raw X-axis delta angle channel value. |
167 +--------------------------------------------+------------------------------------------------------+
168 | in_deltaangl_y_raw | Raw Y-axis delta angle channel value. |
169 +--------------------------------------------+------------------------------------------------------+
170 | in_deltaangl_z_raw | Raw Z-axis delta angle channel value. |
171 +--------------------------------------------+------------------------------------------------------+
172
173 +----------------------------------+-------------------------------------------+
174 | Temperature sensor related files | Description |
175 +----------------------------------+-------------------------------------------+
176 | in_temp0_raw | Raw temperature channel value. |
177 +----------------------------------+-------------------------------------------+
178 | in_temp0_offset | Offset for the temperature sensor channel.|
179 +----------------------------------+-------------------------------------------+
180 | in_temp0_scale | Scale for the temperature sensor channel. |
181 +----------------------------------+-------------------------------------------+
182
183 +-------------------------------+---------------------------------------------------------+
184 | Miscellaneous device files | Description |
185 +-------------------------------+---------------------------------------------------------+
186 | name | Name of the IIO device. |
187 +-------------------------------+---------------------------------------------------------+
188 | sampling_frequency | Currently selected sample rate. |
189 +-------------------------------+---------------------------------------------------------+
190
191 The following table shows the adis16480 related device debug files, found in the
192 specific device debug folder path ``/sys/kernel/debug/iio/iio:deviceX``.
193
194 +----------------------+-------------------------------------------------------------------------+
195 | Debugfs device files | Description |
196 +----------------------+-------------------------------------------------------------------------+
197 | serial_number | The serial number of the chip in hexadecimal format. |
198 +----------------------+-------------------------------------------------------------------------+
199 | product_id | Chip specific product id (e.g. 16480, 16488, 16545, etc.). |
200 +----------------------+-------------------------------------------------------------------------+
201 | flash_count | The number of flash writes performed on the device. |
202 +----------------------+-------------------------------------------------------------------------+
203 | firmware_revision | String containing the firmware revision in the following format ##.##. |
204 +----------------------+-------------------------------------------------------------------------+
205 | firmware_date | String containing the firmware date in the following format mm-dd-yyyy. |
206 +----------------------+-------------------------------------------------------------------------+
207
208 Channels processed values
209 -------------------------
210
211 A channel value can be read from its _raw attribute. The value returned is the
212 raw value as reported by the devices. To get the processed value of the channel,
213 apply the following formula:
214
215 .. code-block:: bash
216
217 processed value = (_raw + _offset) * _scale
218
219 Where _offset and _scale are device attributes. If no _offset attribute is
220 present, simply assume its value is 0.
221
222 The adis16480 driver offers data for 7 types of channels, the table below shows
223 the measurement units for the processed value, which are defined by the IIO
224 framework:
225
226 +--------------------------------------+---------------------------+
227 | Channel type | Measurement unit |
228 +--------------------------------------+---------------------------+
229 | Acceleration on X, Y, and Z axis | Meters per Second squared |
230 +--------------------------------------+---------------------------+
231 | Angular velocity on X, Y and Z axis | Radians per second |
232 +--------------------------------------+---------------------------+
233 | Delta velocity on X. Y, and Z axis | Meters per Second |
234 +--------------------------------------+---------------------------+
235 | Delta angle on X, Y, and Z axis | Radians |
236 +--------------------------------------+---------------------------+
237 | Temperature | Millidegrees Celsius |
238 +--------------------------------------+---------------------------+
239 | Magnetic field along X, Y and Z axis | Gauss |
240 +--------------------------------------+---------------------------+
241 | Barometric pressure | kilo Pascal |
242 +--------------------------------------+---------------------------+
243
244 Usage examples
245 --------------
246
247 Show device name:
248
249 .. code-block:: bash
250
251 root:/sys/bus/iio/devices/iio:device0> cat name
252 adis16545-1
253
254 Show accelerometer channels value:
255
256 .. code-block:: bash
257
258 root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_raw
259 1376728
260 root:/sys/bus/iio/devices/iio:device0> cat in_accel_y_raw
261 4487621
262 root:/sys/bus/iio/devices/iio:device0> cat in_accel_z_raw
263 262773792
264 root:/sys/bus/iio/devices/iio:device0> cat in_accel_scale
265 0.000000037
266
267 - X-axis acceleration = in_accel_x_raw * in_accel_scale = 0.050938936 m/s^2
268 - Y-axis acceleration = in_accel_y_raw * in_accel_scale = 0.166041977 m/s^2
269 - Z-axis acceleration = in_accel_z_raw * in_accel_scale = 9.722630304 m/s^2
270
271 Show gyroscope channels value:
272
273 .. code-block:: bash
274
275 root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_x_raw
276 -1041702
277 root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_y_raw
278 -273013
279 root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_z_raw
280 2745116
281 root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_scale
282 0.000000001
283
284 - X-axis angular velocity = in_anglvel_x_raw * in_anglvel_scale = −0.001041702 rad/s
285 - Y-axis angular velocity = in_anglvel_y_raw * in_anglvel_scale = −0.000273013 rad/s
286 - Z-axis angular velocity = in_anglvel_z_raw * in_anglvel_scale = 0.002745116 rad/s
287
288 Set calibration offset for accelerometer channels:
289
290 .. code-block:: bash
291
292 root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_calibbias
293 0
294
295 root:/sys/bus/iio/devices/iio:device0> echo 5000 > in_accel_x_calibbias
296 root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_calibbias
297 5000
298
299 Set calibration offset for gyroscope channels:
300
301 .. code-block:: bash
302
303 root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_y_calibbias
304 0
305
306 root:/sys/bus/iio/devices/iio:device0> echo -5000 > in_anglvel_y_calibbias
307 root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_y_calibbias
308 -5000
309
310 Set sampling frequency:
311
312 .. code-block:: bash
313
314 root:/sys/bus/iio/devices/iio:device0> cat sampling_frequency
315 4250.000000
316
317 root:/sys/bus/iio/devices/iio:device0> echo 1000 > sampling_frequency
318 1062.500000
319
320 Set bandwidth for accelerometer channels:
321
322 .. code-block:: bash
323
324 root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_filter_low_pass_3db_frequency
325 0
326
327 root:/sys/bus/iio/devices/iio:device0> echo 300 > in_accel_x_filter_low_pass_3db_frequency
328 root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_filter_low_pass_3db_frequency
329 300
330
331 Show serial number:
332
333 .. code-block:: bash
334
335 root:/sys/kernel/debug/iio/iio:device0> cat serial_number
336 0x000c
337
338 Show product id:
339
340 .. code-block:: bash
341
342 root:/sys/kernel/debug/iio/iio:device0> cat product_id
343 16545
344
345 Show flash count:
346
347 .. code-block:: bash
348
349 root:/sys/kernel/debug/iio/iio:device0> cat flash_count
350 88
351
352 Show firmware revision:
353
354 .. code-block:: bash
355
356 root:/sys/kernel/debug/iio/iio:device0> cat firmware_revision
357 1.4
358
359 Show firmware date:
360
361 .. code-block:: bash
362
363 root:/sys/kernel/debug/iio/iio:device0> cat firmware_date
364 09-23-2023
365
366 3. Device buffers
367 =================
368
369 This driver supports IIO buffers.
370
371 All devices support retrieving the raw acceleration, gyroscope and temperature
372 measurements using buffers.
373
374 The following device families also support retrieving the delta velocity, delta
375 angle and temperature measurements using buffers:
376
377 - ADIS16545
378 - ADIS16547
379
380 However, when retrieving acceleration or gyroscope data using buffers, delta
381 readings will not be available and vice versa. This is because the device only
382 allows to read either acceleration and gyroscope data or delta velocity and
383 delta angle data at a time and switching between these two burst data selection
384 modes is time consuming.
385
386 Usage examples
387 --------------
388
389 Set device trigger in current_trigger, if not already set:
390
391 .. code-block:: bash
392
393 root:/sys/bus/iio/devices/iio:device0> cat trigger/current_trigger
394
395 root:/sys/bus/iio/devices/iio:device0> echo adis16545-1-dev0 > trigger/current_trigger
396 root:/sys/bus/iio/devices/iio:device0> cat trigger/current_trigger
397 adis16545-1-dev0
398
399 Select channels for buffer read:
400
401 .. code-block:: bash
402
403 root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_deltavelocity_x_en
404 root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_deltavelocity_y_en
405 root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_deltavelocity_z_en
406 root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_temp0_en
407
408 Set the number of samples to be stored in the buffer:
409
410 .. code-block:: bash
411
412 root:/sys/bus/iio/devices/iio:device0> echo 10 > buffer/length
413
414 Enable buffer readings:
415
416 .. code-block:: bash
417
418 root:/sys/bus/iio/devices/iio:device0> echo 1 > buffer/enable
419
420 Obtain buffered data::
421
422 root:/sys/bus/iio/devices/iio:device0> hexdump -C /dev/iio\:device0
423 ...
424 00006aa0 09 62 00 00 ff ff fc a4 00 00 01 69 00 03 3c 08 |.b.........i..<.|
425 00006ab0 09 61 00 00 00 00 02 96 00 00 02 8f 00 03 37 50 |.a............7P|
426 00006ac0 09 61 00 00 00 00 12 3d 00 00 0b 89 00 03 2c 0b |.a.....=......,.|
427 00006ad0 09 61 00 00 00 00 1e dc 00 00 16 dd 00 03 25 bf |.a............%.|
428 00006ae0 09 61 00 00 00 00 1e e3 00 00 1b bf 00 03 27 0b |.a............'.|
429 00006af0 09 61 00 00 00 00 15 50 00 00 19 44 00 03 30 fd |.a.....P...D..0.|
430 00006b00 09 61 00 00 00 00 09 0e 00 00 14 41 00 03 3d 7f |.a.........A..=.|
431 00006b10 09 61 00 00 ff ff ff f0 00 00 0e bc 00 03 48 d0 |.a............H.|
432 00006b20 09 63 00 00 00 00 00 9f 00 00 0f 37 00 03 4c fe |.c.........7..L.|
433 00006b30 09 64 00 00 00 00 0b f6 00 00 18 92 00 03 43 22 |.d............C"|
434 00006b40 09 64 00 00 00 00 18 df 00 00 22 33 00 03 33 ab |.d........"3..3.|
435 00006b50 09 63 00 00 00 00 1e 81 00 00 26 be 00 03 29 60 |.c........&...)`|
436 00006b60 09 63 00 00 00 00 1b 13 00 00 22 2f 00 03 23 91 |.c........"/..#.|
437 ...
438
439 See ``Documentation/iio/iio_devbuf.rst`` for more information about how buffered
440 data is structured.
441
442 4. IIO Interfacing Tools
443 ========================
444
445 See ``Documentation/iio/iio_tools.rst`` for the description of the available IIO
446 interfacing tools.
447

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

지원 장치와 측정 기능

1-57

이 드라이버는 SPI 버스에 연결된 Analog Devices IMU를 지원합니다.

ADIS16480 드라이버 지원 장치
장치버스기본 센서
ADIS16375SPI3축 gyroscope + 3축 accelerometer
ADIS16480SPI기본 센서 + magnetometer + pressure
ADIS16485SPI3축 gyroscope + 3축 accelerometer
ADIS16486SPI3축 gyroscope + 3축 accelerometer
ADIS16487SPI3축 gyroscope + 3축 accelerometer
ADIS16488SPI기본 센서 + magnetometer + pressure
ADIS16489SPI3축 gyroscope + 3축 accelerometer
ADIS16490SPI3축 gyroscope + 3축 accelerometer
ADIS16495SPI3축 gyroscope + 3축 accelerometer
ADIS16497SPI3축 gyroscope + 3축 accelerometer
ADIS16545SPI3축 gyroscope + 3축 accelerometer
ADIS16547SPI3축 gyroscope + 3축 accelerometer

3축 자이로스코프와 3축 가속도계를 포함하는 12개 완전 관성 시스템입니다.

각 장치는 3축 자이로스코프와 3축 가속도계를 포함한 완전 관성 시스템입니다. 각 관성 센서는 동적 성능을 최적화하는 신호 조절 회로와 결합됩니다.

공장 보정은 각 센서의 감도, 바이어스, 정렬을 특성화합니다. 그 결과 각 센서는 정확한 측정값을 제공하는 고유한 동적 보상 공식을 갖습니다.

가속도계와 자이로스코프 측정값은 항상 제공됩니다. 장치가 계산한 delta angle과 delta velocity도 드라이버를 통해 읽을 수 있습니다. Delta angle은 샘플 갱신 사이의 각변위를, delta velocity는 샘플 갱신 사이의 선형 속도 변화를 나타냅니다.

온도 데이터는 IMU 내부 온도의 대략적인 값으로, 열 환경의 상대 변화를 감시하는 데 유용합니다. ADIS16480과 ADIS16488은 기압 데이터와 3축 자력계 측정값도 제공합니다.

각 IIO 장치에는 `/sys/bus/iio/devices/iio:deviceX` 폴더가 있으며 X는 IIO 장치 인덱스입니다. 하드웨어 기능에 따른 장치 파일이 이 경로 아래에 생성되고 IIO ABI 규칙을 따릅니다.

ADIS16480 계열 측정 흐름
3축 가속도·각속도와 선택 센서 입력 취득장치별 신호 조절과 동적 보상 적용Delta angle·delta velocity 계산온도 및 선택적 자력·기압 값 결합`iio:deviceX` 채널 속성으로 노출

공장 보정된 센서 입력이 IIO 장치 파일까지 전달되는 과정입니다.

.. SPDX-License-Identifier: GPL-2.0

================
ADIS16480 driver
================

This driver supports Analog Device's IMUs on SPI bus.

1. Supported devices
====================

* `ADIS16375 <https://www.analog.com/ADIS16375>`_
* `ADIS16480 <https://www.analog.com/ADIS16480>`_
* `ADIS16485 <https://www.analog.com/ADIS16485>`_
* `ADIS16486 <https://www.analog.com/ADIS16486>`_
* `ADIS16487 <https://www.analog.com/ADIS16487>`_
* `ADIS16488 <https://www.analog.com/ADIS16488>`_
* `ADIS16489 <https://www.analog.com/ADIS16489>`_
* `ADIS16490 <https://www.analog.com/ADIS16490>`_
* `ADIS16495 <https://www.analog.com/ADIS16495>`_
* `ADIS16497 <https://www.analog.com/ADIS16497>`_
* `ADIS16545 <https://www.analog.com/ADIS16545>`_
* `ADIS16547 <https://www.analog.com/ADIS16547>`_

Each supported device is a complete inertial system that includes a triaxial
gyroscope and a triaxial accelerometer. Each inertial sensor in device combines
with signal conditioning that optimizes dynamic performance. The factory
calibration characterizes each sensor for sensitivity, bias, and alignment. As
a result, each sensor has its own dynamic compensation formulas that provide
accurate sensor measurements.

2. Device attributes
====================

Accelerometer, gyroscope measurements are always provided. Furthermore, the
driver offers the capability to retrieve the delta angle and the delta velocity
measurements computed by the device.

The delta angle measurements represent a calculation of angular displacement
between each sample update, while the delta velocity measurements represent a
calculation of linear velocity change between each sample update.

Finally, temperature data are provided which show a coarse measurement of
the temperature inside of the IMU device. This data is most useful for
monitoring relative changes in the thermal environment.

ADIS16480 and ADIS16488 also provide access to barometric pressure data and
triaxial magnetometer measurements.

Each IIO device, has a device folder under ``/sys/bus/iio/devices/iio:deviceX``,
where X is the IIO index of the device. Under these folders reside a set of
device files, depending on the characteristics and features of the hardware
device in questions. These files are consistently generalized and documented in
the IIO ABI documentation.

The following tables show the adis16480 related device files, found in the
specific device folder path ``/sys/bus/iio/devices/iio:deviceX``.

자력계·기압계와 가속도 속성

58-134

3축 자력계와 기압 센서 속성은 ADIS16480과 ADIS16488에서만 사용할 수 있습니다.

ADIS16480·16488 전용 자력계 속성
장치 파일설명
`in_magn_scale`자력계 채널 배율
`in_magn_x_calibbias`X축 자력계 보정 오프셋
`in_magn_x_filter_low_pass_3db_frequency`X축 자력계 대역폭
`in_magn_x_raw`X축 자력계 원시 값
`in_magn_y_calibbias`Y축 자력계 보정 오프셋
`in_magn_y_filter_low_pass_3db_frequency`Y축 자력계 대역폭
`in_magn_y_raw`Y축 자력계 원시 값
`in_magn_z_calibbias`Z축 자력계 보정 오프셋
`in_magn_z_filter_low_pass_3db_frequency`Z축 자력계 대역폭
`in_magn_z_raw`Z축 자력계 원시 값

각 축은 원시 값, 보정 오프셋, 저역 통과 3 dB 대역폭을 제공합니다.

ADIS16480·16488 전용 기압 속성
장치 파일설명
`in_pressure0_calibbias`기압 채널 보정 오프셋
`in_pressure0_raw`원시 기압 값
`in_pressure0_scale`기압 센서 채널 배율

기압 채널의 원시 값, 오프셋과 배율입니다.

다음 가속도계와 delta velocity 속성은 모든 지원 장치에서 사용할 수 있습니다.

3축 가속도계와 delta velocity 속성
장치 파일설명
`in_accel_scale`가속도계 채널 배율
`in_accel_x_calibbias`X축 가속도 보정 오프셋
`in_accel_x_calibscale`X축 가속도 보정 배율
`in_accel_x_filter_low_pass_3db_frequency`X축 가속도 대역폭
`in_accel_x_raw`X축 가속도 원시 값
`in_accel_y_calibbias`Y축 가속도 보정 오프셋
`in_accel_y_calibscale`Y축 가속도 보정 배율
`in_accel_y_filter_low_pass_3db_frequency`Y축 가속도 대역폭
`in_accel_y_raw`Y축 가속도 원시 값
`in_accel_z_calibbias`Z축 가속도 보정 오프셋
`in_accel_z_calibscale`Z축 가속도 보정 배율
`in_accel_z_filter_low_pass_3db_frequency`Z축 가속도 대역폭
`in_accel_z_raw`Z축 가속도 원시 값
`in_deltavelocity_scale`Delta velocity 채널 배율
`in_deltavelocity_x_raw`X축 delta velocity 원시 값
`in_deltavelocity_y_raw`Y축 delta velocity 원시 값
`in_deltavelocity_z_raw`Z축 delta velocity 원시 값

각 가속도 축은 raw·calibbias·calibscale·filter를 제공하고 delta velocity는 축별 raw를 제공합니다.

축별 가속도 신호 설정
축별 `in_accel_*_raw` 취득축별 `calibbias` 오프셋 적용축별 `calibscale` 보정 배율 적용축별 low-pass 3 dB 대역폭 선택공통 `in_accel_scale`로 물리 단위 변환

한 축의 센서 원시 값에 보정과 필터를 적용하는 구조입니다.


**Available only for ADIS16480 and ADIS16488:**

+------------------------------------------+---------------------------------------------------------+
| 3-Axis Magnetometer related device files | Description                                             |
+------------------------------------------+---------------------------------------------------------+
| in_magn_scale                            | Scale for the magnetometer channels.                    |
+------------------------------------------+---------------------------------------------------------+
| in_magn_x_calibbias                      | Calibration offset for the X-axis magnetometer channel. |
+------------------------------------------+---------------------------------------------------------+
| in_magn_x_filter_low_pass_3db_frequency  | Bandwidth for the X-axis magnetometer channel.          |
+------------------------------------------+---------------------------------------------------------+
| in_magn_x_raw                            | Raw X-axis magnetometer channel value.                  |
+------------------------------------------+---------------------------------------------------------+
| in_magn_y_calibbias                      | Calibration offset for the Y-axis magnetometer channel. |
+------------------------------------------+---------------------------------------------------------+
| in_magn_y_filter_low_pass_3db_frequency  | Bandwidth for the Y-axis magnetometer channel.          |
+------------------------------------------+---------------------------------------------------------+
| in_magn_y_raw                            | Raw Y-axis magnetometer channel value.                  |
+------------------------------------------+---------------------------------------------------------+
| in_magn_z_calibbias                      | Calibration offset for the Z-axis magnetometer channel. |
+------------------------------------------+---------------------------------------------------------+
| in_magn_z_filter_low_pass_3db_frequency  | Bandwidth for the Z-axis magnetometer channel.          |
+------------------------------------------+---------------------------------------------------------+
| in_magn_z_raw                            | Raw Z-axis magnetometer channel value.                  |
+------------------------------------------+---------------------------------------------------------+

+------------------------------------------+-----------------------------------------------------+
| Barometric pressure sensor related files | Description                                         |
+------------------------------------------+-----------------------------------------------------+
| in_pressure0_calibbias                   | Calibration offset for barometric pressure channel. |
+------------------------------------------+-----------------------------------------------------+
| in_pressure0_raw                         | Raw barometric pressure channel value.              |
+------------------------------------------+-----------------------------------------------------+
| in_pressure0_scale                       | Scale for the barometric pressure sensor channel.   |
+------------------------------------------+-----------------------------------------------------+

**Available for all supported devices:**

+-------------------------------------------+----------------------------------------------------------+
| 3-Axis Accelerometer related device files | Description                                              |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_scale                            | Scale for the accelerometer channels.                    |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_x_calibbias                      | Calibration offset for the X-axis accelerometer channel. |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_x_calibscale                     | Calibration scale for the X-axis accelerometer channel.  |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_x_filter_low_pass_3db_frequency  | Bandwidth for the X-axis accelerometer channel.          |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_x_raw                            | Raw X-axis accelerometer channel value.                  |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_y_calibbias                      | Calibration offset for the Y-axis accelerometer channel. |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_y_calibscale                     | Calibration scale for the Y-axis accelerometer channel.  |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_y_filter_low_pass_3db_frequency  | Bandwidth for the Y-axis accelerometer channel.          |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_y_raw                            | Raw Y-axis accelerometer channel value.                  |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_z_calibbias                      | Calibration offset for the Z-axis accelerometer channel. |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_z_calibscale                     | Calibration scale for the Z-axis accelerometer channel.  |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_z_filter_low_pass_3db_frequency  | Bandwidth for the Z-axis accelerometer channel.          |
+-------------------------------------------+----------------------------------------------------------+
| in_accel_z_raw                            | Raw Z-axis accelerometer channel value.                  |
+-------------------------------------------+----------------------------------------------------------+
| in_deltavelocity_scale                    | Scale for delta velocity channels.                       |
+-------------------------------------------+----------------------------------------------------------+
| in_deltavelocity_x_raw                    | Raw X-axis delta velocity channel value.                 |
+-------------------------------------------+----------------------------------------------------------+
| in_deltavelocity_y_raw                    | Raw Y-axis delta velocity channel value.                 |
+-------------------------------------------+----------------------------------------------------------+
| in_deltavelocity_z_raw                    | Raw Z-axis delta velocity channel value.                 |
+-------------------------------------------+----------------------------------------------------------+

자이로스코프·온도와 debugfs

135-207
3축 자이로스코프와 delta angle 속성
장치 파일설명
`in_anglvel_scale`자이로스코프 채널 배율
`in_anglvel_x_calibbias`X축 각속도 보정 오프셋
`in_anglvel_x_calibscale`X축 각속도 보정 배율
`in_anglvel_x_filter_low_pass_3db_frequency`X축 자이로스코프 대역폭
`in_anglvel_x_raw`X축 각속도 원시 값
`in_anglvel_y_calibbias`Y축 각속도 보정 오프셋
`in_anglvel_y_calibscale`Y축 각속도 보정 배율
`in_anglvel_y_filter_low_pass_3db_frequency`Y축 자이로스코프 대역폭
`in_anglvel_y_raw`Y축 각속도 원시 값
`in_anglvel_z_calibbias`Z축 각속도 보정 오프셋
`in_anglvel_z_calibscale`Z축 각속도 보정 배율
`in_anglvel_z_filter_low_pass_3db_frequency`Z축 자이로스코프 대역폭
`in_anglvel_z_raw`Z축 각속도 원시 값
`in_deltaangl_scale`Delta angle 채널 배율
`in_deltaangl_x_raw`X축 delta angle 원시 값
`in_deltaangl_y_raw`Y축 delta angle 원시 값
`in_deltaangl_z_raw`Z축 delta angle 원시 값

각 각속도 축은 raw·calibbias·calibscale·filter를 제공하고 delta angle은 축별 raw를 제공합니다.

온도 센서 속성
장치 파일설명
`in_temp0_raw`온도 채널 원시 값
`in_temp0_offset`온도 센서 채널 오프셋
`in_temp0_scale`온도 센서 채널 배율

원시 온도에 offset과 scale을 함께 적용합니다.

기타 장치 속성
장치 파일설명
`name`IIO 장치 이름
`sampling_frequency`현재 선택한 sample rate

장치 이름과 현재 샘플링 속도를 제공합니다.

ADIS16480 관련 디버그 파일은 `/sys/kernel/debug/iio/iio:deviceX`에 있습니다.

ADIS16480 debugfs 파일
Debugfs 파일설명
`serial_number`16진수 형식의 칩 일련번호
`product_id`16480, 16488, 16545 같은 제품 ID
`flash_count`장치에서 수행한 flash write 횟수
`firmware_revision``##.##` 형식의 펌웨어 리비전
`firmware_date``mm-dd-yyyy` 형식의 펌웨어 날짜

칩 식별과 flash·firmware 상태를 읽는 진단 파일입니다.

ADIS16480 설정 계층
IIO sysfs에서 raw·offset·scale 읽기축별 calibscale과 low-pass filter 설정`sampling_frequency`로 장치 sample rate 선택Debugfs에서 serial·product·firmware 정보 확인

측정 채널과 진단 파일을 기능별 경로로 구분합니다.

+--------------------------------------------+------------------------------------------------------+
| 3-Axis Gyroscope related device files      | Description                                          |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_scale                           | Scale for the gyroscope channels.                    |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_x_calibbias                     | Calibration offset for the X-axis gyroscope channel. |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_x_calibscale                    | Calibration scale for the X-axis gyroscope channel.  |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_x_filter_low_pass_3db_frequency | Bandwidth for the X-axis gyroscope channel.          |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_x_raw                           | Raw X-axis gyroscope channel value.                  |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_y_calibbias                     | Calibration offset for the Y-axis gyroscope channel. |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_y_calibscale                    | Calibration scale for the Y-axis gyroscope channel.  |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_y_filter_low_pass_3db_frequency | Bandwidth for the Y-axis gyroscope channel.          |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_y_raw                           | Raw Y-axis gyroscope channel value.                  |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_z_calibbias                     | Calibration offset for the Z-axis gyroscope channel. |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_z_calibscale                    | Calibration scale for the Z-axis gyroscope channel.  |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_z_filter_low_pass_3db_frequency | Bandwidth for the Z-axis gyroscope channel.          |
+--------------------------------------------+------------------------------------------------------+
| in_anglvel_z_raw                           | Raw Z-axis gyroscope channel value.                  |
+--------------------------------------------+------------------------------------------------------+
| in_deltaangl_scale                         | Scale for delta angle channels.                      |
+--------------------------------------------+------------------------------------------------------+
| in_deltaangl_x_raw                         | Raw X-axis delta angle channel value.                |
+--------------------------------------------+------------------------------------------------------+
| in_deltaangl_y_raw                         | Raw Y-axis delta angle channel value.                |
+--------------------------------------------+------------------------------------------------------+
| in_deltaangl_z_raw                         | Raw Z-axis delta angle channel value.                |
+--------------------------------------------+------------------------------------------------------+

+----------------------------------+-------------------------------------------+
| Temperature sensor related files | Description                               |
+----------------------------------+-------------------------------------------+
| in_temp0_raw                     | Raw temperature channel value.            |
+----------------------------------+-------------------------------------------+
| in_temp0_offset                  | Offset for the temperature sensor channel.|
+----------------------------------+-------------------------------------------+
| in_temp0_scale                   | Scale for the temperature sensor channel. |
+----------------------------------+-------------------------------------------+

+-------------------------------+---------------------------------------------------------+
| Miscellaneous device files    | Description                                             |
+-------------------------------+---------------------------------------------------------+
| name                          | Name of the IIO device.                                 |
+-------------------------------+---------------------------------------------------------+
| sampling_frequency            | Currently selected sample rate.                         |
+-------------------------------+---------------------------------------------------------+

The following table shows the adis16480 related device debug files, found in the
specific device debug folder path ``/sys/kernel/debug/iio/iio:deviceX``.

+----------------------+-------------------------------------------------------------------------+
| Debugfs device files | Description                                                             |
+----------------------+-------------------------------------------------------------------------+
| serial_number        | The serial number of the chip in hexadecimal format.                    |
+----------------------+-------------------------------------------------------------------------+
| product_id           | Chip specific product id (e.g. 16480, 16488, 16545, etc.).              |
+----------------------+-------------------------------------------------------------------------+
| flash_count          | The number of flash writes performed on the device.                     |
+----------------------+-------------------------------------------------------------------------+
| firmware_revision    | String containing the firmware revision in the following format ##.##.  |
+----------------------+-------------------------------------------------------------------------+
| firmware_date        | String containing the firmware date in the following format mm-dd-yyyy. |
+----------------------+-------------------------------------------------------------------------+

처리값 단위와 설정 예제

208-365

채널의 `_raw` 속성은 장치가 보고한 원시 값을 반환합니다. 처리값은 다음 공식으로 계산합니다.

processed value = (_raw + _offset) * _scale

`_offset`과 `_scale`은 장치 속성이며 `_offset`이 없으면 0으로 간주합니다.

처리된 채널 값의 측정 단위
채널 유형처리값 단위
X·Y·Z축 가속도m/s²
X·Y·Z축 각속도rad/s
X·Y·Z축 delta velocitym/s
X·Y·Z축 delta anglerad
온도밀리도 섭씨
X·Y·Z축 자기장Gauss
기압kPa

ADIS16480 드라이버가 제공하는 일곱 채널 유형의 IIO 표준 단위입니다.

장치 이름을 읽는 예제 결과는 `adis16545-1`입니다.

root:/sys/bus/iio/devices/iio:device0> cat name
adis16545-1

가속도 예제는 X·Y·Z축 원시 값 1376728, 4487621, 262773792와 배율 0.000000037을 읽습니다. 계산 결과는 각각 0.050938936 m/s², 0.166041977 m/s², 9.722630304 m/s²입니다.

root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_raw
1376728
root:/sys/bus/iio/devices/iio:device0> cat in_accel_y_raw
4487621
root:/sys/bus/iio/devices/iio:device0> cat in_accel_z_raw
262773792
root:/sys/bus/iio/devices/iio:device0> cat in_accel_scale
0.000000037
가속도 처리값 예제
원시 값처리값
X13767280.050938936 m/s²
Y44876210.166041977 m/s²
Z2627737929.722630304 m/s²

원시 값에 `in_accel_scale = 0.000000037`을 적용한 결과입니다.

자이로스코프 예제는 X·Y·Z축 원시 값 −1041702, −273013, 2745116과 배율 0.000000001을 읽습니다. 결과는 −0.001041702 rad/s, −0.000273013 rad/s, 0.002745116 rad/s입니다.

root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_x_raw
-1041702
root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_y_raw
-273013
root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_z_raw
2745116
root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_scale
0.000000001
각속도 처리값 예제
원시 값처리값
X-1041702−0.001041702 rad/s
Y-273013−0.000273013 rad/s
Z27451160.002745116 rad/s

원시 값에 `in_anglvel_scale = 0.000000001`을 적용한 결과입니다.

가속도계 X축 `calibbias`는 0에서 5000으로, 자이로스코프 Y축 `calibbias`는 0에서 −5000으로 변경하는 예제를 제공합니다.

root:/sys/bus/iio/devices/iio:device0> echo 5000 > in_accel_x_calibbias
root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_calibbias
5000
root:/sys/bus/iio/devices/iio:device0> echo -5000 > in_anglvel_y_calibbias
root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_y_calibbias
-5000

샘플링 주파수는 처음 4250.000000입니다. `sampling_frequency`에 1000을 쓰면 장치가 지원하는 실제 값 1062.500000으로 설정됩니다.

root:/sys/bus/iio/devices/iio:device0> cat sampling_frequency
4250.000000
root:/sys/bus/iio/devices/iio:device0> echo 1000 > sampling_frequency
1062.500000

가속도계 X축 저역 통과 3 dB 대역폭은 처음 0이며, `in_accel_x_filter_low_pass_3db_frequency`에 300을 쓰면 300으로 설정됩니다.

root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_filter_low_pass_3db_frequency
0
root:/sys/bus/iio/devices/iio:device0> echo 300 > in_accel_x_filter_low_pass_3db_frequency
root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_filter_low_pass_3db_frequency
300

Debugfs 예제는 일련번호 `0x000c`, 제품 ID `16545`, flash write 횟수 `88`, 펌웨어 리비전 `1.4`, 펌웨어 날짜 `09-23-2023`을 읽습니다.

root:/sys/kernel/debug/iio/iio:device0> cat serial_number
0x000c
root:/sys/kernel/debug/iio/iio:device0> cat product_id
16545
root:/sys/kernel/debug/iio/iio:device0> cat flash_count
88
root:/sys/kernel/debug/iio/iio:device0> cat firmware_revision
1.4
root:/sys/kernel/debug/iio/iio:device0> cat firmware_date
09-23-2023
설정·진단 예제 요약
작업속성예제 값
가속도 X 보정`in_accel_x_calibbias`0 → 5000
각속도 Y 보정`in_anglvel_y_calibbias`0 → −5000
샘플 속도`sampling_frequency`4250 → 1062.5
가속도 X 대역폭`in_accel_x_filter_low_pass_3db_frequency`0 → 300
칩 식별`serial_number`, `product_id`0x000c, 16545
펌웨어`firmware_revision`, `firmware_date`1.4, 09-23-2023

원문에서 변경하거나 확인하는 주요 값입니다.

ADIS16480 처리값과 설정
Raw·offset·scale로 물리 단위 계산축별 calibbias·calibscale 조정지원되는 실제 sampling frequency 선택축별 low-pass 대역폭 설정Debugfs에서 제품·펌웨어 상태 확인

원시 센서 읽기에서 보정·필터·진단까지의 운영 순서입니다.

Channels processed values
-------------------------

A channel value can be read from its _raw attribute. The value returned is the
raw value as reported by the devices. To get the processed value of the channel,
apply the following formula:

.. code-block:: bash

        processed value = (_raw + _offset) * _scale

Where _offset and _scale are device attributes. If no _offset attribute is
present, simply assume its value is 0.

The adis16480 driver offers data for 7 types of channels, the table below shows
the measurement units for the processed value, which are defined by the IIO
framework:

+--------------------------------------+---------------------------+
| Channel type                         | Measurement unit          |
+--------------------------------------+---------------------------+
| Acceleration on X, Y, and Z axis     | Meters per Second squared |
+--------------------------------------+---------------------------+
| Angular velocity on X, Y and Z axis  | Radians per second        |
+--------------------------------------+---------------------------+
| Delta velocity on X. Y, and Z axis   | Meters per Second         |
+--------------------------------------+---------------------------+
| Delta angle on X, Y, and Z axis      | Radians                   |
+--------------------------------------+---------------------------+
| Temperature                          | Millidegrees Celsius      |
+--------------------------------------+---------------------------+
| Magnetic field along X, Y and Z axis | Gauss                     |
+--------------------------------------+---------------------------+
| Barometric pressure                  | kilo Pascal               |
+--------------------------------------+---------------------------+

Usage examples
--------------

Show device name:

.. code-block:: bash

        root:/sys/bus/iio/devices/iio:device0> cat name
        adis16545-1

Show accelerometer channels value:

.. code-block:: bash

        root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_raw
        1376728
        root:/sys/bus/iio/devices/iio:device0> cat in_accel_y_raw
        4487621
        root:/sys/bus/iio/devices/iio:device0> cat in_accel_z_raw
        262773792
        root:/sys/bus/iio/devices/iio:device0> cat in_accel_scale
        0.000000037

- X-axis acceleration = in_accel_x_raw * in_accel_scale = 0.050938936 m/s^2
- Y-axis acceleration = in_accel_y_raw * in_accel_scale = 0.166041977 m/s^2
- Z-axis acceleration = in_accel_z_raw * in_accel_scale = 9.722630304 m/s^2

Show gyroscope channels value:

.. code-block:: bash

        root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_x_raw
        -1041702
        root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_y_raw
        -273013
        root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_z_raw
        2745116
        root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_scale
        0.000000001

- X-axis angular velocity = in_anglvel_x_raw * in_anglvel_scale = −0.001041702 rad/s
- Y-axis angular velocity = in_anglvel_y_raw * in_anglvel_scale = −0.000273013 rad/s
- Z-axis angular velocity = in_anglvel_z_raw * in_anglvel_scale = 0.002745116 rad/s

Set calibration offset for accelerometer channels:

.. code-block:: bash

        root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_calibbias
        0

        root:/sys/bus/iio/devices/iio:device0> echo 5000 > in_accel_x_calibbias
        root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_calibbias
        5000

Set calibration offset for gyroscope channels:

.. code-block:: bash

        root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_y_calibbias
        0

        root:/sys/bus/iio/devices/iio:device0> echo -5000 > in_anglvel_y_calibbias
        root:/sys/bus/iio/devices/iio:device0> cat in_anglvel_y_calibbias
        -5000

Set sampling frequency:

.. code-block:: bash

        root:/sys/bus/iio/devices/iio:device0> cat sampling_frequency
        4250.000000

        root:/sys/bus/iio/devices/iio:device0> echo 1000 > sampling_frequency
        1062.500000

Set bandwidth for accelerometer channels:

.. code-block:: bash

        root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_filter_low_pass_3db_frequency
        0

        root:/sys/bus/iio/devices/iio:device0> echo 300 > in_accel_x_filter_low_pass_3db_frequency
        root:/sys/bus/iio/devices/iio:device0> cat in_accel_x_filter_low_pass_3db_frequency
        300

Show serial number:

.. code-block:: bash

        root:/sys/kernel/debug/iio/iio:device0> cat serial_number
        0x000c

Show product id:

.. code-block:: bash

        root:/sys/kernel/debug/iio/iio:device0> cat product_id
        16545

Show flash count:

.. code-block:: bash

        root:/sys/kernel/debug/iio/iio:device0> cat flash_count
        88

Show firmware revision:

.. code-block:: bash

        root:/sys/kernel/debug/iio/iio:device0> cat firmware_revision
        1.4

Show firmware date:

.. code-block:: bash

        root:/sys/kernel/debug/iio/iio:device0> cat firmware_date
        09-23-2023

IIO 버퍼와 인터페이스 도구

366-446

이 드라이버는 IIO 버퍼를 지원합니다. 모든 장치는 버퍼를 통해 원시 가속도, 자이로스코프, 온도 측정값을 읽을 수 있습니다.

ADIS16545와 ADIS16547은 delta velocity, delta angle, 온도 측정값도 버퍼로 읽을 수 있습니다.

ADIS16480 계열 버퍼 지원
장치 범위버퍼 채널
모든 지원 장치가속도, 자이로스코프, 온도
ADIS16545Delta velocity, delta angle, 온도
ADIS16547Delta velocity, delta angle, 온도

기본 관성 채널과 delta burst를 추가로 지원하는 장치를 구분합니다.

버퍼에서 가속도 또는 자이로스코프를 읽을 때 delta 값은 사용할 수 없고 그 반대도 마찬가지입니다. 장치가 한 번에 일반 가속도·자이로스코프 burst 또는 delta velocity·delta angle burst 중 하나만 읽도록 허용하며 두 burst 선택 모드 전환에 시간이 많이 들기 때문입니다.

Burst 데이터 선택 제약
Burst 모드포함 채널동시 사용 불가
일반 관성가속도 + 자이로스코프Delta velocity + delta angle
DeltaDelta velocity + delta angle가속도 + 자이로스코프

한 번의 버퍼 캡처에서 선택할 수 있는 두 상호 배타적 그룹입니다.

버퍼 사용 전에 `trigger/current_trigger`가 비어 있으면 장치 트리거 `adis16545-1-dev0`을 설정합니다.

root:/sys/bus/iio/devices/iio:device0> cat trigger/current_trigger
root:/sys/bus/iio/devices/iio:device0> echo adis16545-1-dev0 > trigger/current_trigger
root:/sys/bus/iio/devices/iio:device0> cat trigger/current_trigger
adis16545-1-dev0

X·Y·Z축 delta velocity와 온도 scan element를 활성화하고, 버퍼 길이를 10으로 설정한 뒤 버퍼를 켭니다.

root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_deltavelocity_x_en
root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_deltavelocity_y_en
root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_deltavelocity_z_en
root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_temp0_en
root:/sys/bus/iio/devices/iio:device0> echo 10 > buffer/length
root:/sys/bus/iio/devices/iio:device0> echo 1 > buffer/enable

버퍼 데이터는 `hexdump -C /dev/iio\:device0`로 확인합니다. 원문의 16진수 출력은 각 스캔 레코드의 원시 바이트 배열을 그대로 보여 줍니다.

root:/sys/bus/iio/devices/iio:device0> hexdump -C /dev/iio\:device0
ADIS16545 delta 버퍼 캡처
`adis16545-1-dev0` 트리거 연결Delta velocity X·Y·Z와 온도 채널 선택`buffer/length = 10` 설정`buffer/enable = 1`로 수집 시작`hexdump -C`로 버퍼 레코드 확인

트리거 설정부터 원시 버퍼 확인까지의 흐름입니다.

버퍼 데이터 구조는 `Documentation/iio/iio_devbuf.rst`를 참고합니다. 사용 가능한 IIO 인터페이스 도구는 `Documentation/iio/iio_tools.rst`에 설명되어 있습니다.

3. Device buffers
=================

This driver supports IIO buffers.

All devices support retrieving the raw acceleration, gyroscope and temperature
measurements using buffers.

The following device families also support retrieving the delta velocity, delta
angle and temperature measurements using buffers:

- ADIS16545
- ADIS16547

However, when retrieving acceleration or gyroscope data using buffers, delta
readings will not be available and vice versa. This is because the device only
allows to read either acceleration and gyroscope data or delta velocity and
delta angle data at a time and switching between these two burst data selection
modes is time consuming.

Usage examples
--------------

Set device trigger in current_trigger, if not already set:

.. code-block:: bash

        root:/sys/bus/iio/devices/iio:device0> cat trigger/current_trigger

        root:/sys/bus/iio/devices/iio:device0> echo adis16545-1-dev0 > trigger/current_trigger
        root:/sys/bus/iio/devices/iio:device0> cat trigger/current_trigger
        adis16545-1-dev0

Select channels for buffer read:

.. code-block:: bash

        root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_deltavelocity_x_en
        root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_deltavelocity_y_en
        root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_deltavelocity_z_en
        root:/sys/bus/iio/devices/iio:device0> echo 1 > scan_elements/in_temp0_en

Set the number of samples to be stored in the buffer:

.. code-block:: bash

        root:/sys/bus/iio/devices/iio:device0> echo 10 > buffer/length

Enable buffer readings:

.. code-block:: bash

        root:/sys/bus/iio/devices/iio:device0> echo 1 > buffer/enable

Obtain buffered data::

  root:/sys/bus/iio/devices/iio:device0> hexdump -C /dev/iio\:device0
  ...
  00006aa0  09 62 00 00 ff ff fc a4  00 00 01 69 00 03 3c 08  |.b.........i..<.|
  00006ab0  09 61 00 00 00 00 02 96  00 00 02 8f 00 03 37 50  |.a............7P|
  00006ac0  09 61 00 00 00 00 12 3d  00 00 0b 89 00 03 2c 0b  |.a.....=......,.|
  00006ad0  09 61 00 00 00 00 1e dc  00 00 16 dd 00 03 25 bf  |.a............%.|
  00006ae0  09 61 00 00 00 00 1e e3  00 00 1b bf 00 03 27 0b  |.a............'.|
  00006af0  09 61 00 00 00 00 15 50  00 00 19 44 00 03 30 fd  |.a.....P...D..0.|
  00006b00  09 61 00 00 00 00 09 0e  00 00 14 41 00 03 3d 7f  |.a.........A..=.|
  00006b10  09 61 00 00 ff ff ff f0  00 00 0e bc 00 03 48 d0  |.a............H.|
  00006b20  09 63 00 00 00 00 00 9f  00 00 0f 37 00 03 4c fe  |.c.........7..L.|
  00006b30  09 64 00 00 00 00 0b f6  00 00 18 92 00 03 43 22  |.d............C"|
  00006b40  09 64 00 00 00 00 18 df  00 00 22 33 00 03 33 ab  |.d........"3..3.|
  00006b50  09 63 00 00 00 00 1e 81  00 00 26 be 00 03 29 60  |.c........&...)`|
  00006b60  09 63 00 00 00 00 1b 13  00 00 22 2f 00 03 23 91  |.c........"/..#.|
  ...

See ``Documentation/iio/iio_devbuf.rst`` for more information about how buffered
data is structured.

4. IIO Interfacing Tools
========================

See ``Documentation/iio/iio_tools.rst`` for the description of the available IIO
interfacing tools.