LTC2376-18 - 18-Bit, 250ksps, Low Power SAR ADC with 102dB SNR

Features

  • 250ksps Throughput Rate
  • ±1.75LSB INL (Max)
  • Guaranteed 18-Bit No Missing Codes
  • Low Power: 3.4mW at 250ksps, 3.4μW at 250sps
  • 102dB SNR (Typ) at fIN = 2kHz
  • –126dB THD (Typ) at fIN = 2kHz
  • Digital Gain Compression (DGC)
  • Guaranteed Operation to 125°C
  • 2.5V Supply
  • Fully Differential Input Range ±VREF
  • VREF Input Range from 2.5V to 5.1V
  • No Pipeline Delay, No Cycle Latency
  • 1.8V to 5V I/O Voltages
  • SPI-Compatible Serial I/O with Daisy-Chain Mode
  • Internal Conversion Clock
  • 16-Lead MSOP and 4mm × 3mm DFN Packages

Typical Application

LTC2376-18 Typical Application
LTC2376-18 Typical Application

Description

The LTC®2376-18 is a low noise, low power, high speed 18-bit successive approximation register (SAR) ADC. Operating from a 2.5V supply, the LTC2376-18 has a ±VREF fully differential input range with VREF ranging from 2.5V to 5.1V. The LTC2376-18 consumes only 3.4mW and achieves ±1.75LSB INL maximum, no missing codes at 18 bits with 102dB SNR.

The LTC2376-18 has a high speed SPI-compatible serial interface that supports 1.8V, 2.5V, 3.3V and 5V logic while also featuring a daisy-chain mode. The fast 250ksps throughput with no cycle latency makes the LTC2376-18 ideally suited for a wide variety of high speed applications. An internal oscillator sets the conversion time, easing external timing considerations. The LTC2376-18 automatically powers down between conversions, leading to reduced power dissipation that scales with the sampling rate.

The LTC2376-18 features a unique digital gain compression (DGC) function, which eliminates the driver amplifier’s negative supply while preserving the full resolution of the ADC. When enabled, the ADC performs a digital scaling function that maps zero-scale code from 0V to 0.1 • VREF and full-scale code from VREF to 0.9 • VREF. For a typical reference voltage of 5V, the full-scale input range is now 0.5V to 4.5V, which provides adequate headroom for powering the driving amplifier from a single 5.5V supply.

Packaging

For complete and up to date package information and drawings, please refer to our packaging page

MS-16, DFN-16

LTC2376-18 Package Drawing
LTC2376-18 Package Drawing

Order Info

Package Variations and Pricing

