| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- .. SPDX-License-Identifier: GPL-2.0-only
- =============
- AD7380 driver
- =============
- ADC driver for Analog Devices Inc. AD7380 and similar devices. The module name
- is ``ad7380``.
- Supported devices
- =================
- The following chips are supported by this driver:
- * `AD7380 <https://www.analog.com/en/products/ad7380.html>`_
- * `AD7381 <https://www.analog.com/en/products/ad7381.html>`_
- * `AD7383 <https://www.analog.com/en/products/ad7383.html>`_
- * `AD7384 <https://www.analog.com/en/products/ad7384.html>`_
- * `AD7386 <https://www.analog.com/en/products/ad7386.html>`_
- * `AD7387 <https://www.analog.com/en/products/ad7387.html>`_
- * `AD7388 <https://www.analog.com/en/products/ad7388.html>`_
- * `AD7380-4 <https://www.analog.com/en/products/ad7380-4.html>`_
- * `AD7381-4 <https://www.analog.com/en/products/ad7381-4.html>`_
- * `AD7383-4 <https://www.analog.com/en/products/ad7383-4.html>`_
- * `AD7384-4 <https://www.analog.com/en/products/ad7384-4.html>`_
- * `AD7386-4 <https://www.analog.com/en/products/ad7386-4.html>`_
- * `AD7387-4 <https://www.analog.com/en/products/ad7387-4.html>`_
- * `AD7388-4 <https://www.analog.com/en/products/ad7388-4.html>`_
- Supported features
- ==================
- SPI wiring modes
- ----------------
- ad738x ADCs can output data on several SDO lines (1/2/4). The driver currently
- supports only 1 SDO line.
- Reference voltage
- -----------------
- ad7380-4
- ~~~~~~~~
- ad7380-4 supports only an external reference voltage (2.5V to 3.3V). It must be
- declared in the device tree as ``refin-supply``.
- All other devices from ad738x family
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- All other devices from ad738x support 2 possible reference voltage sources:
- - Internal reference (2.5V)
- - External reference (2.5V to 3.3V)
- The source is determined by the device tree. If ``refio-supply`` is present,
- then it is used as external reference, else the internal reference is used.
- Oversampling and resolution boost
- ---------------------------------
- This family supports 2 types of oversampling: normal average and rolling
- average. Only normal average is supported by the driver, as rolling average can
- be achieved by processing a captured data buffer. The following ratios are
- available: 1 (oversampling disabled)/2/4/8/16/32.
- When the on-chip oversampling function is enabled the performance of the ADC can
- exceed the default resolution. To accommodate the performance boost achievable,
- it is possible to enable an additional two bits of resolution. Because the
- resolution boost feature can only be enabled when oversampling is enabled and
- oversampling is not as useful without the resolution boost, the driver
- automatically enables the resolution boost if and only if oversampling is
- enabled.
- Since the resolution boost feature causes 16-bit chips to now have 18-bit data
- which means the storagebits has to change from 16 to 32 bits, we use the new
- ext_scan_type feature to allow changing the scan_type at runtime. Unfortunately
- libiio does not support it. So when enabling or disabling oversampling, user
- must restart iiod using the following command:
- .. code-block:: bash
- root:~# systemctl restart iiod
- Channel selection and sequencer (single-end chips only)
- -------------------------------------------------------
- Single-ended chips of this family (ad7386/7/8(-4)) have a 2:1 multiplexer in
- front of each ADC. They also include additional configuration registers that
- allow for either manual selection or automatic switching (sequencer mode), of
- the multiplexer inputs.
- From an IIO point of view, all inputs are exported, i.e ad7386/7/8
- export 4 channels and ad7386-4/7-4/8-4 export 8 channels.
- Inputs ``AinX0`` of multiplexers correspond to the first half of IIO channels (i.e
- 0-1 or 0-3) and inputs ``AinX1`` correspond to second half (i.e 2-3 or 4-7).
- Example for AD7386/7/8 (2 channels parts):
- .. code-block::
- IIO | AD7386/7/8
- | +----------------------------
- | | _____ ______
- | | | | | |
- voltage0 | AinA0 --|--->| | | |
- | | | mux |----->| ADCA |---
- voltage2 | AinA1 --|--->| | | |
- | | |_____| |_____ |
- | | _____ ______
- | | | | | |
- voltage1 | AinB0 --|--->| | | |
- | | | mux |----->| ADCB |---
- voltage3 | AinB1 --|--->| | | |
- | | |_____| |______|
- | |
- | +----------------------------
- When enabling sequencer mode, the effective sampling rate is divided by two.
- Unimplemented features
- ----------------------
- - 2/4 SDO lines
- - Rolling average oversampling
- - Power down mode
- - CRC indication
- - Alert
- Device buffers
- ==============
- This driver supports IIO triggered buffers.
- See :doc:`iio_devbuf` for more information.
|