#ifndef __ADS1220_DRIVER_H_ #define __ADS1220_DRIVER_H_ #include "data_type_def.h" #include "dac7811.h" #include "mux_signal.h" #ifdef __CPLUSPLUS extern "C" { #endif extern float PgaGainLevel; #define VRef 2.5 // #define Read_DRDY GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) // #define ADS1220_CS_High() GPIO_SetBits(GPIOB, GPIO_Pin_12) // #define ADS1220_CS_Low() GPIO_ResetBits(GPIOB, GPIO_Pin_12) #define ADS1220_RESET_CMD 0x06 #define ADS1220_WREG_CMD 0x40 #define ADS1220_RREG_CMD 0x20 #define ADS1220_RDATA_CMD 0x10 #define ADS1220_START_CMD 0x08 #define ADS1220_POWERDOWN_CMD 0x02 #define ADS1220_WRITE_CMD(reg, len) (ADS1220_WREG_CMD + (reg << 2) + (len - 1)) #define ADS1220_READ_CMD(reg, len) (ADS1220_RREG_CMD + (reg << 2) + (len - 1)) #define ADS1220_CONFIG_0_REG 0 #define ADS1220_CONFIG_1_REG 1 #define ADS1220_CONFIG_2_REG 2 #define ADS1220_CONFIG_3_REG 3 // 寄存器0配置宏定义 #define ADS1220_MUX_MASK 0xf0 #define ADS1220_MUX_SHIFT 4 #define ADS1220_MUX_AIN0_AIN1 (0x0 << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AIN0_AIN2 (0x1 << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AIN0_AIN3 (0x2 << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AIN1_AIN2 (0x3 << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AIN1_AIN3 (0x4 << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AIN2_AIN3 (0x5 << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AIN1_AIN0 (0x6 << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AIN3_AIN2 (0x7 << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AIN0_AVSS (0x8 << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AIN1_AVSS (0x9 << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AIN2_AVSS (0xa << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AIN3_AVSS (0xb << ADS1220_MUX_SHIFT) #define ADS1220_MUX_REFP_REFN (0xc << ADS1220_MUX_SHIFT) #define ADS1220_MUX_AVDD_AVSS (0xd << ADS1220_MUX_SHIFT) #define ADS1220_MUX_SHORTED (0xe << ADS1220_MUX_SHIFT) #define ADS1220_GAIN_MASK 0xe #define ADS1220_GAIN_SHIFT 1 #define ADS1220_GAIN_1 (0x0 << ADS1220_GAIN_SHIFT) #define ADS1220_GAIN_2 (0x1 << ADS1220_GAIN_SHIFT) #define ADS1220_GAIN_4 (0x2 << ADS1220_GAIN_SHIFT) #define ADS1220_GAIN_8 (0x3 << ADS1220_GAIN_SHIFT) #define ADS1220_GAIN_16 (0x4 << ADS1220_GAIN_SHIFT) #define ADS1220_GAIN_32 (0x5 << ADS1220_GAIN_SHIFT) #define ADS1220_GAIN_64 (0x6 << ADS1220_GAIN_SHIFT) #define ADS1220_GAIN_128 (0x7 << ADS1220_GAIN_SHIFT) #define ADS1220_PGA_BYPASS 1 #define ADS1220_USE_PGA 0 // 寄存器1配置宏定义 #define ADS1220_DATA_RATE_MASK 0xe0 #define ADS1220_DATA_RATE_SHIFT 5 #define ADS1220_DATA_RATE_20SPS (0 << ADS1220_DATA_RATE_SHIFT) #define ADS1220_DATA_RATE_45SPS (1 << ADS1220_DATA_RATE_SHIFT) #define ADS1220_DATA_RATE_90SPS (2 << ADS1220_DATA_RATE_SHIFT) #define ADS1220_DATA_RATE_175SPS (3 << ADS1220_DATA_RATE_SHIFT) #define ADS1220_DATA_RATE_330SPS (4 << ADS1220_DATA_RATE_SHIFT) #define ADS1220_DATA_RATE_600SPS (5 << ADS1220_DATA_RATE_SHIFT) #define ADS1220_DATA_RATE_1000SPS (6 << ADS1220_DATA_RATE_SHIFT) #define ADS1220_OP_MODE_MASK 0x18 #define ADS1220_OP_MODE_SHIFT 3 #define ADS1220_OP_MODE_NORMAL (0 << ADS1220_OP_MODE_SHIFT) #define ADS1220_OP_MODE_DUTY (1 << ADS1220_OP_MODE_SHIFT) #define ADS1220_OP_MODE_TURBO (2 << ADS1220_OP_MODE_SHIFT) #define ADS1220_CONVERSION_MODE_MASK 0x4 #define ADS1220_CONVERSION_SINGLE_SHOT 0x0 #define ADS1220_CONVERSION_CONTINUOUS 0x4 #define ADS1220_TEMP_SENSOR_MASK 0x2 #define ADS1220_TEMP_SENSOR_ON 0x2 #define ADS1220_TEMP_SENSOR_OFF 0x0 #define ADS1220_BURN_OUT_MASK 0x1 #define ADS1220_BURN_OUT_CURRENT_ON 0x1 #define ADS1220_BURN_OUT_CURRENT_OFF 0x0 // 寄存器2配置宏定义 #define ADS1220_VREF_MASK 0xc0 #define ADS1220_VREF_SHIFT 6 #define ADS1220_VREF_INTERNAL (0 << ADS1220_VREF_SHIFT) #define ADS1220_VREF_EXT_REF0_PINS (1 << ADS1220_VREF_SHIFT) #define ADS1220_VREF_EXT_REF1_PINS (2 << ADS1220_VREF_SHIFT) #define ADS1220_VREF_AVDD (3 << ADS1220_VREF_SHIFT) #define ADS1220_FIR_FILTER_MASK 0x30 #define ADS1220_FIR_FILTER_SHIFT 4 #define ADS1220_FIR_NONE (0 << ADS1220_FIR_FILTER_SHIFT) #define ADS1220_FIR_50_60 (1 << ADS1220_FIR_FILTER_SHIFT) #define ADS1220_FIR_50 (2 << ADS1220_FIR_FILTER_SHIFT) #define ADS1220_FIR_60 (3 << ADS1220_FIR_FILTER_SHIFT) #define ADS1220_LOW_SIDE_POWER_MASK 0x04 #define ADS1220_LOW_SIDE_POWER_OPEN 0x00 #define ADS1220_LOW_SIDE_POWER_CLOSES 0x04 #define ADS1220_IDAC_CURRENT_MASK 0x07 #define ADS1220_IDAC_CURRENT_SHIFT 0 #define ADS1220_IDAC_CURRENT_OFF (0 << ADS1220_IDAC_CURRENT_SHIFT) #define ADS1220_IDAC_CURRENT_10_UA (1 << ADS1220_IDAC_CURRENT_SHIFT) #define ADS1220_IDAC_CURRENT_50_UA (2 << ADS1220_IDAC_CURRENT_SHIFT) #define ADS1220_IDAC_CURRENT_100_UA (3 << ADS1220_IDAC_CURRENT_SHIFT) #define ADS1220_IDAC_CURRENT_250_UA (4 << ADS1220_IDAC_CURRENT_SHIFT) #define ADS1220_IDAC_CURRENT_500_UA (5 << ADS1220_IDAC_CURRENT_SHIFT) #define ADS1220_IDAC_CURRENT_1000_UA (6 << ADS1220_IDAC_CURRENT_SHIFT) #define ADS1220_IDAC_CURRENT_1500_UA (7 << ADS1220_IDAC_CURRENT_SHIFT) // 寄存器3配置宏定义 #define ADS1220_IDAC1_MUX_MASK 0xe0 #define ADS1220_IDAC1_MUX_SHIFT 5 #define ADS1220_IDAC1_DISABLED (0 << ADS1220_IDAC1_MUX_SHIFT) #define ADS1220_IDAC1_AIN0 (1 << ADS1220_IDAC1_MUX_SHIFT) #define ADS1220_IDAC1_AIN1 (2 << ADS1220_IDAC1_MUX_SHIFT) #define ADS1220_IDAC1_AIN2 (3 << ADS1220_IDAC1_MUX_SHIFT) #define ADS1220_IDAC1_AIN3 (4 << ADS1220_IDAC1_MUX_SHIFT) #define ADS1220_IDAC1_REFP0 (5 << ADS1220_IDAC1_MUX_SHIFT) #define ADS1220_IDAC1_REFN0 (6 << ADS1220_IDAC1_MUX_SHIFT) #define ADS1220_IDAC2_MUX_MASK 0x1c #define ADS1220_IDAC2_MUX_SHIFT 2 #define ADS1220_IDAC2_DISABLED (0 << ADS1220_IDAC2_MUX_SHIFT) #define ADS1220_IDAC2_AIN0 (1 << ADS1220_IDAC2_MUX_SHIFT) #define ADS1220_IDAC2_AIN1 (2 << ADS1220_IDAC2_MUX_SHIFT) #define ADS1220_IDAC2_AIN2 (3 << ADS1220_IDAC2_MUX_SHIFT) #define ADS1220_IDAC2_AIN3 (4 << ADS1220_IDAC2_MUX_SHIFT) #define ADS1220_IDAC2_REFP0 (5 << ADS1220_IDAC2_MUX_SHIFT) #define ADS1220_IDAC2_REFN0 (6 << ADS1220_IDAC2_MUX_SHIFT) #define ADS1220_DOUT_DRDY_MASK 0x2 #define ADS1220_DRDY_ON_DOUT_DRDY 0x2 #define ADS1220_DRDY_ON_DRDY_ONLY 0x0 #define SPI_INVALID_RATE 0XFF #define SPI_INVALID_COMMAND 0X01 extern BOOL ads1220_spi_init_flag; void ads1220_init(void); void setup_ads1220(uint8_t inputMux, uint8_t opMode, uint8_t conversionMode, uint8_t dataRate, uint8_t gainLevel, uint8_t pgaBypass, uint8_t routeIDAC1, uint8_t routeIDAC2, uint8_t idacCurrent, uint8_t selectVref, uint8_t intTempSensor); // void ads1220_offset_calibrate_data(uint8_t *tempData); // void ads1220_reset(void); // void ads1220_start(void); // void ads1220_powerdown(void); // void ads1220_write_regs(uint8_t *writeValues, uint8_t startReg, uint8_t length); // void ads1220_read_regs(uint8_t *readValues, uint8_t startReg, uint8_t length); // void ads1220_send_read_data_command(void); // void ads1220_get_conversion_data(uint8_t *conversionData); // void ads1220_et_rtd_conversion_data_calibrated(volatile long *code); // void ads1220_get_tc_conversion_data_calibrated(volatile long *code); // void setup_spi_master(void); // void spi_write(uint8_t *pTxData, uint8_t *pRxData, uint16_t Size); // void spi_write_read_byte(uint8_t *pTxData, uint8_t *pRxData); // void spi_write_byte(uint8_t data); // void ads1220_init(void); // void ads1220_reset(void); // void ads1220_start(void); // void ads1220_powerdown(void); // void ads1220_get_conversion_data(uint8_t *conversionData); // void ads1220_get_rtd_conversion_data_calibrated(volatile long *code); void ads1220_operation(uint8_t channel, float32 *data_pv); #ifdef __CPLUSPLUS } #endif #endif