Part Number Package Pins Temp Price (1-99) Price (1k)* RoHS Data
LTC2376CDE-16#PBF DFN 16 C $12.10 $8.47 View
LTC2376CDE-16#TRPBF DFN 16 C $8.53 View
LTC2376CDE-18#PBF DFN 16 C $20.96 $14.67 View
LTC2376CDE-18#TRPBF DFN 16 C $14.73 View
LTC2376CDE-20#PBF DFN 16 C $25.96 $18.17 View
LTC2376CDE-20#TRPBF DFN 16 C $18.23 View
LTC2376CMS-16#PBF MSOP 16 C $12.10 $8.47 View
LTC2376CMS-16#TRPBF MSOP 16 C $8.53 View
LTC2376CMS-18#PBF MSOP 16 C $20.96 $14.67 View
LTC2376CMS-18#TRPBF MSOP 16 C $14.73 View
LTC2376CMS-20#PBF MSOP 16 C $25.96 $18.17 View
LTC2376CMS-20#TRPBF MSOP 16 C $18.23 View
LTC2376HMS-16#PBF MSOP 16 H $16.00 $11.20 View
LTC2376HMS-16#TRPBF MSOP 16 H $11.26 View
LTC2376HMS-18#PBF MSOP 16 H $27.72 $19.40 View
LTC2376HMS-18#TRPBF MSOP 16 H $19.46 View
LTC2376IDE-16#PBF DFN 16 I $13.92 $9.74 View
LTC2376IDE-16#TRPBF DFN 16 I $9.80 View
LTC2376IDE-18#PBF DFN 16 I $24.10 $16.87 View
LTC2376IDE-18#TRPBF DFN 16 I $16.93 View
LTC2376IDE-20#PBF DFN 16 I $29.85 $20.90 View
LTC2376IDE-20#TRPBF DFN 16 I $20.96 View
LTC2376IMS-16#PBF MSOP 16 I $13.92 $9.74 View
LTC2376IMS-16#TRPBF MSOP 16 I $9.80 View
LTC2376IMS-18#PBF MSOP 16 I $24.10 $16.87 View
LTC2376IMS-18#TRPBF MSOP 16 I $16.93 View
LTC2376IMS-20#PBF MSOP 16 I $29.85 $20.90 View
LTC2376IMS-20#TRPBF MSOP 16 I $20.96 View
Buy NowRequest Samples
* The USA list pricing shown is for BUDGETARY USE ONLY, shown in United States dollars (FOB USA per unit for the stated volume), and is subject to change. International prices may differ due to local duties, taxes, fees and exchange rates. For volume-specific price or delivery quotes, please contact your local Linear Technology sales office or authorized distributor.

Demo Boards

Linear Technology offers many demo boards free of charge to qualified customers. Contact your local sales office or distributor to inquire about a demo board. Certain demo boards are also available for sale via credit card on this website. Demo boards are for evaluation purposes only. It remains the customer’s responsibility to verify proper and reliable operation in the actual end application.

Part Number Description Price Documentation
DC1783A-H LTC2376-18 with LTC6655-5/LT6350: 18-Bit, 250ksps, SAR ADC with 102dB SNR. Req DC718 or DC590. $150.00
DC1805A-H LTC6362 with 250ksps 18-bit LTC2376-18 SAR ADC, LTC6655-5. Req DC718 or DC590. $150.00
Buy Now

Companion Boards

Part Number Description Price Documentation
DC2026A Linduino One Isolated Arduino-Compatible Demonstration Board $75.00
DC590B USB Serial Controller for Linear Technology QuikEval Demo Boards $50.00
DC718C USB Data Acquisition Controller, for PScope Evaluation Kits (<135Mbps) $300.00
Buy Now
Click here to view our complete list of demo boards

Applications

  • Medical Imaging
  • High Speed Data Acquisition
  • Portable or Compact Instrumentation
  • Industrial Process Control
  • Low Power Battery-Operated Instrumentation
  • ATE

Product Notifications

Please login to your MyLinear account for notifications of datasheet updates, new document releases and LTspice model announcements for your favorite products. If you do not have a MyLinear account you may Sign Up Now.

Forgot your password? Click here.
Need help? Email mylinear@linear.com with questions and comments.

Design Tools

Linduino

Linduino is an Arduino compatible platform for developing and distributing firmware libraries and code for SPI and I²C-compatible integrated circuits. The Linduino One board interfaces to more than 300 QuikEval demonstration cards, supporting a variety of product types including analog-to-digital converters (ADCs)digital-to-analog converters (DACs)power monitors, and more. Firmware libraries for individual devices are written in C and designed to be portable to a wide variety of processors and microcontrollers. Each library has a demonstration program that can be uploaded to the Linduino One platform to allow the circuit and software to be quickly and easily verified.

Click here for more information on Linduino

Code

Linduino is Linear Technology's Arduino compatible system for developing and distributing firmware libraries and example code for Linear Technology’s integrated circuits. The code below can be downloaded or copied and pasted into your project. Please visit the Linduino Home Page for demo board, manual and setup information.

This part is Family Supported: There is example code available for a part in this family. The code may require some changes to work with this specific part, however it still provides many good examples of how certain interactions should take place. The code below may rely on other drivers available in the full library.

