ADS1100 I2C 16bit ADC driver

Committer:
mederic
Date:
Mon Jul 23 12:58:05 2018 +0000
Revision:
0:5198300978ab
1st released

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mederic 0:5198300978ab 1 #ifndef ADS1100_H
mederic 0:5198300978ab 2 #define ADS1100_H
mederic 0:5198300978ab 3
mederic 0:5198300978ab 4 #include "mbed.h"
mederic 0:5198300978ab 5
mederic 0:5198300978ab 6 class ADS1100{
mederic 0:5198300978ab 7
mederic 0:5198300978ab 8 public:
mederic 0:5198300978ab 9 enum state{
mederic 0:5198300978ab 10 I2C_ADDR = 0x90, //I2C adress
mederic 0:5198300978ab 11 };
mederic 0:5198300978ab 12
mederic 0:5198300978ab 13
mederic 0:5198300978ab 14 /** Create ADC1100 instance
mederic 0:5198300978ab 15 * @param *i2c initialized I2C bus to use
mederic 0:5198300978ab 16 * @param ad <0,7> marking code number for addr
mederic 0:5198300978ab 17 */
mederic 0:5198300978ab 18 ADS1100(I2C* i2c, char ad);
mederic 0:5198300978ab 19
mederic 0:5198300978ab 20 /** Read outputCode
mederic 0:5198300978ab 21 * @return signed 16bit output code
mederic 0:5198300978ab 22 */
mederic 0:5198300978ab 23 short read_s16(void);
mederic 0:5198300978ab 24
mederic 0:5198300978ab 25 /** Read output
mederic 0:5198300978ab 26 * @param vdd proportional factor defualt=1.0
mederic 0:5198300978ab 27 * @return vdd*code/codemax*gain
mederic 0:5198300978ab 28 */
mederic 0:5198300978ab 29 float read(float vdd=1.0);
mederic 0:5198300978ab 30
mederic 0:5198300978ab 31 /** Configure ADS1100
mederic 0:5198300978ab 32 * @param single true for single converion mode false for continuous
mederic 0:5198300978ab 33 * @param rate can be 8,16,32,128 sample per sencods
mederic 0:5198300978ab 34 * @param gain can be 1,2,4,8
mederic 0:5198300978ab 35 */
mederic 0:5198300978ab 36 void config(bool single, char rate, char gain);
mederic 0:5198300978ab 37
mederic 0:5198300978ab 38 /** Read registers
mederic 0:5198300978ab 39 * @param output cofig reg
mederic 0:5198300978ab 40 * @return s16 code
mederic 0:5198300978ab 41 */
mederic 0:5198300978ab 42 short readReg(char* config);
mederic 0:5198300978ab 43
mederic 0:5198300978ab 44 /** Initiate a conversion (single mode)
mederic 0:5198300978ab 45 */
mederic 0:5198300978ab 46 void startConvert(void);
mederic 0:5198300978ab 47
mederic 0:5198300978ab 48 /** Check if converstion finished (continuous mode)
mederic 0:5198300978ab 49 * @return bool true if busy
mederic 0:5198300978ab 50 */
mederic 0:5198300978ab 51 bool busy(void);
mederic 0:5198300978ab 52
mederic 0:5198300978ab 53 private:
mederic 0:5198300978ab 54 I2C* _i2c;
mederic 0:5198300978ab 55 char _addr;
mederic 0:5198300978ab 56 char _config;
mederic 0:5198300978ab 57 short _minCode;
mederic 0:5198300978ab 58 char _gain;
mederic 0:5198300978ab 59 };
mederic 0:5198300978ab 60
mederic 0:5198300978ab 61 #endif