Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/Documentation/devicetree/bindings/iio/adc/adi,ad4170-4.yaml
26309 views
1
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2
%YAML 1.2
3
---
4
$id: http://devicetree.org/schemas/iio/adc/adi,ad4170-4.yaml#
5
$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7
title: Analog Devices AD4170-4 and similar Analog to Digital Converters
8
9
maintainers:
10
- Marcelo Schmitt <marcelo.schmitt@analog.com>
11
12
description: |
13
Analog Devices AD4170-4 series of Sigma-delta Analog to Digital Converters.
14
Specifications can be found at:
15
https://www.analog.com/media/en/technical-documentation/data-sheets/ad4170-4.pdf
16
https://www.analog.com/media/en/technical-documentation/data-sheets/ad4190-4.pdf
17
https://www.analog.com/media/en/technical-documentation/data-sheets/ad4195-4.pdf
18
19
$ref: /schemas/spi/spi-peripheral-props.yaml#
20
21
$defs:
22
reference-buffer:
23
description: |
24
Enable precharge buffer, full buffer, or skip reference buffering of
25
the positive/negative voltage reference. Because the output impedance
26
of the source driving the voltage reference inputs may be dynamic,
27
resistive/capacitive combinations of those inputs can cause DC gain
28
errors if the reference inputs go unbuffered into the ADC. Enable
29
reference buffering if the provided reference source has dynamic high
30
impedance output. Note the absolute voltage allowed on REFINn+ and REFINn-
31
inputs is from AVSS - 50 mV to AVDD + 50 mV when the reference buffers are
32
disabled but narrows to AVSS to AVDD when reference buffering is enabled
33
or in precharge mode.
34
$ref: /schemas/types.yaml#/definitions/string
35
enum: [ precharge, full, disabled ]
36
default: full
37
38
properties:
39
compatible:
40
enum:
41
- adi,ad4170-4
42
- adi,ad4190-4
43
- adi,ad4195-4
44
45
avss-supply:
46
description:
47
Reference voltage supply for AVSS. A 2.625V minimum and 0V maximum supply
48
that powers the chip. If not provided, AVSS is assumed to be at system
49
ground (0V).
50
51
avdd-supply:
52
description:
53
A supply of 4.75V to 5.25V relative to AVSS that powers the chip (AVDD).
54
55
iovdd-supply:
56
description: 1.7V to 5.25V reference supply to the serial interface (IOVDD).
57
58
refin1p-supply:
59
description: REFIN+ supply that can be used as reference for conversion.
60
61
refin1n-supply:
62
description: REFIN- supply that can be used as reference for conversion.
63
64
refin2p-supply:
65
description: REFIN2+ supply that can be used as reference for conversion.
66
67
refin2n-supply:
68
description: REFIN2- supply that can be used as reference for conversion.
69
70
spi-cpol: true
71
72
spi-cpha: true
73
74
interrupts:
75
description:
76
Interrupt for signaling the completion of conversion results. The data
77
ready signal (RDY) used as interrupt is by default provided on the SDO
78
pin. Alternatively, it can be provided on the DIG_AUX1 pin in which case
79
the chip disables the RDY function on SDO. Thus, there can be only one
80
data ready interrupt enabled at a time.
81
82
interrupt-names:
83
description:
84
Specify which pin should be configured as Data Ready interrupt.
85
enum:
86
- sdo
87
- dig_aux1
88
89
clocks:
90
maxItems: 1
91
description:
92
Optional external clock source. Can specify either an external clock or
93
external crystal.
94
95
clock-names:
96
enum:
97
- ext-clk
98
- xtal
99
default: ext-clk
100
101
'#clock-cells':
102
const: 0
103
104
clock-output-names:
105
maxItems: 1
106
107
gpio-controller: true
108
109
"#gpio-cells":
110
const: 2
111
description: |
112
The first cell is for the GPIO number: 0 to 3.
113
The second cell takes standard GPIO flags.
114
115
ldac-gpios:
116
description:
117
GPIO connected to DIG_AUX2 pin to be used as LDAC toggle to control the
118
transfer of data from the DAC_INPUT_A register to the DAC.
119
maxItems: 1
120
121
'#address-cells':
122
const: 1
123
124
'#size-cells':
125
const: 0
126
127
adi,vbias-pins:
128
description: Analog inputs to apply a voltage bias of (AVDD AVSS) / 2 to.
129
$ref: /schemas/types.yaml#/definitions/uint32-array
130
minItems: 1
131
maxItems: 9
132
items:
133
minimum: 0
134
maximum: 8
135
136
allOf:
137
# Some devices don't have integrated DAC
138
- if:
139
properties:
140
compatible:
141
contains:
142
enum:
143
- adi,ad4190-4
144
- adi,ad4195-4
145
then:
146
properties:
147
ldac-gpios: false
148
149
# Require to specify the interrupt pin when using interrupts
150
- if:
151
required:
152
- interrupts
153
then:
154
required:
155
- interrupt-names
156
157
# If an external clock is set, the internal clock cannot go out and vice versa
158
- oneOf:
159
- required: [clocks]
160
properties:
161
'#clock-cells': false
162
- required: ['#clock-cells']
163
properties:
164
clocks: false
165
166
required:
167
- compatible
168
- reg
169
- avdd-supply
170
- iovdd-supply
171
- spi-cpol
172
- spi-cpha
173
174
unevaluatedProperties: false
175
176
patternProperties:
177
"^channel@[0-9a-f]$":
178
$ref: /schemas/iio/adc/adc.yaml#
179
unevaluatedProperties: false
180
description:
181
Represents the external channels which are connected to the ADC.
182
183
properties:
184
reg:
185
description:
186
The channel number.
187
minimum: 0
188
maximum: 15
189
190
diff-channels:
191
description: |
192
This property is used for defining the inputs of a differential
193
voltage channel. The first value is the positive input and the second
194
value is the negative input of the channel.
195
196
Besides the analog input pins AIN0 to AIN8, there are special inputs
197
that can be selected with the following values:
198
17: Internal temperature sensor
199
18: (AVDD-AVSS)/5
200
19: (IOVDD-DGND)/5
201
20: DAC output
202
21: ALDO
203
22: DLDO
204
23: AVSS
205
24: DGND
206
25: REFIN+
207
26: REFIN-
208
27: REFIN2+
209
28: REFIN2-
210
29: REFOUT
211
For the internal temperature sensor, use the input number for both
212
inputs (i.e. diff-channels = <17 17>).
213
items:
214
enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 17, 18, 19, 20, 21, 22, 23, 24, 25,
215
26, 27, 28, 29]
216
217
adi,reference-select:
218
description: |
219
Select the reference source to use when converting on the
220
specific channel. Valid values are:
221
0: REFIN+/REFIN-
222
1: REFIN2+/REFIN2−
223
2: REFOUT/AVSS (internal reference)
224
3: AVDD/AVSS
225
If not specified, REFOUT/AVSS is used.
226
$ref: /schemas/types.yaml#/definitions/uint32
227
enum: [0, 1, 2, 3]
228
default: 1
229
230
adi,positive-reference-buffer:
231
$ref: '#/$defs/reference-buffer'
232
233
adi,negative-reference-buffer:
234
$ref: '#/$defs/reference-buffer'
235
236
adi,sensor-type:
237
description:
238
The AD4170-4 and similar designs have features to aid interfacing with
239
load cell weigh scale, RTD, and thermocouple sensors. Each of those
240
sensor types requires either distinct wiring configuration or
241
external circuitry for proper sensor operation and can use different
242
ADC chip functionality on their setups. A key characteristic of those
243
external sensors is that they must be excited either by voltage supply
244
or by ADC chip excitation signals. The sensor can then be read through
245
a pair of analog inputs. This property specifies which particular
246
sensor type is connected to the ADC so it can be properly setup and
247
handled. Omit this property for conventional (not weigh scale, RTD, or
248
thermocouple) ADC channel setups.
249
$ref: /schemas/types.yaml#/definitions/string
250
enum: [ weighscale, rtd, thermocouple ]
251
252
adi,excitation-pin-0:
253
description:
254
Analog input to apply excitation current to while the channel
255
is active.
256
$ref: /schemas/types.yaml#/definitions/uint32
257
minimum: 0
258
maximum: 20
259
default: 0
260
261
adi,excitation-pin-1:
262
description:
263
Analog input to apply excitation current to while the channel
264
is active.
265
$ref: /schemas/types.yaml#/definitions/uint32
266
minimum: 0
267
maximum: 20
268
default: 0
269
270
adi,excitation-pin-2:
271
description:
272
Analog input to apply excitation current to while the channel
273
is active.
274
$ref: /schemas/types.yaml#/definitions/uint32
275
minimum: 0
276
maximum: 20
277
default: 0
278
279
adi,excitation-pin-3:
280
description:
281
Analog input to apply excitation current to while the channel
282
is active.
283
$ref: /schemas/types.yaml#/definitions/uint32
284
minimum: 0
285
maximum: 20
286
default: 0
287
288
adi,excitation-current-0-microamp:
289
description:
290
Excitation current in microamperes to be applied to pin specified in
291
adi,excitation-pin-0 while this channel is active.
292
enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
293
default: 0
294
295
adi,excitation-current-1-microamp:
296
description:
297
Excitation current in microamperes to be applied to pin specified in
298
adi,excitation-pin-1 while this channel is active.
299
enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
300
default: 0
301
302
adi,excitation-current-2-microamp:
303
description:
304
Excitation current in microamperes to be applied to pin specified in
305
adi,excitation-pin-2 while this channel is active.
306
enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
307
default: 0
308
309
adi,excitation-current-3-microamp:
310
description:
311
Excitation current in microamperes to be applied to pin specified in
312
adi,excitation-pin-3 while this channel is active.
313
enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
314
default: 0
315
316
adi,excitation-ac:
317
type: boolean
318
description:
319
Whether the external sensor has to be AC or DC excited. When omitted,
320
it is DC excited.
321
322
allOf:
323
- oneOf:
324
- required: [single-channel, common-mode-channel]
325
properties:
326
diff-channels: false
327
- required: [diff-channels]
328
properties:
329
single-channel: false
330
common-mode-channel: false
331
# Usual ADC channels don't need external circuitry excitation.
332
- if:
333
not:
334
required:
335
- adi,sensor-type
336
then:
337
properties:
338
adi,excitation-pin-0: false
339
adi,excitation-pin-1: false
340
adi,excitation-pin-2: false
341
adi,excitation-pin-3: false
342
adi,excitation-current-0-microamp: false
343
adi,excitation-current-1-microamp: false
344
adi,excitation-current-2-microamp: false
345
adi,excitation-current-3-microamp: false
346
adi,excitation-ac: false
347
# Weigh scale bridge AC excited with one pair of predefined signals.
348
- if:
349
allOf:
350
- properties:
351
adi,sensor-type:
352
contains:
353
const: weighscale
354
- required:
355
- adi,excitation-ac
356
- adi,excitation-pin-2
357
- adi,excitation-pin-3
358
- not:
359
required:
360
- adi,excitation-current-2-microamp
361
- adi,excitation-current-3-microamp
362
then:
363
properties:
364
adi,excitation-pin-2:
365
const: 19
366
adi,excitation-pin-3:
367
const: 20
368
# Weigh scale bridge AC excited with two pairs of predefined signals.
369
- if:
370
allOf:
371
- properties:
372
adi,sensor-type:
373
contains:
374
const: weighscale
375
- required:
376
- adi,excitation-ac
377
- adi,excitation-pin-0
378
- adi,excitation-pin-1
379
- adi,excitation-pin-2
380
- adi,excitation-pin-3
381
- not:
382
required:
383
- adi,excitation-current-0-microamp
384
- adi,excitation-current-1-microamp
385
- adi,excitation-current-2-microamp
386
- adi,excitation-current-3-microamp
387
then:
388
properties:
389
adi,excitation-pin-0:
390
const: 17
391
adi,excitation-pin-1:
392
const: 18
393
adi,excitation-pin-2:
394
const: 19
395
adi,excitation-pin-3:
396
const: 20
397
398
examples:
399
- |
400
#include <dt-bindings/interrupt-controller/irq.h>
401
spi {
402
#address-cells = <1>;
403
#size-cells = <0>;
404
405
adc@0 {
406
compatible = "adi,ad4170-4";
407
reg = <0>;
408
spi-max-frequency = <20000000>;
409
spi-cpol;
410
spi-cpha;
411
avdd-supply = <&avdd>;
412
iovdd-supply = <&iovdd>;
413
clocks = <&clk>;
414
clock-names = "xtal";
415
interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
416
interrupt-names = "dig_aux1";
417
adi,vbias-pins = <8>;
418
#address-cells = <1>;
419
#size-cells = <0>;
420
421
// Sample AIN0 with respect to DGND throughout AVDD/DGND input range
422
// Pseudo-differential unipolar
423
channel@0 {
424
reg = <0>;
425
single-channel = <0>;
426
common-mode-channel = <24>;
427
adi,reference-select = <3>;
428
};
429
// Weigh scale sensor
430
channel@1 {
431
reg = <1>;
432
bipolar;
433
diff-channels = <1 2>;
434
adi,reference-select = <0>;
435
adi,positive-reference-buffer = "precharge";
436
adi,negative-reference-buffer = "precharge";
437
adi,sensor-type = "weighscale";
438
adi,excitation-pin-2 = <19>;
439
adi,excitation-pin-3 = <20>;
440
adi,excitation-ac;
441
};
442
// RTD sensor
443
channel@2 {
444
reg = <2>;
445
bipolar;
446
diff-channels = <3 4>;
447
adi,reference-select = <0>;
448
adi,sensor-type = "rtd";
449
adi,excitation-pin-0 = <5>;
450
adi,excitation-pin-1 = <6>;
451
adi,excitation-current-0-microamp = <500>;
452
adi,excitation-current-1-microamp = <500>;
453
adi,excitation-ac;
454
};
455
// Thermocouple sensor
456
channel@3 {
457
reg = <3>;
458
bipolar;
459
diff-channels = <7 8>;
460
adi,reference-select = <0>;
461
adi,sensor-type = "thermocouple";
462
adi,excitation-pin-0 = <18>;
463
adi,excitation-current-0-microamp = <500>;
464
};
465
};
466
};
467
- |
468
#include <dt-bindings/interrupt-controller/irq.h>
469
spi {
470
#address-cells = <1>;
471
#size-cells = <0>;
472
473
adc@0 {
474
compatible = "adi,ad4170-4";
475
reg = <0>;
476
spi-max-frequency = <20000000>;
477
spi-cpol;
478
spi-cpha;
479
avdd-supply = <&avdd>;
480
iovdd-supply = <&iovdd>;
481
#clock-cells = <0>;
482
clock-output-names = "ad4170-clk16mhz";
483
interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
484
interrupt-names = "dig_aux1";
485
#address-cells = <1>;
486
#size-cells = <0>;
487
488
// Sample AIN0 with respect to AIN1 throughout AVDD/AVSS input range
489
// Differential bipolar. If AVSS < 0V, differential true bipolar
490
channel@0 {
491
reg = <0>;
492
bipolar;
493
diff-channels = <0 1>;
494
adi,reference-select = <3>;
495
};
496
// Sample AIN2 with respect to DGND throughout AVDD/DGND input range
497
// Pseudo-differential unipolar
498
channel@1 {
499
reg = <1>;
500
single-channel = <2>;
501
common-mode-channel = <24>;
502
adi,reference-select = <3>;
503
};
504
// Sample AIN3 with respect to 2.5V throughout AVDD/AVSS input range
505
// Pseudo-differential bipolar
506
channel@2 {
507
reg = <2>;
508
bipolar;
509
single-channel = <3>;
510
common-mode-channel = <29>;
511
adi,reference-select = <3>;
512
};
513
// Sample AIN4 with respect to DGND throughout AVDD/AVSS input range
514
// Pseudo-differential bipolar
515
channel@3 {
516
reg = <3>;
517
bipolar;
518
single-channel = <4>;
519
common-mode-channel = <24>;
520
adi,reference-select = <3>;
521
};
522
// Sample AIN5 with respect to 2.5V throughout AVDD/AVSS input range
523
// Pseudo-differential unipolar (AD4170-4 datasheet page 46 example)
524
channel@4 {
525
reg = <4>;
526
single-channel = <5>;
527
common-mode-channel = <29>;
528
adi,reference-select = <3>;
529
};
530
// Sample AIN6 with respect to 2.5V throughout REFIN+/REFIN- input range
531
// Pseudo-differential bipolar
532
channel@5 {
533
reg = <5>;
534
bipolar;
535
single-channel = <6>;
536
common-mode-channel = <29>;
537
adi,reference-select = <0>;
538
};
539
// Weigh scale sensor
540
channel@6 {
541
reg = <6>;
542
bipolar;
543
diff-channels = <7 8>;
544
adi,reference-select = <0>;
545
adi,sensor-type = "weighscale";
546
adi,excitation-pin-0 = <17>;
547
adi,excitation-pin-1 = <18>;
548
adi,excitation-pin-2 = <19>;
549
adi,excitation-pin-3 = <20>;
550
adi,excitation-ac;
551
};
552
};
553
};
554
...
555
556