LTC2508-32 - 32-Bit Over-Sampling ADC with Configurable Digital Filter

Features

  • ±0.5ppm INL (Typ)
  • 145dB Dynamic Range (Typ) at 61sps
  • 131dB Dynamic Range (Typ) at 4ksps
  • Guaranteed 32-Bits No Missing Codes
  • Configurable Digital Filter with Synchronization
    • Relaxed Anti-Aliasing Filter Requirements
  • Dual Output 32-Bit SAR ADC
    • 32-Bit Digitally Filtered Low Noise Output
    • 14-Bit Differential + 8-Bit Common Mode 1Msps No Latency Output
  • Wide Input Common-Mode Range
  • Guaranteed Operation to 85°C
  • 1.8V to 5V SPI-Compatible Serial I/O
  • Low Power: 24mW at 1Msps
  • 24-Lead 7mm × 4mm DFN Package

Typical Application

LTC2508-32 Typical Application
LTC2508-32 Typical Application

Description

The LTC2508-32 is a low noise, low power, high-performance 32-bit ADC with an integrated configurable digital filter. Operating from a single 2.5V supply, the LTC2508-32 features a fully differential input range up to ±VREF , with VREF ranging from 2.5V to 5.1V. The LTC2508-32 supports a wide common mode range from 0V to VREF simplifying analog signal conditioning requirements.

The LTC2508-32 simultaneously provides two output codes: (1) a 32-bit digitally filtered high precision low noise code, and (2) a 22-bit no latency composite code. The configurable digital filter reduces measurement noise by lowpass filtering and down-sampling the stream of data from the SAR ADC core, giving the 32-bit filtered output code. The 22-bit composite code consists of a 14-bit code representing the differential voltage and an 8-bit code representing the common mode voltage. The 22-bit composite code is available each conversion cycle, with no cycle of latency.

The digital filter can be easily configured for 4 different down-sampling factors by pin strapping. The configurations provide a dynamic range of 131dB at 3.9ksps and 145dB at 61sps. The digital lowpass filter relaxes the requirements for analog anti-aliasing. Multiple LTC2508-32 devices can be easily synchronized using the SYNC pin.

Packaging

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

Part Number Package Code Temp Package
Drawing
RoHS
LTC2508CDKD-32#PBF 7x4 DFN-24 DKD C 05-08-1864 Yes
LTC2508CDKD-32#TRPBF 7x4 DFN-24 DKD C 05-08-1864 Yes
LTC2508IDKD-32#PBF 7x4 DFN-24 DKD I 05-08-1864 Yes
LTC2508IDKD-32#TRPBF 7x4 DFN-24 DKD I 05-08-1864 Yes


LTC2508-32 Package Drawing

Order Info

  • Part numbers ending in PBF are lead free. Solder plated terminal finish (SnPb) versions are non-standard and special terms and conditions and pricing applies if available. Please contact LTC marketing for information.
  • Part numbers containing TR or TRM are shipped in tape and reel or 500 unit mini tape and reel, respectively
  • Please refer to our general ordering information or the product datasheet for more details

Package Variations and Pricing

Part Number Package Temp Price
(1-99)
Price
(1k)*
RoHS
LTC2508CDKD-32#PBF 7x4 DFN-24 C $12.79 $8.95 Yes
LTC2508CDKD-32#TRPBF 7x4 DFN-24 C $12.85 $9.01 Yes
LTC2508IDKD-32#PBF 7x4 DFN-24 I $14.71 $10.30 Yes
LTC2508IDKD-32#TRPBF 7x4 DFN-24 I $14.77 $10.36 Yes
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
DC2222A-B LTC2508-32 Demo Board | 32-Bit Over-Sampling ADC with Configurable Digital Filter (req DC590, DC2026 or DC890) $200.00
Buy Now

Companion Boards

Part Number Description Price Documentation
DC2026C Linduino One Isolated USB Demo Board: An Arduino- and QuikEval-Compatible Code Development Platform $75.00
DC590B Isolated USB Serial Controller for Linear Technology QuikEval-Compatible Demo Boards $50.00
DC890B USB Data Acquisition Controller, for PScope Evaluation Kits (up to 250Mbps, CMOS/LVDS) $300.00
Buy Now
Click here to view our complete list of demo boards

Applications

  • Seismology
  • Energy Exploration
  • Automated Test Equipment (ATE)
  • High-Accuracy Instrumentation

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 Code Supported: There is example code available for this part. The code below may rely on other drivers available in the full library.

Download LTC2508 - Linduino CPP File

