This is a Driver for the Analog Devices AD7989 18 Bit ADC.
AD7989.h
- Committer:
- Ryan Vasquez
- Date:
- 2019-02-04
- Revision:
- 8:b143706d6c43
- Parent:
- 7:8717395d66e7
File content as of revision 8:b143706d6c43:
#ifndef AD7989_H #define AD7989_H #include "mbed.h" /** An abstraction for an 18 bit ADC * @note Not quite sure this is thread or interrupt safe. Treat this as a standard mbed SPI object * There are mutex locks when the SPI bus is being used. * * Example: * @code * #include "mbed.h" * #include "AD7989_Driver.h" * * SPI spi(p5, p6, p7); // mosi, miso, sclk * DigitalOut cs(p8); * Digitalout convert(p9); * AD7989_Driver ADCDEV(&spi, &cs, &convert); * double voltage; * int main() * { * while(1) * { * voltage = ADCDEV.sample(); * printf("Voltage = %f Volts", voltage); * } * } * @endcode */ class AD7989_Driver { public: /** Constructor for AD7989_Drive object * * @param SPI_BUS this is the SPI bus the AD7989 is one * @param Chip_Select this is the DigitalOut outline connected to CS pin * @param Convert this is the DigitalOut pin that is connected to the CONV pin */ AD7989_Driver(SPI *SPI_BUS, DigitalOut *Chip_Select, DigitalOut *Convert); /** Function returns the voltage on the AD7989 as a double * The value the function will return will be from -5.0V to 5.0V */ double sample(); /** Averages a number of samples the user specifies * * @param num_avgs The number of samples to average */ double sample_avg(int num_avgs); float volts; private: static const float zero_point; SPI *ADC_SPI; DigitalOut *CS; DigitalOut *ADC_CONV; }; #endif