Back to Linux

AD7944 driver

Documentation/iio/ad7944.rst

latest6.2 KB
Original Source

.. SPDX-License-Identifier: GPL-2.0-only

============= AD7944 driver

ADC driver for Analog Devices Inc. AD7944 and similar devices. The module name is ad7944.

Supported devices

The following chips are supported by this driver:

  • AD7944 <https://www.analog.com/AD7944>_
  • AD7985 <https://www.analog.com/AD7985>_
  • AD7986 <https://www.analog.com/AD7986>_

Supported features

SPI wiring modes

The driver currently supports three of the many possible SPI wiring configurations.

CS mode, 3-wire, without busy indicator ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block::

                                     +-------------+
                +--------------------| CS          |
                v                    |             |
VIO   +--------------------+         |     HOST    |
 |    |        CNV         |         |             |
 +--->| SDI   AD7944   SDO |-------->| SDI         |
      |        SCK         |         |             |
      +--------------------+         |             |
                ^                    |             |
                +--------------------| SCLK        |
                                     +-------------+

To select this mode in the device tree, set the adi,spi-mode property to "single" and omit the cnv-gpios property.

CS mode, 4-wire, without busy indicator ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block::

                                     +-------------+
 +-----------------------------------| CS          |
 |                                   |             |
 |              +--------------------| GPIO        |
 |              v                    |             |
 |    +--------------------+         |     HOST    |
 |    |        CNV         |         |             |
 +--->| SDI   AD7944   SDO |-------->| SDI         |
      |        SCK         |         |             |
      +--------------------+         |             |
                ^                    |             |
                +--------------------| SCLK        |
                                     +-------------+

To select this mode in the device tree, omit the adi,spi-mode property and provide the cnv-gpios property.

Chain mode, without busy indicator ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block::

                                                             +-------------+
              +-------------------------+--------------------| CS          |
              v                         v                    |             |
    +--------------------+    +--------------------+         |     HOST    |
    |        CNV         |    |        CNV         |         |             |

+--->| SDI AD7944 SDO |--->| SDI AD7944 SDO |-------->| SDI | | | SCK | | SCK | | | GND +--------------------+ +--------------------+ | | ^ ^ | | +-------------------------+--------------------| SCLK | +-------------+

To select this mode in the device tree, set the adi,spi-mode property to "chain", add the spi-cs-high flag, add the #daisy-chained-devices property, and omit the cnv-gpios property.

Reference voltage

All 3 possible reference voltage sources are supported:

  • Internal reference
  • External 1.2V reference and internal buffer
  • External reference

The source is determined by the device tree. If ref-supply is present, then the external reference is used. If refin-supply is present, then the internal buffer is used. If neither is present, then the internal reference is used.

Unimplemented features

  • BUSY indication
  • TURBO mode

Device attributes

There are two types of ADCs in this family, pseudo-differential and fully differential. The channel name is different depending on the type of ADC.

Pseudo-differential ADCs

AD7944 and AD7985 are pseudo-differential ADCs and have the following attributes:

+---------------------------------------+--------------------------------------------------------------+ | Attribute | Description | +=======================================+==============================================================+ | in_voltage0_raw | Raw ADC voltage value (IN+ referenced to ground sense). | +---------------------------------------+--------------------------------------------------------------+ | in_voltage0_scale | Scale factor to convert raw value to mV. | +---------------------------------------+--------------------------------------------------------------+

In "chain" mode, additional chips will appear as additional voltage input channels, e.g. in_voltage1_raw.

Fully-differential ADCs

AD7986 is a fully-differential ADC and has the following attributes:

+---------------------------------------+--------------------------------------------------------------+ | Attribute | Description | +=======================================+==============================================================+ | in_voltage0-voltage1_raw | Raw ADC voltage value (IN+ - IN-). | +---------------------------------------+--------------------------------------------------------------+ | in_voltage0-voltage1_scale | Scale factor to convert raw value to mV. | +---------------------------------------+--------------------------------------------------------------+

In "chain" mode, additional chips will appear as additional voltage input channels, e.g. in_voltage2-voltage3_raw.

Device buffers

This driver supports IIO triggered buffers.

See :doc:iio_devbuf for more information.