Library for LTC2460 ADC converter
ltc2460.cpp@0:7f26ce7f8ff5, 2015-05-11 (annotated)
- 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?
User | Revision | Line number | New 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 |