/*!
LTC2508: 32-Bit Over-Sampling ADC with Configurable Digital Filter.

@verbatim

The LTC2508-32 is a low noise, low power, high performance 32-bit ADC
with an integrated configurable digital filter. Operating from a single
2.5V supply, the LTC2508-32 features a fully differential input range
up to ±VREF, with VREF ranging from 2.5V to 5.1V. The LTC2508-32 supports
a wide common mode range from 0V to VREF simplifying analog signal
conditioning requirements.

@endverbatim

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

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

REVISION HISTORY
$Revision: 7189 $
$Date: 2017-07-10 14:53:29 -0700 (Mon, 10 Jul 2017) $

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.
*/

//! @ingroup Analog_to_Digital_Converters
//! @{
//! @defgroup LTC2508 LTC2508 : 32-Bit Over-Sampling ADC with Configurable Digital Filter.

//! @}

/*! @file
    @ingroup LTC2508
    Library for LTC2508 32-Bit Over-Sampling ADC with Configurable Digital Filter.
*/

#include <Arduino.h>
#include "LT_I2C.h"
#include "LT_SPI.h"
#include "UserInterface.h"
#include "QuikEval_EEPROM.h"
#include "Linduino.h"
#include <Wire.h>
#include <stdint.h>
#include <SPI.h>

// Calculates the output voltage from the given digital code and reference voltage
float LTC2508_code_to_voltage(int32_t code, float vref)
{
  float voltage;
  voltage = (float)code / 2147483648 * vref;
  return voltage;
}

// Send n num of pulses on pin given
void send_pulses(uint8_t pin, uint16_t num_of_pulses)
{
  uint16_t i;
  output_high(pin);

  for (i = 0; i < num_of_pulses; ++i)
  {
    output_low(pin);                      // Pull CS low
    output_high(pin);                     // Pull CS high
  }
  output_low(pin);                        // Leave CS low
}

// Reads 5 bytes of data on SPI - D31:D0 + W7:W0
uint32_t LTC2508_read_data(uint8_t QUIKEVAL_CS, uint16_t *DF)
{
  uint8_t rx[5];
  uint8_t tx[5] = {0,0,0,0,0};
  uint32_t code = 0;


  spi_transfer_block(QUIKEVAL_CS, tx, rx, 5);       // Read 5 bytes on SPI port

  code = rx[4];
  code = (code << 8) | rx[3];
  code = (code << 8) | rx[2];
  code = (code << 8) | rx[1];

  switch (rx[0])
  {
    case 0x85:
      *DF = 256;
      break;
    case 0xA5:
      *DF = 1024;
      break;
    case 0xC5:
      *DF = 4096;
      break;
    case 0xE5:
      *DF = 16384;
      break;
    default:
      *DF = 0;
  }
  return code;
}

Download LTC2508 - Linduino DC2222AB.ino File

/*!
Linear Technology DC2222AB Demonstration Board.
LTC2508: 32-Bit Over-Sampling ADC with Configurable Digital Filter

@verbatim

NOTES

   Set the terminal baud rate to 115200 and select the newline terminator.
   Provide an external voltage supply of +/-9V or 10 V.
   QUIKEVAL_GPIO is connected to the SYNC pin.
   16 bits of configuration data: 1 0 0 0   0 0 0 0   0 SEL0 SEL1 0   0 0 0 0

   Steps involved:
   1. Set I2C mode on QuikEval connector.
   2. Send configuration data through sneaker port to set DF.
   3. Send a SYNC pulse.
   4. Set SPI mode on QuikEval connector.
   5. Send DF number of MCLK pulses.
   6. Read data out through SPI.

  Explanation of Commands:

   Option 1: Read 40 bits of data and calculate input analog voltage.
   Option 2: Set the DF value for filter.
   Option 3: Set the reference voltage.

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

@endverbatim

http://www.linear.com/product/LTC2508-32

http://www.linear.com/product/LTC2508-32#demoboards

REVISION HISTORY
$Revision: 7191 $
$Date: 2017-07-10 15:21:37 -0700 (Mon, 10 Jul 2017) $

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 LTC2508
*/


#include <Arduino.h>
#include "LT_I2C.h"
#include "LT_SPI.h"
#include "UserInterface.h"
#include "QuikEval_EEPROM.h"
#include "Linduino.h"
#include <Wire.h>
#include <stdint.h>
#include <SPI.h>
#include "LTC2508.h"

float VREF = 5.0;
uint16_t global_config_data = CONFIG_DF_1024;
uint16_t num_of_mclk_pulses = 1024;