Download LTC2378 - DC1783A Linduino .INO File

/*!
Linear Technology DC1783A Demonstration Board.
237X_16/18: 16/18-Bit, 1Msps ADC.
Max SCK rate is 100MHz.

@verbatim

NOTES
  Setup:
   Set the terminal baud rate to 115200 and select the newline terminator.
   Equipment required is a precision voltage source (null box) and a precision voltmeter (to monitor voltage source).
   No external power supply is required.
   Ensure JP1 is installed in the default position from the factory.

  How to test:
   The voltage source should be connected with positive and negative leads to the positive & negative ADC inputs. Ensure the differential voltage is within the
   range of -VREF to +VREF. Swapping input voltages results in a reversed polarity reading.

  How to calibrate:
   Enter menu item number "3 - Calibrate" and follow the prompts.
   Calibration is now stored in EEPROM. Upon startup the calibration values will be restored.

USER INPUT DATA FORMAT:
 decimal : 1024
 hex     : 0x400
 octal   : 02000  (leading 0 "zero")
 binary  : B10000000000
 float   : 1024.0

@endverbatim

http://www.linear.com/product/LTC237X_20

http://www.linear.com/product/LTC237X_20#demoboards

REVISION HISTORY
$Revision: 1792 $
$Date: 2013-08-9 13:58:53 -0700 (Thu, 25 Jul 2013) $

Copyright (c) 2013, Linear Technology Corp.(LTC)
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of Linear Technology Corp.

The Linear Technology Linduino is not affiliated with the official Arduino team.
However, the Linduino is only possible because of the Arduino team's commitment
to the open-source community.  Please, visit http://www.arduino.cc and
http://store.arduino.cc , and consider a purchase that will help fund their
ongoing work.
*/

/*! @file
    @ingroup LTC237X
*/

#include 
#include 
#include "Linduino.h"
#include "LT_SPI.h"
#include "UserInterface.h"
#include "LT_I2C.h"
#include "QuikEval_EEPROM.h"
#include "LTC237X.h"
#include 
#include 

// Function Declaration
void print_title();                                         // Print the title block
void print_prompt();                                        // Prompt the user for an input command
void print_user_command(uint8_t menu);                      // Display selected differential channels

void menu_1_read_input();
void menu_2_select_gain_compression();
void menu_3_select_bits();

// Global variables
static uint8_t LTC237X_gain_compression = 0;         //!< Default set for no gain compression
float vref = 5;
static uint8_t LTC237X_bits = 18;                   //!< Default set for 18 bits
static float LTC237X_lsb = (float) 2*vref/pow(2,LTC237X_bits);           //!< Code weight in volts per LSB - no gain compression
static int32_t LTC237X_offset_code = 0;              //!< Ideal bipolar offset for a perfect part

//! Initialize Linduino
void setup()
{
  uint32_t adc_code; 
  quikeval_I2C_init();           // Configure the EEPROM I2C port for 100kHz
  quikeval_SPI_init();           // Configure the spi port for 4MHz SCK
  quikeval_SPI_connect();        // Connect SPI to main data port
  Serial.begin(115200);          // Initialize the serial port to the PC
  print_title();
  print_prompt();
}


//! Repeats Linduino loop
void loop()
{
  uint16_t user_command;
  {
    if (Serial.available())
    {
      user_command = read_int();        // Read the user command
      if (user_command != 'm')
        Serial.println(user_command);   // Prints the user command to com port
      switch (user_command)
      {
        case 1:
          menu_1_read_input();
          break;
        case 2:
          menu_2_select_gain_compression();
          break;
        case 3:
          menu_3_select_bits();
          break;
        default:
          Serial.println("Invalid Option");
          break;
      }
      Serial.println();
      print_prompt();
    }
  }
}

// Function Definitions

