<!DOCTYPE html>
<html lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>AD7191 driver — The Linux Kernel documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=3918102e" />
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="AD7380 driver" href="ad7380.html" />
<link rel="prev" title="AD4695 driver" href="ad4695.html" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
</head><body>
<div class="document">
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/logo.svg" alt="Logo of The Linux Kernel"/>
</a></p>
<h1 class="logo"><a href="../index.html">The Linux Kernel</a></h1>
<p class="blurb">6.18.50</p>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>
<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/index.html">All development-process docs</a></li>
</ul>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../subsystem-apis.html">Subsystems</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#core-subsystems">Core subsystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#human-interfaces">Human interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#networking-interfaces">Networking interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#storage-interfaces">Storage interfaces</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../subsystem-apis.html#other-subsystems">Other subsystems</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../accounting/index.html">Accounting</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cpu-freq/index.html">CPUFreq - CPU frequency and voltage scaling code in the Linux(TM) kernel</a></li>
<li class="toctree-l3"><a class="reference internal" href="../edac/index.html">EDAC Subsystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../fpga/index.html">FPGA</a></li>
<li class="toctree-l3"><a class="reference internal" href="../i2c/index.html">I2C/SMBus Subsystem</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="index.html">Industrial I/O</a></li>
<li class="toctree-l3"><a class="reference internal" href="../pcmcia/index.html">PCMCIA</a></li>
<li class="toctree-l3"><a class="reference internal" href="../spi/index.html">Serial Peripheral Interface (SPI)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../w1/index.html">1-Wire Subsystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../watchdog/index.html">Watchdog Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../virt/index.html">Virtualization Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../hwmon/index.html">Hardware Monitoring</a></li>
<li class="toctree-l3"><a class="reference internal" href="../accel/index.html">Compute Accelerators</a></li>
<li class="toctree-l3"><a class="reference internal" href="../security/index.html">Security Documentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../crypto/index.html">Crypto API</a></li>
<li class="toctree-l3"><a class="reference internal" href="../bpf/index.html">BPF Documentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../usb/index.html">USB support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PCI/index.html">PCI Bus Subsystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../misc-devices/index.html">Assorted Miscellaneous Devices Documentation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../peci/index.html">PECI Subsystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../wmi/index.html">WMI Subsystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../tee/index.html">TEE Subsystem</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../arch/index.html">CPU architectures</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../translations/index.html">Translations</a></li>
</ul>
</div>
<script type="text/javascript"> <!--
var sbar = document.getElementsByClassName("sphinxsidebar")[0];
let currents = document.getElementsByClassName("current")
if (currents.length) {
sbar.scrollTop = currents[currents.length - 1].offsetTop;
}
--> </script>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../_sources/iio/ad7191.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
</div>
</div>
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="ad7191-driver">
<h1>AD7191 driver<a class="headerlink" href="#ad7191-driver" title="Link to this heading">¶</a></h1>
<p>Device driver for Analog Devices AD7191 ADC.</p>
<section id="supported-devices">
<h2>Supported devices<a class="headerlink" href="#supported-devices" title="Link to this heading">¶</a></h2>
<ul class="simple">
<li><p><a class="reference external" href="https://www.analog.com/AD7191">AD7191</a></p></li>
</ul>
<p>The AD7191 is a high precision, low noise, 24-bit Σ-Δ ADC with integrated PGA.
It features two differential input channels, an internal temperature sensor, and
configurable sampling rates.</p>
</section>
<section id="devicetree">
<h2>Devicetree<a class="headerlink" href="#devicetree" title="Link to this heading">¶</a></h2>
<section id="pin-configuration">
<h3>Pin Configuration<a class="headerlink" href="#pin-configuration" title="Link to this heading">¶</a></h3>
<p>The driver supports both pin-strapped and GPIO-controlled configurations for ODR
(Output Data Rate) and PGA (Programmable Gain Amplifier) settings. These
configurations are mutually exclusive - you must use either pin-strapped or GPIO
control for each setting, not both.</p>
<section id="odr-configuration">
<h4>ODR Configuration<a class="headerlink" href="#odr-configuration" title="Link to this heading">¶</a></h4>
<p>The ODR can be configured either through GPIO control or pin-strapping:</p>
<ul class="simple">
<li><p>When using GPIO control, specify the “odr-gpios” property in the device tree</p></li>
<li><p>For pin-strapped configuration, specify the “adi,odr-value” property in the
device tree</p></li>
</ul>
<p>Available ODR settings:</p>
<blockquote>
<div><ul class="simple">
<li><p>120 Hz (ODR1=0, ODR2=0)</p></li>
<li><p>60 Hz (ODR1=0, ODR2=1)</p></li>
<li><p>50 Hz (ODR1=1, ODR2=0)</p></li>
<li><p>10 Hz (ODR1=1, ODR2=1)</p></li>
</ul>
</div></blockquote>
</section>
<section id="pga-configuration">
<h4>PGA Configuration<a class="headerlink" href="#pga-configuration" title="Link to this heading">¶</a></h4>
<p>The PGA can be configured either through GPIO control or pin-strapping:</p>
<ul class="simple">
<li><p>When using GPIO control, specify the “pga-gpios” property in the device tree</p></li>
<li><p>For pin-strapped configuration, specify the “adi,pga-value” property in the
device tree</p></li>
</ul>
<p>Available PGA gain settings:</p>
<blockquote>
<div><ul class="simple">
<li><p>1x (PGA1=0, PGA2=0)</p></li>
<li><p>8x (PGA1=0, PGA2=1)</p></li>
<li><p>64x (PGA1=1, PGA2=0)</p></li>
<li><p>128x (PGA1=1, PGA2=1)</p></li>
</ul>
</div></blockquote>
</section>
</section>
<section id="clock-configuration">
<h3>Clock Configuration<a class="headerlink" href="#clock-configuration" title="Link to this heading">¶</a></h3>
<p>The AD7191 supports both internal and external clock sources:</p>
<ul class="simple">
<li><p>When CLKSEL pin is tied LOW: Uses internal 4.92MHz clock (no clock property
needed)</p></li>
<li><p>When CLKSEL pin is tied HIGH: Requires external clock source
- Can be a crystal between MCLK1 and MCLK2 pins
- Or a CMOS-compatible clock driving MCLK2 pin
- Must specify the “clocks” property in device tree when using external clock</p></li>
</ul>
</section>
<section id="spi-interface-requirements">
<h3>SPI Interface Requirements<a class="headerlink" href="#spi-interface-requirements" title="Link to this heading">¶</a></h3>
<p>The AD7191 has specific SPI interface requirements:</p>
<ul class="simple">
<li><p>The DOUT/RDY output is dual-purpose and requires SPI bus locking</p></li>
<li><p>DOUT/RDY must be connected to an interrupt-capable GPIO</p></li>
<li><p>The SPI controller’s chip select must be connected to the PDOWN pin of the ADC</p></li>
<li><p>When CS (PDOWN) is high, the device powers down and resets internal circuitry</p></li>
<li><p>SPI mode 3 operation (CPOL=1, CPHA=1) is required</p></li>
</ul>
</section>
<section id="power-supply-requirements">
<h3>Power Supply Requirements<a class="headerlink" href="#power-supply-requirements" title="Link to this heading">¶</a></h3>
<p>The device requires the following power supplies:</p>
<ul class="simple">
<li><p>AVdd: Analog power supply</p></li>
<li><p>DVdd: Digital power supply</p></li>
<li><p>Vref: Reference voltage supply (external)</p></li>
</ul>
<p>All power supplies must be specified in the device tree.</p>
</section>
</section>
<section id="channel-configuration">
<h2>Channel Configuration<a class="headerlink" href="#channel-configuration" title="Link to this heading">¶</a></h2>
<p>The device provides three channels:</p>
<ol class="arabic simple">
<li><p>Temperature Sensor
- 24-bit unsigned
- Internal temperature measurement
- Temperature in millidegrees Celsius</p></li>
<li><p>Differential Input (AIN1-AIN2)
- 24-bit unsigned
- Differential voltage measurement
- Configurable gain via PGA</p></li>
<li><p>Differential Input (AIN3-AIN4)
- 24-bit unsigned
- Differential voltage measurement
- Configurable gain via PGA</p></li>
</ol>
</section>
<section id="buffer-support">
<h2>Buffer Support<a class="headerlink" href="#buffer-support" title="Link to this heading">¶</a></h2>
<p>This driver supports IIO triggered buffers. See <a class="reference internal" href="iio_devbuf.html"><span class="doc">Industrial IIO device buffers</span></a>
for more information about IIO triggered buffers.</p>
</section>
</section>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
©The kernel development community.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
& <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
|
<a href="../_sources/iio/ad7191.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>