// Function Declarations
void sneaker_port_init();
void initialise_i2c_data(uint16_t value, uint8_t i2c_data[48]);
int8_t i2c_write_block_data_no_command(uint8_t address, uint8_t length, uint8_t *values);
uint16_t decode_DF_value(uint8_t byte0);
float code_to_voltage(uint8_t rx[5]);

// Setup function
void setup()
{
  Serial.begin(115200);         // Initialize the serial port to the PC
  print_title();

  sneaker_port_init();          // Send configuration data through sneaker port and a SYNC pulse

  print_prompt();
}


// Loop function
void loop()
{
  uint8_t user_command;
  if (Serial.available())               // Check for user input
  {
    user_command = read_int();                     //! Reads the user command
    if (user_command != 'm')
      Serial.println(user_command);
    switch (user_command)                               //! Prints the appropriate submenu
    {
      case 1:
        menu_1_read_voltage();          // Print single-ended voltage menu
        break;
      case 2:
        menu_2_change_DF();            // Differential voltage menu
        break;
      case 3:
        menu_3_set_VREF();           // Sequencing menu
        break;
      default:
        Serial.println("Incorrect Option");
        break;
    }
    print_prompt();
  }
}

//! Displays the ADC output and calculated voltage
void menu_1_read_voltage()
{
  uint16_t DF;
  float voltage;
  uint32_t code = 0;

  send_pulses(MCLK_pin, num_of_mclk_pulses);        // Send MCLK pulses
  code = LTC2508_read_data(QUIKEVAL_CS, &DF);
  voltage = LTC2508_code_to_voltage(code, VREF);

  Serial.print(F("\n  Data          : 0x"));
  Serial.println(code, HEX);
  Serial.print(F("  DF            : "));
  Serial.println(DF);
  Serial.print(F("  Input Voltage : "));
  Serial.print(voltage, 9);
  Serial.println(F(" V"));

}

//! Function to change the DF value for filter
void menu_2_change_DF()
{
  uint8_t user_command;
  Serial.print(F("\n  Enter the new DF option (1-256, 2-1024, 3-4096, 4-16384) : "));
  user_command = read_int();                     //! Reads the user command
  Serial.println(user_command);
  switch (user_command)                               //! Prints the appropriate submenu
  {
    case 1:
      global_config_data = CONFIG_DF_256;
      num_of_mclk_pulses = 256;
      break;
    case 2:
      global_config_data = CONFIG_DF_1024;
      num_of_mclk_pulses = 1024;
      break;
    case 3:
      global_config_data = CONFIG_DF_4096;
      num_of_mclk_pulses = 4096;
      break;
    case 4:
      global_config_data = CONFIG_DF_16384;
      num_of_mclk_pulses = 16384;
      break;
    default:
      Serial.println("Incorrect Option");
      break;
  }

  sneaker_port_init();
}

//! Function to change the voltage reference
void menu_3_set_VREF()
{
  Serial.println(F("\n  Remove the R37 resistor and probe in the new reference voltage at VREF"));
  Serial.print(F("\n  Enter the new reference voltage : "));
  VREF = read_float();
  Serial.print(VREF);
  Serial.println(F(" V"));
}


//! Send configuration data through sneaker port
// Send I2C data to sneaker port to bit bang WRIN_I2C(CS) at P2,
// SCK at P5 and SDI at P6.
//! Send a SYNC pulse after configuration.
void sneaker_port_init()
{
  uint8_t i;
  uint16_t config_value = global_config_data;
  uint8_t i2c_data[48];                 // 48 bytes of data: 3 bytes each for 16 bits

  quikeval_I2C_init();                      // I2C Mode at 100kHz
  quikeval_I2C_connect();                   // Connect I2C to main data port
  initialise_i2c_data(config_value, i2c_data);      // Populate i2c_data array with values to bit bang P3, P5, P6

  i2c_write_byte(SNEAKER_PORT_ADDRESS, CS_LOW);     // P3 = 0 pulls WRIN_CS low

  for (i = 0; i < 48; ++i)
  {
    i2c_write_byte(SNEAKER_PORT_ADDRESS, i2c_data[i]);  // Sending configuration data
  }
  i2c_write_byte(SNEAKER_PORT_ADDRESS, CS_HIGH);    // P3 = 1 pulls WRIN_CS high

  // Send a SYNC pulse and leave it low
  pinMode(QUIKEVAL_GPIO, OUTPUT);   // Make SYNC pin on output mode
  digitalWrite(QUIKEVAL_GPIO, LOW);   // SYNC is connected to GPIO pin of the QuikEval connector
  digitalWrite(QUIKEVAL_GPIO, HIGH);
  digitalWrite(QUIKEVAL_GPIO, LOW);


  quikeval_SPI_init();          // SPI Mode for QuikEval connector
  quikeval_SPI_connect();
}