//! Read channel
//! @return void
void menu_1_read_input()
{
  uint8_t user_command;
  int32_t adc_code;                           // The LTC237X code
  int32_t display_code;
  float adc_voltage;                               // The LTC237X voltage
    
    // Read and display a selected channel
    LTC237X_read(LTC237X_CS, &adc_code);  //discard the first reading
    delay(100);
    LTC237X_read(LTC237X_CS, &adc_code);
    
    display_code = adc_code >> (32 - LTC237X_bits);
    if(LTC237X_bits == 16)
      display_code = display_code & 0xffff;
    else
      display_code = display_code & 0x3ffff;      
    
    Serial.print(F("Received Code: 0x"));
    Serial.println(display_code, HEX);
       
  // Convert the received code to voltage 
    adc_voltage = LTC237X_code_to_voltage(adc_code, vref); 
          
    Serial.print(F("Equivalent voltage: "));
    Serial.print(adc_voltage, 4);
    Serial.println(F("V")); 
}


//! Select gain compression
//! @return void
void menu_2_select_gain_compression()
{
  uint8_t user_command;
  Serial.println();
  if(LTC237X_gain_compression == 0)
    Serial.print(F("No gain compression enabled"));
  else
    Serial.print(F("Gain compression enabled"));
    
  Serial.println(F("\n0=No Gain Compression, 1=Gain Compression"));
  Serial.print(F("Enter a Command, based upon the position of jumper JP6: "));

  user_command = read_int();    // Read user input
  Serial.println(user_command);   // Prints the user command to com port
  switch (user_command)
    {
        case 0:
          LTC237X_gain_compression = 0;
          break;
        case 1:
          LTC237X_gain_compression = 1;
          break;
        default:
        {
          Serial.println("Invalid Option");
          return;
        }
          break;
    }
}


//! Select number of bits
//! @return void
void menu_3_select_bits()
{
  uint8_t user_command;
  
  Serial.println();
  if(LTC237X_bits == 16)
    Serial.print(F("16 bits selected"));
  else
    Serial.print(F("18 bits selected"));
      
  Serial.println(F("\n16 = 237X-16,   18 = 237X-18"));
  Serial.print(F("Enter a Command, based upon the resolution of the part under test: "));

  user_command = read_int();    // Read user input
  Serial.println(user_command);   // Prints the user command to com port
  switch (user_command)
    {
        case 16:
          LTC237X_bits = 16;
          break;
        case 18:
          LTC237X_bits = 18;
          break;
        default:
        {
          Serial.println("Invalid Option");
          return;
        }
          break;
    }
}


//! Prints the title block when program first starts.
void print_title()
{
  Serial.println();
  Serial.println(F("*****************************************************************"));
  Serial.println(F("* DC1783A Demonstration Program                                 *"));
  Serial.println(F("*                                                               *"));
  Serial.println(F("* This program demonstrates how to receive data                 *"));
  Serial.println(F("* from the LTC237X-16/18 ADC.                                   *"));
  Serial.println(F("*                                                               *"));
  Serial.println(F("* Set the baud rate to 115200 and select the newline terminator.*"));
  Serial.println(F("*                                                               *"));
  Serial.println(F("*****************************************************************"));
}


//! Prints main menu.
void print_prompt()
{
  Serial.println(F("*************************"));
  Serial.println(F("1-Read ADC Input"));
  Serial.println(F("2-Select No Gain Compression / Gain Compression (default is no compression)"));
  Serial.println(F("3-Select Number of bits (default is 18 bits)\n"));
  Serial.print(F("Enter a command:"));
}

Download LTC2378 - DC1925A Linduino .INO File

