Library for LTC2460 ADC converter

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ltc2460.cpp Source File

ltc2460.cpp

00001 #include "ltc2460.h"
00002 
00003 
00004 LTC2460::LTC2460(PinName csPin , PinName mosiPin, PinName misoPin, PinName sckPin,double resDividerVal ): mCSpin(csPin), mSpi(mosiPin, misoPin, sckPin){
00005     
00006      mResDividerVal= resDividerVal ;
00007     if(!initLTC2460()){}; //while(1); //TODO handle error
00008 
00009 }   
00010     
00011     
00012 bool LTC2460::initLTC2460(void){     
00013    //  uint8_t  data;
00014     // Setup the spi for 16 bit data
00015     // second edge capture, with a 1MHz clock rate
00016      mSpi.format(16,0);
00017      mSpi.frequency(1000000);
00018      return true;
00019 }
00020 
00021 
00022 uint16_t LTC2460::spiRead(void)
00023 {
00024     __disable_irq();    // Disable Interrupts
00025     mCSpin=0;
00026     uint16_t val = mSpi.write(0); // The written value is ignored, reg value is read
00027     mCSpin = 1;
00028     __enable_irq();     // Enable Interrupts
00029     return val;
00030 }
00031 
00032 void LTC2460::spiWrite(uint16_t value)
00033 {
00034     __disable_irq();    // Disable Interrupts
00035     mCSpin = 0;
00036     mSpi.write(value); // New value follows
00037     mCSpin= 1;
00038     __enable_irq();     // Enable Interrupts
00039 }
00040 
00041 float LTC2460::readVoltage()
00042 {  
00043   
00044    uint16_t rawData=spiRead() ;
00045    float temp = (float)((1.25/0xFFFF)*rawData);
00046    float val = temp*mResDividerVal+temp;
00047    return val;
00048 }
00049 
00050