Library for LTC2460 ADC converter

Committer:
igbt6
Date:
Mon May 11 09:28:24 2015 +0000
Revision:
0:7f26ce7f8ff5
first version of library for LTC2460 ADC converter

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igbt6 0:7f26ce7f8ff5 1 #include "ltc2460.h"
igbt6 0:7f26ce7f8ff5 2
igbt6 0:7f26ce7f8ff5 3
igbt6 0:7f26ce7f8ff5 4 LTC2460::LTC2460(PinName csPin , PinName mosiPin, PinName misoPin, PinName sckPin,double resDividerVal ): mCSpin(csPin), mSpi(mosiPin, misoPin, sckPin){
igbt6 0:7f26ce7f8ff5 5
igbt6 0:7f26ce7f8ff5 6 mResDividerVal= resDividerVal ;
igbt6 0:7f26ce7f8ff5 7 if(!initLTC2460()){}; //while(1); //TODO handle error
igbt6 0:7f26ce7f8ff5 8
igbt6 0:7f26ce7f8ff5 9 }
igbt6 0:7f26ce7f8ff5 10
igbt6 0:7f26ce7f8ff5 11
igbt6 0:7f26ce7f8ff5 12 bool LTC2460::initLTC2460(void){
igbt6 0:7f26ce7f8ff5 13 // uint8_t data;
igbt6 0:7f26ce7f8ff5 14 // Setup the spi for 16 bit data
igbt6 0:7f26ce7f8ff5 15 // second edge capture, with a 1MHz clock rate
igbt6 0:7f26ce7f8ff5 16 mSpi.format(16,0);
igbt6 0:7f26ce7f8ff5 17 mSpi.frequency(1000000);
igbt6 0:7f26ce7f8ff5 18 return true;
igbt6 0:7f26ce7f8ff5 19 }
igbt6 0:7f26ce7f8ff5 20
igbt6 0:7f26ce7f8ff5 21
igbt6 0:7f26ce7f8ff5 22 uint16_t LTC2460::spiRead(void)
igbt6 0:7f26ce7f8ff5 23 {
igbt6 0:7f26ce7f8ff5 24 __disable_irq(); // Disable Interrupts
igbt6 0:7f26ce7f8ff5 25 mCSpin=0;
igbt6 0:7f26ce7f8ff5 26 uint16_t val = mSpi.write(0); // The written value is ignored, reg value is read
igbt6 0:7f26ce7f8ff5 27 mCSpin = 1;
igbt6 0:7f26ce7f8ff5 28 __enable_irq(); // Enable Interrupts
igbt6 0:7f26ce7f8ff5 29 return val;
igbt6 0:7f26ce7f8ff5 30 }
igbt6 0:7f26ce7f8ff5 31
igbt6 0:7f26ce7f8ff5 32 void LTC2460::spiWrite(uint16_t value)
igbt6 0:7f26ce7f8ff5 33 {
igbt6 0:7f26ce7f8ff5 34 __disable_irq(); // Disable Interrupts
igbt6 0:7f26ce7f8ff5 35 mCSpin = 0;
igbt6 0:7f26ce7f8ff5 36 mSpi.write(value); // New value follows
igbt6 0:7f26ce7f8ff5 37 mCSpin= 1;
igbt6 0:7f26ce7f8ff5 38 __enable_irq(); // Enable Interrupts
igbt6 0:7f26ce7f8ff5 39 }
igbt6 0:7f26ce7f8ff5 40
igbt6 0:7f26ce7f8ff5 41 float LTC2460::readVoltage()
igbt6 0:7f26ce7f8ff5 42 {
igbt6 0:7f26ce7f8ff5 43
igbt6 0:7f26ce7f8ff5 44 uint16_t rawData=spiRead() ;
igbt6 0:7f26ce7f8ff5 45 float temp = (float)((1.25/0xFFFF)*rawData);
igbt6 0:7f26ce7f8ff5 46 float val = temp*mResDividerVal+temp;
igbt6 0:7f26ce7f8ff5 47 return val;
igbt6 0:7f26ce7f8ff5 48 }
igbt6 0:7f26ce7f8ff5 49
igbt6 0:7f26ce7f8ff5 50