/*!
Linear Technology DC1925A Demonstration Board.
LTC237X_20: 20-Bit, 250Ksps/500Ksps/1Msps ADC.
Max SCK rate is 100MHz.

@verbatim

NOTES
  Setup:
   Set the terminal baud rate to 115200 and select the newline terminator.
   Equipment required is a precision voltage source (null box) and a precision voltmeter (to monitor voltage source).
   No external power supply is required.
   Ensure JP1 is installed in the default position from the factory.

  How to test:
   The voltage source should be connected with positive and negative leads to the positive & negative ADC inputs. Ensure the differential voltage is within the
   range of -VREF to +VREF. Swapping input voltages results in a reversed polarity reading.

  How to calibrate:
   Enter menu item number "3 - Calibrate" and follow the prompts.
   Calibration is now stored in EEPROM. Upon startup the calibration values will be restored.

USER INPUT DATA FORMAT:
 decimal : 1024
 hex     : 0x400
 octal   : 02000  (leading 0 "zero")
 binary  : B10000000000
 float   : 1024.0

@endverbatim

http://www.linear.com/product/LTC237X_20

http://www.linear.com/product/LTC237X_20#demoboards

REVISION HISTORY
$Revision: 1792 $
$Date: 2013-08-9 13:58:53 -0700 (Thu, 25 Jul 2013) $

Copyright (c) 2013, Linear Technology Corp.(LTC)
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of Linear Technology Corp.

The Linear Technology Linduino is not affiliated with the official Arduino team.
However, the Linduino is only possible because of the Arduino team's commitment
to the open-source community.  Please, visit http://www.arduino.cc and
http://store.arduino.cc , and consider a purchase that will help fund their
ongoing work.
*/

/*! @file
    @ingroup LTC237X
*/

#include 
#include 
#include "Linduino.h"
#include "LT_SPI.h"
#include "UserInterface.h"
#include "LT_I2C.h"
#include "QuikEval_EEPROM.h"
#include "LTC237X.h"
#include 
#include 

// Function Declaration
void print_title();                                         // Print the title block
void print_prompt();                                        // Prompt the user for an input command
void print_user_command(uint8_t menu);                      // Display selected differential channels

void menu_1_read_input();
void menu_2_select_gain_compression();
void menu_3_select_bits();

// Global variables
static uint8_t LTC237X_gain_compression = 0;         //!< Default set for no gain compression
float vref = 5;
static uint8_t LTC237X_bits = 20;                   //!< Default set for 20 bits
static float LTC237X_lsb = (float) 2*vref/pow(2,LTC237X_bits);       //!< Code weight in volts per LSB - no gain compression
static int32_t LTC237X_offset_code = 0;              //!< Ideal bipolar offset for a perfect part

//! Initialize Linduino
void setup()
{
  quikeval_I2C_init();           // Configure the EEPROM I2C port for 100kHz
  quikeval_SPI_init();           // Configure the spi port for 4MHz SCK
  quikeval_SPI_connect();        // Connect SPI to main data port
  Serial.begin(115200);          // Initialize the serial port to the PC
  print_title();
  print_prompt();
}


//! Repeats Linduino loop
void loop()
{
  uint16_t user_command;
  
  {
    if (Serial.available())
    {
      user_command = read_int();        // Read the user command
      if (user_command != 'm')
        Serial.println(user_command);   // Prints the user command to com port
      switch (user_command)
      {
        case 1:
          menu_1_read_input();
          break;
        case 2:
          menu_2_select_gain_compression();
          break;
        default:
          Serial.println("Invalid Option");
          break;
      }
      Serial.println();
      print_prompt();
    }
  }
}

// Function Definitions

