#ifndef __DAC8552_DRIVER_H #define __DAC8552_DRIVER_H #include "data_type_def.h" #include "eeprom_spi.h" #define CALIBRATE_CUR_MA_OUT_START 0 #define CALIBRATE_CUR_MA_OUT_END 25 #define CALIBRATE_CUR_MA_OUT_POINTS 11 #define CALIBRATE_VOL_MV_OUT_START -2.5f #define CALIBRATE_VOL_MV_OUT_END 2.5f #define CALIBRATE_VOL_MV_OUT_POINTS 11 typedef enum { LD_CH_NONE = 0, LD_CH_A, LD_CH_B, LD_CH_AB, } dac8552_ld_type; typedef enum { SEL_BUF_A = 0X00, SEL_BUF_B, } dac8552_bs_type; typedef enum { PD_NONE = 0X00, PD_1K2GND, PD_100K2GND, PD_H_IMPEDANCE, } dac8552_pd_type; typedef void (*dac8552_write)(uint8_t *data, uint16_t len); typedef void (*dac8552_chip_select)(cs_state_type state); typedef struct dac8552_object { uint8_t init_flag; void (*write_data)(uint8_t *data, uint16_t len); void (*chip_selcet)(cs_state_type state); } dac8552x_object; extern dac8552x_object dac8552; extern float cur_ma_out_calibrate_table[CALIBRATE_CUR_MA_OUT_POINTS]; void dac8552_init(dac8552x_object *dac, dac8552_write write, dac8552_chip_select cs); void dac8552_operation(float32 *data1, float32 *data2); float32 calibrate_cur_ma(float32 raw); #endif