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
00001 #ifndef __MAX11410_H__ 00002 #define __MAX11410_H__ 00003 00004 #include "mbed.h" 00005 00006 //#define DEBUG //if you want to print stuff 00007 00008 //HW definition 00009 00010 00011 #define CONV_DELAY_MS 1 00012 00013 // SPI interface configuration 00014 #define MAX11410_SPI_MODE 0 00015 00016 //8 bit registers 00017 #define SPI_READ 1<<7 00018 #define SPI_WRITE 0<<7 00019 #define REG_PD 0x0 00020 #define REG_CONV_START 0x01 00021 #define REG_SEQ_START 0x02 00022 #define REG_CAL_START 0x03 00023 #define REG_GP0_CTRL 0x04 00024 #define REG_GP1_CTRL 0x05 00025 #define REG_GP_CONV 0x06 00026 #define REG_GP_SEQ 0x07 00027 #define REG_FILTER 0x08 00028 #define REG_CTRL 0x09 00029 #define REG_SOURCE 0x0A 00030 #define REG_MUX_CTRL0 0x0B 00031 #define REG_MUX_CTRL1 0x0C 00032 #define REG_MUX_CTRL2 0x0D 00033 #define REG_PGA 0x0E 00034 #define REG_WAIT_EXT 0x0F 00035 #define REG_WAIT_START 0x10 00036 00037 //24 big registers 00038 #define REG_PART_ID 0x11 00039 #define REG_SYSC_SEL 0x12 00040 #define REG_SYS_OFF_A 0x13 00041 #define REG_SYS_OFF_B 0x14 00042 #define REG_SYS_GAIN_A 0x15 00043 #define REG_SYS_GAIN_B 0x16 00044 #define REG_SELF_OFF 0x17 00045 #define REG_SELF_GAIN_1 0x18 00046 #define REG_SELF_GAIN_2 0x19 00047 #define REG_SELF_GAIN_4 0x1A 00048 #define REG_SELF_GAIN_8 0x1B 00049 #define REG_SELF_GAIN_16 0x1C 00050 #define REG_SELF_GAIN_32 0x1D 00051 #define REG_SELF_GAIN_64 0x1E 00052 #define REG_SELF_GAIN_128 0x1F 00053 #define REG_LTHRESH0 0x20 00054 #define REG_LTHRESH1 0x21 00055 #define REG_LTHRESH2 0x22 00056 #define REG_LTHRESH3 0x23 00057 #define REG_LTHRESH4 0x24 00058 #define REG_LTHRESH5 0x25 00059 #define REG_LTHRESH6 0x26 00060 #define REG_LTHRESH7 0x27 00061 #define REG_UTHRESH0 0x28 00062 #define REG_UTHRESH1 0x29 00063 #define REG_UTHRESH2 0x2A 00064 #define REG_UTHRESH3 0x2B 00065 #define REG_UTHRESH4 0x2C 00066 #define REG_UTHRESH5 0x2D 00067 #define REG_UTHRESH6 0x2E 00068 #define REG_UTHRESH7 0x2F 00069 #define REG_DATA0 0x30 00070 #define REG_DATA1 0x31 00071 #define REG_DATA2 0x32 00072 #define REG_DATA3 0x33 00073 #define REG_DATA4 0x34 00074 #define REG_DATA5 0x35 00075 #define REG_DATA6 0x36 00076 #define REG_DATA7 0x37 00077 #define REG_STATUS 0x38 00078 #define REG_STATUS_IE 0x39 00079 00080 //16 bit registers for sequencer 00081 #define REG_UC0 0x3A 00082 #define REG_UCADDR 0x6F 00083 00084 // Read/Write 00085 #define _WRITE(x) (SPI_WRITE | x) 00086 #define _READ(x) (SPI_READ | x) 00087 00088 //PD bits 00089 #define MODE_NORMAL 0 00090 #define MODE_STANDBY 1 //shut down analog, except LDO 00091 #define MODE_SLEEP 2 //shut down analog including LDO(default) 00092 #define MODE_RESET 3 //POR 00093 00094 //CONV_START bits 00095 #define _DEST(x) x<<4 //where x = 0:7 is the destination data register 00096 #define SINGLE_CONV 0 //single conversion 00097 #define CONT_CONV 1 //continuous conversions 00098 #define DUTY_CONV 2 //25% duty cycle for lower power consumption 00099 00100 //CAL_START bits 00101 #define SELF_CAL 0 00102 #define PGA_CAL 1 00103 #define SYS_OFF_A_CAL 4 00104 #define SYS_GAIN_A_CAL 5 00105 #define SYS_OFF_B_CAL 6 00106 #define SYS_GAIN_B_CAL 7 00107 00108 //GP0_CTRL bits 00109 //GP1_CTRL bits 00110 //GP_CONV bits 00111 //GP_SEQ_ADDR bit 00112 00113 //FILTER bits 00114 #define FIR_FIFTYSIXTY 0<<4 //default 00115 #define FIR_FIFTY 1<<4 00116 #define FIR_SIXTY 2<<4 00117 #define SINC4 3<<4 00118 00119 #define _RATE(x) x //where x is 0 to 7 00120 00121 //CTRL bits 00122 #define EXT_CLOCK 1<<7 00123 #define INT_CLOCK 0<<7 //default 00124 00125 #define UNIPOLAR 1<<6 00126 #define BIPOLAR 0<<6 //default 00127 00128 #define TWOS_COMP 0<<5 //default 00129 #define OFFSET_BIN 1<<5 00130 00131 #define _PBUF_EN(x) x<<4 00132 #define _NBUF_EN(x) x<<3 00133 00134 #define REF_AIN01 0 00135 #define REF1 1 00136 #define REF2 2 00137 #define REF_AVDD 3 00138 #define REF_UNI_AIN 4 00139 #define REF_UNI_REF1 5 00140 #define REF_UNI_REF2 6 00141 00142 //SOURCE bits 00143 #define VBIAS_ACTIVE 0<<6 //default 00144 #define VBIAS_HIGH 1<<6 00145 #define VBIAS_LOW 2<<6 00146 00147 #define BRN_OFF 0<<4 //default 00148 #define BRN_0P5UA 1<<4 00149 #define BRN_1UA 2<<4 00150 #define BRN_10UA 3<<4 00151 00152 #define _IDAC(x) x //0 defaul, where x is 0x00 to 0x0F 10-1600uA 00153 00154 //MUX_CTRL0 bits 00155 #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) 00156 #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) 00157 00158 //MUX_CTRL1 bits 00159 #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) 00160 #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) 00161 00162 //MUX_CTRL2 bits 00163 #define _VDD_2_INPUT(x) 1<<x 00164 #define _VDD_OFF_INPUT(x) 0<<x 00165 00166 //PGA bits 00167 #define BUFFER_ON 0<<4 //default 00168 #define BYPASS 1<<4 //no buffer (saves a tiny amount of power) 00169 #define PGA 2<<4 //use progammable gain 00170 00171 #define _GAIN_EXP(x) x //gain is 2^x (exponent) 00172 00173 //Status interrupt enbable (REG_STATUS_IE) bits 00174 #define DATA_RDY_INT 0x00000010 00175 #define CAL_RDY_INT 0x00000004 00176 #define CONV_RDY_INT 0x00000001 //default 00177 00178 //WAIT_EXT 00179 //WAIT_START 00180 00181 00182 class MAX11410 00183 { 00184 SPI *spi; 00185 DigitalOut *cs; 00186 00187 public: 00188 MAX11410(SPI *, DigitalOut *); 00189 void reset(); 00190 void write8bitReg(char, char); 00191 void write24bitReg(char, uint32_t); 00192 char read8bits(char regAddr, bool *); 00193 uint32_t read24bits(char regAddr, bool *); 00194 int32_t read24bitsSigned(char regAddr, bool *); 00195 int32_t readInterrupts(bool *); 00196 bool interrupt(); 00197 void calOffset(); 00198 void calGain(); 00199 uint32_t readStatus(bool *); 00200 00201 }; 00202 00203 #endif /*__MAX11410_H__*/ 00204
Generated on Thu Jul 14 2022 07:20:57 by 1.7.2