// Create the array of 3 bytes each for 16 bits sneaker port data
void initialise_i2c_data(uint16_t value, uint8_t i2c_data[48])
{
  uint8_t i;
  uint8_t set_bit;
  uint8_t *p = i2c_data;
  for (i = 0; i < 16; ++i)
  {
    set_bit = (value >> i) & 0x01;
    if (set_bit)
    {
      *p++ = 0x40;
      *p++ = 0x60;
      *p++ = 0x40;
    }
    else
    {
      *p++ = 0x00;
      *p++ = 0x20;
      *p++ = 0x00;
    }
  }

  /* Serial.println("\nI2C values to configure DF: ");
  for(i = 0; i<48; ++i)
  {
    if(i%3 == 0)
    Serial.print("\n");
    Serial.print("\t0x");
    Serial.print(i2c_data[i], HEX);
  }  */
  Serial.print("\n");
}


//! Prints the title block when program first starts.
void print_title()
{
  Serial.print(F("\n************************************************************************\n"));
  Serial.print(F("* DC2222AB Demonstration Program                                       *\n"));
  Serial.print(F("*                                                                      *\n"));
  Serial.print(F("* This program demonstrates how to configure LTC2508 to set DF value,  *\n"));
  Serial.print(F("* and to read out 32 bits of data and configuration information        *\n"));
  Serial.print(F("*                                                                      *\n"));
  Serial.print(F("* Setup:                                                               *\n"));
  Serial.print(F("* Set the baud rate to 115200 and select the newline terminator.       *\n"));
  Serial.print(F("* Power the board with +/- 9V or 10 V.                                 *\n"));
  Serial.print(F("*                                                                      *\n"));
  Serial.print(F("* NOTES:                                                               *\n"));
  Serial.print(F("* Please note that LTC2508 requires 10 samples to settle and hence,    *\n"));
  Serial.print(F("* the first few samples do not reflect the exact input voltage.        *\n"));
  Serial.print(F("*                                                                      *\n"));
  Serial.print(F("************************************************************************\n"));
}

//! Prints main menu.
void print_prompt()
{
  Serial.print(F("\nMain Menu:\n"));
  Serial.print(F("  1-Read Voltage input\n"));
  Serial.print(F("  2-Change DF\n"));
  Serial.print(F("  3-Set VREF\n"));
  Serial.print(F("\nEnter a command:"));
}

Download LTC2508 - Linduino Header File

/*!
LTC2508: 32-Bit Over-Sampling ADC with Configurable Digital Filter.

@verbatim

The LTC2508-32 is a low noise, low power, high performance 32-bit ADC
with an integrated configurable digital filter. Operating from a single
2.5V supply, the LTC2508-32 features a fully differential input range
up to ±VREF, with VREF ranging from 2.5V to 5.1V. The LTC2508-32 supports
a wide common mode range from 0V to VREF simplifying analog signal
conditioning requirements.

@endverbatim

http://www.linear.com/product/LTC2508-32

http://www.linear.com/product/LTC2508-32#demoboards

REVISION HISTORY
$Revision: 7189 $
$Date: 2017-07-10 14:53:29 -0700 (Mon, 10 Jul 2017) $

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 LTC2508
    Header for LTC2508: 32-Bit Over-Sampling ADC with Configurable Digital Filter
*/

#ifndef LTC2508_H
#define LTC2508_H

#define SNEAKER_PORT_ADDRESS  0x20
#define MCLK_pin        QUIKEVAL_CS
#define CONFIG_DF_256     0x8000
#define CONFIG_DF_1024      0x8400
#define CONFIG_DF_4096      0x8200
#define CONFIG_DF_16384     0x8600

#define CS_LOW          0x00
#define CS_HIGH         0x08

//! Calculates the output voltage from the given digital code and reference voltage
float LTC2508_code_to_voltage(int32_t code, float vref);

//! Send n num of pulses on pin given
void send_pulses(uint8_t pin, uint16_t num_of_pulses);

//! Reads 5 bytes of data on SPI - D31:D0 + W7:W0
uint32_t LTC2508_read_data(uint8_t QUIKEVAL_CS, uint16_t *DF);

#endif

Technical Support