Simple driver for the 20-bit ADC MAX1120x from Maxim

MAX1120x.h

Committer:
macgyveremir
Date:
2012-08-23
Revision:
1:17195d284d76
Parent:
0:af630aa9a00d
Child:
2:26afdc979a54

File content as of revision 1:17195d284d76:

#ifndef __MAX1120X_H__
#define __MAX1120X_H__

#include "mbed.h"

// Status flag
#define NOT_READY       1
#define READY           0

// Start bit
#define START           0x80

// Mode selection
#define MODE_ACTION     (0<<6)
#define MODE_REGISTER   (1<<6)

// Mode 0 Actions table
#define ACT_SELF_CAL    0x10
#define ACT_SYS_OFF_CAL 0x20
#define ACT_SYS_GAN_CAL 0x30
#define ACT_POWERDOWN   0x08
#define ACT_CONV_1SPS   0x00
#define ACT_CONV_2_5SPS 0x01
#define ACT_CONV_5SPS   0x02
#define ACT_CONV_10SPS  0x03
#define ACT_CONV_15SPS  0x04
#define ACT_CONV_30SPS  0x05
#define ACT_CONV_60SPS  0x06
#define ACT_CONV_120SPS 0x07

// Mode 1 Registers table
#define REG_DO_READ     1       // Point register for read   
#define REG_DO_WRITE    0       // Point register for write
#define REG_STAT1       (0<<1)  // Status flags
#define REG_CTRL1       (1<<1)  // Converter operation settings
#define REG_CTRL2       (2<<1)  // GPIO pins control
#define REG_CTRL3       (3<<1)  // Gain & Calibration settings
#define REG_DATA        (4<<1)  // Sample result
#define REG_SOC         (5<<1)  // Offset Sys Calibration value
#define REG_SGC         (6<<1)  // Gain Sys Calibration value
#define REG_SCOC        (7<<1)  // Offset Self-Calibration value
#define REG_SCGC        (8<<1)  // gain Self-Calibration value

// Registers' bits
#define STAT1_RDY       (1<<0)
#define STAT1_MSTAT     (1<<1)
#define STAT1_OR        (1<<3)
#define STAT1_UR        (1<<4)

#define CTRL1_SCYCLE    (1<<1)
#define CTRL1_FORMAT    (1<<2)
#define CTRL1_SIGBUF    (1<<3)
#define CTRL1_REFBUF    (1<<4)
#define CTRL1_EXTCLK    (1<<5)
#define CTRL1_UNIP_BIP  (1<<6)
#define CTRL1_LINEF     (1<<7)

#define CTRL2_DIR_MASK  0xF0
#define CTRL2_DIO_MASK  0x0F

#define CTRL3_DGAIN_MASK 0xE0
#define CTRL3_NOSYSG    (1<<4)
#define CTRL3_NOSYSO    (1<<3)
#define CTRL3_NOSCG     (1<<2)
#define CTRL3_NOSCO     (1<<1)


typedef unsigned int uint;

class MAX1120x
{
    SPI *spi;
    DigitalOut *cs;
    DigitalIn *rdy_dout;
    
    public:
        MAX1120x (SPI *, DigitalIn *, DigitalOut *);
        //TODO: Add constructor that creates SPI from fully specified interface pins
        
        void do_self_calibration ();
        void set_control_1 (char);
        char get_control_1 ();
        void set_control_2 (char);
        char get_control_2 ();
        unsigned int get_single_sample ();

};

#endif /*__MAX1120X_H__*/