200 lines
7.5 KiB
C
200 lines
7.5 KiB
C
#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
|