//! Read channel
//! @return void
void menu_1_read_input()
{
  uint8_t user_command;
  int32_t adc_code;                           // The LTC237X code
  int32_t display_code;
  float adc_voltage; 
  // The LTC237X voltage
    
    // Read and display a selected channel
    LTC237X_read(LTC237X_CS, &adc_code);  //discard first reading
    delay(100);
    LTC237X_read(LTC237X_CS, &adc_code);
  
    display_code = adc_code >> (32 - LTC237X_bits);
    display_code = display_code & 0xfffff;     
  
    Serial.print(F("Received Code: 0x"));
    Serial.println(display_code, HEX);
 
    adc_voltage = LTC237X_code_to_voltage(adc_code, vref);    // Convert the received code to voltage  
         
    Serial.print(F("Equivalent voltage: "));
    Serial.print(adc_voltage, 4);
    Serial.println(F("V")); 
  
}
  
  
//! Select gain compression
//! @return void
void menu_2_select_gain_compression()
{
  uint8_t user_command;
  
  Serial.println();
  if(LTC237X_gain_compression == 0)
    Serial.print(F("No gain compression enabled"));
  else
    Serial.print(F("Gain compression enabled"));
    
  Serial.println(F("\n0=No Gain Compression, 1=Gain Compression"));
  Serial.print(F("Enter a Command, based upon the position of jumper JP6: "));
  user_command = read_int();        // Read the user command
  Serial.println(user_command);   // Prints the user command to com port
  switch (user_command)
    {
        case 0:
          LTC237X_gain_compression = 0;
          break;
        case 1:
          LTC237X_gain_compression = 1;
          break;
        default:
        {
          Serial.println("Invalid Option");
          return;
        }
          break;
    }
}


//! Prints the title block when program first starts.
void print_title()
{
  Serial.println();
  Serial.println(F("*****************************************************************"));
  Serial.println(F("* DC1925A Demonstration Program                                 *"));
  Serial.println(F("*                                                               *"));
  Serial.println(F("* This program demonstrates how to receive data                 *"));
  Serial.println(F("* from the LTC237X-20 ADC.                                      *"));
  Serial.println(F("*                                                               *"));
  Serial.println(F("* Set the baud rate to 115200 and select the newline terminator.*"));
  Serial.println(F("*                                                               *"));
  Serial.println(F("*****************************************************************"));
}


//! Prints main menu.
void print_prompt()
{
  Serial.println(F("*************************"));
  Serial.println(F("1-Read ADC Input"));
  Serial.println(F("2-Select No Gain Compression / Gain Compression (default is no compression)"));
  Serial.print(F("Enter a command:"));
}

Download LTC237X Linduino .CPP FIle

/*!
LTC237X: 16/18/20-Bit 1Msps ADC

@verbatim

The LTC237X_16/18/20 are pin-compatible, 16/18/20-bit A/D converters with 
serial I/O, and an internal reference. The ADCs typically draw only TBDmA from a 
single 5V supply. The automatic nap and sleep modes benefit power sensitive applications. 

The LTC237X_16/18/20's DC performance is outstanding with a +/-2LSB INL specification and 
no missing codes over temperature. The signal-to-noise ratio (SNR) for the LTC237X is typically TBDdB, with the internal reference. 

@endverbatim

http://www.linear.com/product/LTC237X

http://www.linear.com/product/LTC237X#demoboards

REVISION HISTORY
$Revision: 1785 $
$Date: 2013-07-25 08:47:24 -0700 (Thu, 25 Jul 2013) $

Copyright (c) 2013, Linear Technology Corp.(LTC)
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of Linear Technology Corp.

The Linear Technology Linduino is not affiliated with the official Arduino team.
However, the Linduino is only possible because of the Arduino team's commitment
to the open-source community.  Please, visit http://www.arduino.cc and
http://store.arduino.cc , and consider a purchase that will help fund their
ongoing work.
*/

//! @defgroup LTC237X: 16/18/20-Bit 1Msps ADC

/*! @file
    @ingroup LTC237X
    Library for LTC237X: 16/18/20-Bit 1Msps ADC
*/

#include 
#include 
#include "Linduino.h"
#include "LT_SPI.h"
#include "LTC237X.h"
#include 


