Library for LTC2460 ADC converter
Diff: ltc2460.cpp
- Revision:
- 0:7f26ce7f8ff5
diff -r 000000000000 -r 7f26ce7f8ff5 ltc2460.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ltc2460.cpp Mon May 11 09:28:24 2015 +0000 @@ -0,0 +1,50 @@ +#include "ltc2460.h" + + +LTC2460::LTC2460(PinName csPin , PinName mosiPin, PinName misoPin, PinName sckPin,double resDividerVal ): mCSpin(csPin), mSpi(mosiPin, misoPin, sckPin){ + + mResDividerVal= resDividerVal ; + if(!initLTC2460()){}; //while(1); //TODO handle error + +} + + +bool LTC2460::initLTC2460(void){ + // uint8_t data; + // Setup the spi for 16 bit data + // second edge capture, with a 1MHz clock rate + mSpi.format(16,0); + mSpi.frequency(1000000); + return true; +} + + +uint16_t LTC2460::spiRead(void) +{ + __disable_irq(); // Disable Interrupts + mCSpin=0; + uint16_t val = mSpi.write(0); // The written value is ignored, reg value is read + mCSpin = 1; + __enable_irq(); // Enable Interrupts + return val; +} + +void LTC2460::spiWrite(uint16_t value) +{ + __disable_irq(); // Disable Interrupts + mCSpin = 0; + mSpi.write(value); // New value follows + mCSpin= 1; + __enable_irq(); // Enable Interrupts +} + +float LTC2460::readVoltage() +{ + + uint16_t rawData=spiRead() ; + float temp = (float)((1.25/0xFFFF)*rawData); + float val = temp*mResDividerVal+temp; + return val; +} + +