Post Go back to editing

MAX11125ATI+T是集成电路(IC) 模数转换器(ADC)数据读取问题

Category: Software
Product Number: MAX11125ATI, MAX11125, MAX11125
Software Version: MAX11125ATI+T是集成电路(IC) 模数转换器(ADC)配置成使用外部参考电压REFSEL=1,使用内部时钟SCAN[3:0]=0011,通道模拟输入采用SingleEnded模式,SPI通讯数据写入和读取是一致的,但是使用示波器采集EOC没有转化完成电平变化。如何读取FIFO的数据

//MAX11125寄存器控制地址
#define CONFIG_SETUP ((0&0xF)<<11)
#define UNI_SETUP ((1&0xF)<<11)
#define BIP_SETUP ((2&0xF)<<11)
#define RANGE_SETUP ((3&0xF)<<11)
#define CUST_SCAN0 ((4&0xF)<<11)
#define CUST_SCAN1 ((5&0xF)<<11)
#define SMPL_SET ((6&0xF)<<11)
//MAX11125寄存器. ADC Mode Control Register
#define SCAN_MODE(x) (((x) &0xF)<<11)
#define CHSEL(x) (((x) &0xF)<<7)
#define RESET(x) (((x) &0x3)<<5)
#define PM_MODE(x) (((x) &0x3)<<3)
#define CHAN_ID(x) (((x) &0x1)<<2)
#define SWCNV(x) (((x) &0x1)<<1)
//MAX11125寄存器CONFIG_SETUPRegister Function
#define REFSEL_UNEN (0<<10)
#define REFSEL_EN (1<<10)
#define AVGON_EN (1<<9)
#define NAVG(x) (((x) &0x3)<<7)
#define NSCAN(x) (((x) &0x3)<<5)
#define SPM(x) (((x) &0x3)<<3)
#define ECHO_EN (1<<2)
//MAX11125寄存器Unipolar_SETUP Register Function
#define UCH0_1(x) ((x&0x1)<<10)
#define UCH2_3(x) ((x&0x1)<<9)
#define UCH4_5(x) ((x&0x1)<<8)
#define UCH6_7(x) ((x&0x1)<<7)
#define UCH8_9(x) ((x&0x1)<<6)
#define UCH10_11(x) ((x&0x1)<<5)
#define UCH12_13(x) ((x&0x1)<<4)
#define UCH14_15(x) ((x&0x1)<<3)
#define PDIFF_COM(x) ((x&0x1)<<2)
//MAX11125寄存器Bipolar_SETUP Register Function
#define BCH0_1(x) ((x&0x1)<<10)
#define BCH2_3(x) ((x&0x1)<<9)
#define BCH4_5(x) ((x&0x1)<<8)
#define BCH6_7(x) ((x&0x1)<<7)
#define BCH8_9(x) ((x&0x1)<<6)
#define BCH10_11(x) ((x&0x1)<<5)
#define BCH12_13(x) ((x&0x1)<<4)
#define BCH14_15(x) ((x&0x1)<<3)
//MAX11125寄存器RANGE_SETUP Register Function
#define RANGE0_1 (1<<10)
#define RANGE2_3 (1<<9)
#define RANGE4_5 (1<<8)
#define RANGE6_7 (1<<7)
#define RANGE8_9 (1<<6)
#define RANGE10_11 (1<<5)
#define RANGE12_13 (1<<4)
#define RANGE14_15 (1<<3)
#define RANGE0_15 (0xFF<<3)
//MAX11125寄存器Custom Scan0 Register Function
#define CHSCAN15 (1<<10)
#define CHSCAN14 (1<<9)
#define CHSCAN13 (1<<8)
#define CHSCAN12 (1<<7)
#define CHSCAN11 (1<<6)
#define CHSCAN10 (1<<5)
#define CHSCAN9 (1<<4)
#define CHSCAN8 (1<<3)
#define CHSACN8_15ALL (0xFF<<3)
//MAX11125寄存器Custom Scan1 Register Function
#define CHSCAN7 (1<<10)
#define CHSCAN6 (1<<9)
#define CHSCAN5 (1<<8)
#define CHSCAN4 (1<<7)
#define CHSCAN3 (1<<6)
#define CHSCAN2 (1<<5)
#define CHSCAN1 (1<<4)
#define CHSCAN0 (1<<3)
#define CHSACN0_7ALL (0xFF<<3)
//MAX11125寄存器SampleSet Register Function
#define SEQ_LENGTH(x) (((x) &0xFF)<<2)

void MAX11125_ConfigInit()
{
uint8_t data[2],recive[2];
uint16_t cmd;

//MSB寄存器控制+寄存器地址+(参考电源外部REF+/REF-差分|开启平均值输出|平均值转换次数8|扫描通道8个)
cmd=0x8000|CONFIG_SETUP|REFSEL_EN|AVGON_EN|NAVG(1)|NSCAN(1)|ECHO_EN;
data[0]=cmd>>8;
data[1]=cmd&0xFF;
MAX11125_CS_L;
HAL_SPI_Transmit(&hspi5, data, 2, 100);
MAX11125_CS_H;

cmd=0x8000|UNI_SETUP|UCH0_1(0)|UCH2_3(0)|UCH4_5(0)|UCH6_7(0)|UCH8_9(0)|UCH10_11(0)|UCH12_13(0)|UCH14_15(0);
data[0]=cmd>>8;
data[1]=cmd&0xFF;
MAX11125_CS_L;
HAL_SPI_TransmitReceive(&hspi5, data,recive, 2, 100);
MAX11125_CS_H;

cmd=0x8000|BIP_SETUP|BCH0_1(0)|BCH2_3(0)|BCH4_5(0)|BCH6_7(0)|BCH8_9(0)|BCH10_11(0)|BCH12_13(0)|BCH14_15(0);
data[0]=cmd>>8;
data[1]=cmd&0xFF;
MAX11125_CS_L;
HAL_SPI_TransmitReceive(&hspi5, data,recive, 2, 100);
MAX11125_CS_H;

cmd=0x0000|SCAN_MODE(3)|CHSEL(7)|SWCNV(1);
data[0]=cmd>>8;
data[1]=cmd&0xFF;
MAX11125_CS_L;
HAL_SPI_TransmitReceive(&hspi5, data,recive, 2, 100);
MAX11125_CS_H;

HAL_GPIO_WritePin(Fluid_CNVST_GPIO_Port, Fluid_CNVST_Pin, GPIO_PIN_SET);
HAL_Delay(5);
HAL_GPIO_WritePin(Fluid_CNVST_GPIO_Port, Fluid_CNVST_Pin, GPIO_PIN_RESET);
}