This version has been verified for basic register R/W. No calibration has been added yet. See example main code at https://os.mbed.com/users/laserdad/code/MAX11410_testing/
Dependents: MAX11410_testing MAX11410_test MAX11410-test
MAX11410.h
- Committer:
- laserdad
- Date:
- 2018-03-22
- Revision:
- 5:c38d406f8d02
- Parent:
- 4:3a158956e225
File content as of revision 5:c38d406f8d02:
#ifndef __MAX11410_H__ #define __MAX11410_H__ #include "mbed.h" //#define DEBUG //if you want to print stuff //HW definition #define CONV_DELAY_MS 1 // SPI interface configuration #define MAX11410_SPI_MODE 0 //8 bit registers #define SPI_READ 1<<7 #define SPI_WRITE 0<<7 #define REG_PD 0x0 #define REG_CONV_START 0x01 #define REG_SEQ_START 0x02 #define REG_CAL_START 0x03 #define REG_GP0_CTRL 0x04 #define REG_GP1_CTRL 0x05 #define REG_GP_CONV 0x06 #define REG_GP_SEQ 0x07 #define REG_FILTER 0x08 #define REG_CTRL 0x09 #define REG_SOURCE 0x0A #define REG_MUX_CTRL0 0x0B #define REG_MUX_CTRL1 0x0C #define REG_MUX_CTRL2 0x0D #define REG_PGA 0x0E #define REG_WAIT_EXT 0x0F #define REG_WAIT_START 0x10 //24 big registers #define REG_PART_ID 0x11 #define REG_SYSC_SEL 0x12 #define REG_SYS_OFF_A 0x13 #define REG_SYS_OFF_B 0x14 #define REG_SYS_GAIN_A 0x15 #define REG_SYS_GAIN_B 0x16 #define REG_SELF_OFF 0x17 #define REG_SELF_GAIN_1 0x18 #define REG_SELF_GAIN_2 0x19 #define REG_SELF_GAIN_4 0x1A #define REG_SELF_GAIN_8 0x1B #define REG_SELF_GAIN_16 0x1C #define REG_SELF_GAIN_32 0x1D #define REG_SELF_GAIN_64 0x1E #define REG_SELF_GAIN_128 0x1F #define REG_LTHRESH0 0x20 #define REG_LTHRESH1 0x21 #define REG_LTHRESH2 0x22 #define REG_LTHRESH3 0x23 #define REG_LTHRESH4 0x24 #define REG_LTHRESH5 0x25 #define REG_LTHRESH6 0x26 #define REG_LTHRESH7 0x27 #define REG_UTHRESH0 0x28 #define REG_UTHRESH1 0x29 #define REG_UTHRESH2 0x2A #define REG_UTHRESH3 0x2B #define REG_UTHRESH4 0x2C #define REG_UTHRESH5 0x2D #define REG_UTHRESH6 0x2E #define REG_UTHRESH7 0x2F #define REG_DATA0 0x30 #define REG_DATA1 0x31 #define REG_DATA2 0x32 #define REG_DATA3 0x33 #define REG_DATA4 0x34 #define REG_DATA5 0x35 #define REG_DATA6 0x36 #define REG_DATA7 0x37 #define REG_STATUS 0x38 #define REG_STATUS_IE 0x39 //16 bit registers for sequencer #define REG_UC0 0x3A #define REG_UCADDR 0x6F // Read/Write #define _WRITE(x) (SPI_WRITE | x) #define _READ(x) (SPI_READ | x) //PD bits #define MODE_NORMAL 0 #define MODE_STANDBY 1 //shut down analog, except LDO #define MODE_SLEEP 2 //shut down analog including LDO(default) #define MODE_RESET 3 //POR //CONV_START bits #define _DEST(x) x<<4 //where x = 0:7 is the destination data register #define SINGLE_CONV 0 //single conversion #define CONT_CONV 1 //continuous conversions #define DUTY_CONV 2 //25% duty cycle for lower power consumption //CAL_START bits #define SELF_CAL 0 #define PGA_CAL 1 #define SYS_OFF_A_CAL 4 #define SYS_GAIN_A_CAL 5 #define SYS_OFF_B_CAL 6 #define SYS_GAIN_B_CAL 7 //GP0_CTRL bits //GP1_CTRL bits //GP_CONV bits //GP_SEQ_ADDR bit //FILTER bits #define FIR_FIFTYSIXTY 0<<4 //default #define FIR_FIFTY 1<<4 #define FIR_SIXTY 2<<4 #define SINC4 3<<4 #define _RATE(x) x //where x is 0 to 7 //CTRL bits #define EXT_CLOCK 1<<7 #define INT_CLOCK 0<<7 //default #define UNIPOLAR 1<<6 #define BIPOLAR 0<<6 //default #define TWOS_COMP 0<<5 //default #define OFFSET_BIN 1<<5 #define _PBUF_EN(x) x<<4 #define _NBUF_EN(x) x<<3 #define REF_AIN01 0 #define REF1 1 #define REF2 2 #define REF_AVDD 3 #define REF_UNI_AIN 4 #define REF_UNI_REF1 5 #define REF_UNI_REF2 6 //SOURCE bits #define VBIAS_ACTIVE 0<<6 //default #define VBIAS_HIGH 1<<6 #define VBIAS_LOW 2<<6 #define BRN_OFF 0<<4 //default #define BRN_0P5UA 1<<4 #define BRN_1UA 2<<4 #define BRN_10UA 3<<4 #define _IDAC(x) x //0 defaul, where x is 0x00 to 0x0F 10-1600uA //MUX_CTRL0 bits #define _AINP(x) x<<4 //where x is x0,1,2,3,4,5,6,7,8,9 for ecah of the ten inputs or xA for VDD, xF for disconnnected (default) #define _AINN(x) x //where x is x0,1,2,3,4,5,6,7,8,9 for ecah of the ten inputs or xA for GND, xF for disconnected (default) //MUX_CTRL1 bits #define _IDAC1(x) x<<4 //where IDAC1 is connect ed to x = x0,1,2,3,4,5,6,7,8,9 for ecah of the ten inputs or xA for VDD, xF for disconnnected (default) #define _IDAC0(x) x //where IDAC0 is connect ed to x = x0,1,2,3,4,5,6,7,8,9 for ecah of the ten inputs or xA for VDD, xF for disconnnected (default) //MUX_CTRL2 bits #define _VDD_2_INPUT(x) 1<<x #define _VDD_OFF_INPUT(x) 0<<x //PGA bits #define BUFFER_ON 0<<4 //default #define BYPASS 1<<4 //no buffer (saves a tiny amount of power) #define PGA 2<<4 //use progammable gain #define _GAIN_EXP(x) x //gain is 2^x (exponent) //Status interrupt enbable (REG_STATUS_IE) bits #define DATA_RDY_INT 0x00000010 #define CAL_RDY_INT 0x00000004 #define CONV_RDY_INT 0x00000001 //default //WAIT_EXT //WAIT_START class MAX11410 { SPI *spi; DigitalOut *cs; public: MAX11410(SPI *, DigitalOut *); void reset(); void write8bitReg(char, char); void write24bitReg(char, uint32_t); char read8bits(char regAddr, bool *); uint32_t read24bits(char regAddr, bool *); int32_t read24bitsSigned(char regAddr, bool *); int32_t readInterrupts(bool *); bool interrupt(); void calOffset(); void calGain(); uint32_t readStatus(bool *); }; #endif /*__MAX11410_H__*/