57 lines
1.2 KiB
C
57 lines
1.2 KiB
C
#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];
|
|
extern uint8_t curma_out_cal_enable;
|
|
|
|
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
|