LTC1859CG Evaluation board with an Arduino

arduino_ltc1859

I’ve been playing with a LTC1859 Evaluation board. Linear supply code for their Linduino platform (which costs a lot) and a cable to connect to it. However the Linduino is really just a standard Arduino with a special connector. I wired up the SPI interface to the board as shown above and it works fine (a couple of the ground connections are not connected above, I needed to connect them all before the board was stable). The code adapted from the Linduino library and their LTC1859 example is in the tarball below:

DC682A.tar

DC682A.ino can be simplified to the following to give a continuous single channel voltage reading:

#include <Arduino.h>
#include "Linduino.h"
#include "LT_SPI.h"
#include "LT_I2C.h"
#include "LTC1859.h"
#include <SPI.h>
#include <Wire.h>                         

void setup()
{
  uint16_t adc_code; 
  
  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
}

//! Repeats Linduino loop
void loop()
{
  uint16_t user_command;
  uint16_t adc_command;         // The LTC1859 command byte    
  uint16_t adc_code = 0;    // The LTC1859 code
  float adc_voltage;
  uint8_t x, y, startcount, endcount;

  uint8_t uni_bipolar = LTC1859_BIPOLAR_MODE;
  uint8_t single_ended_differential = LTC1859_SINGLE_ENDED_MODE;
  uint8_t range_low_high = LTC1859_HIGH_RANGE_MODE;

  startcount=0;
  endcount=0;
  
  float LTC1859_vref = 10; 

  adc_command = LTC1859_CH0 | uni_bipolar | range_low_high;
  LTC1859_read(LTC1859_CS, adc_command, &adc_code);     // Throws out last reading and starts CH0 conversion
  adc_command = LTC1859_CH0 | uni_bipolar | range_low_high; // Send channel config for the NEXT conversion to take place
  LTC1859_read(LTC1859_CS, adc_command, &adc_code);   // Read previous channel conversion (x-1) and start next one (x)
  LTC1859_read(LTC1859_CS, adc_command, &adc_code);   // Read previous channel conversion (x-1) and start next one (x)
           
  adc_voltage = LTC1859_code_to_voltage(adc_code, LTC1859_vref, range_low_high, uni_bipolar);
 
  //Serial.println(adc_code, BIN);
  Serial.print(adc_voltage, 4);
  Serial.println();
  
}