// Reads from a SPI LTC237X-XX device that has no configuration word and a 20 bit output word.
void LTC237X_read(uint8_t cs, int32_t *ptr_adc_code)
{
  LT_union_int16_2bytes command;  	// LTC237X data and command
  command.LT_uint16 = 0;                // Set to zero, not necessary but avoids
                                        // random data in scope shots.

//Form a four byte object to hold four bytes of data
  LT_union_int32_4bytes data;	//instantiate the union
  data.LT_byte[3] = 0; 
  data.LT_byte[2] = 0; 
  data.LT_byte[1] = 0; 
  data.LT_byte[0] = 0; 

  spi_transfer_block(cs,command.LT_byte,data.LT_byte,4);

  *ptr_adc_code = data.LT_int32;
 
  return;
}


// Calculates the voltage corresponding to an adc code, given the reference voltage (in volts)
float LTC237X_code_to_voltage(int32_t adc_code, float vref)
{
  float voltage;

  voltage = (float)adc_code;
  voltage = voltage / (pow(2,31)-1);    //! 2) This calculates the input as a fraction of the reference voltage (dimensionless)
  voltage = voltage * vref;           //! 3) Multiply fraction by Vref to get the actual voltage at the input (in volts)

  return(voltage);
}

Download LTC237X Linduino Header File

/*!
LTC237X: 16/18/20-bit 1Msps ADC

@verbatim

The LTC237X_16/18/20 are pin-compatible, 16/18/20-bit A/D converters 
with serial I/O, and an internal reference. The ADCs typically draw only TBDmA 
from a single 5V supply. The automatic nap and sleep modes benefit power sensitive applications. 

The LTC237X_16/18/20's DC performance is outstanding with a +/-TBDLSB INL specification and 
no missing codes over temperature. The signal-to-noise ratio (SNR) for the LTC237X is typically TBDdB, with the internal reference. 


Example Code:

Read ADC input.

    adc_command = LTC237X_CH0 | LTC237X_UNIPOLAR_MODE | LTC237X_LOW_GAIN_MODE | LTC237X_NORMAL_MODE;     // Single-ended, CH0, unipolar, low gain, normal mode.
    LTC237X_read(LTC237X_CS, adc_command, &adc_code);   // Throws out last reading
    LTC237X_read(LTC237X_CS, adc_command, &adc_code);   // Obtains the current reading and stores to adc_code variable

    // Convert adc_code to voltage
    adc_voltage = LTC237X_unipolar_code_to_voltage(adc_code, LTC237X_lsb, LTC237X_offset_unipolar_code);

@endverbatim

http://www.linear.com/product/LTC237X

http://www.linear.com/product/LTC237X#demoboards

REVISION HISTORY
$Revision: 1807 $
$Date: 2013-07-29 13:06:06 -0700 (Mon, 29 Jul 2013) $

Copyright (c) 2013, Linear Technology Corp.(LTC)
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of Linear Technology Corp.

The Linear Technology Linduino is not affiliated with the official Arduino team.
However, the Linduino is only possible because of the Arduino team's commitment
to the open-source community.  Please, visit http://www.arduino.cc and
http://store.arduino.cc , and consider a purchase that will help fund their
ongoing work.
*/

/*! @file
    @ingroup LTC237X_
    Header for LTC237X: 16/18/20-bit 1Msps ADC
*/

#ifndef LTC237X_H
#define LTC237X_H

#include 

//! Define the SPI CS pin
#ifndef LTC237X_CS
#define LTC237X_CS QUIKEVAL_CS
#endif

//! @name LTC237X Channel Address
//! @{
// Channel Address
#define LTC237X_ADDRESS             0x00
//!@}


//! Reads the LTC237X and returns 32-bit data
//! @return void
void LTC237X_read(uint8_t cs,           //!< Chip Select Pin 
                  int32_t *ptr_adc_code    //!< Returns code read from ADC (from previous conversion)
                 );


//! Calculates the LTC237X input voltage given the binary data and lsb weight.
//! @return Floating point voltage
float LTC237X_code_to_voltage(int32_t adc_code,                   //!< Raw ADC code 
			float vref							//!< Reference voltage
			);

#endif  //  LTC237X_H


Technical Support