Files
kunlun/import/sby/inc/fzsb.h
2024-09-28 14:24:04 +08:00

143 lines
3.9 KiB
C
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _LIB_FZSB_
#define _LIB_FZSB_
#include "typedef.h"
#define ADC_SIZE 420
#define ADC_BOLCK_SIZE 140
#define LED0_ON() HT_GPIOD->PTDAT|=0x2000
#define LED1_OFF() HT_GPIOD->PTDAT&=0xDFFF
#define PEAK_NUM 5
#define P_SAMPLE 128
#define TWACS_INTV_CNT_MIN 21
#define TWACS_INTV_CNT_MAX 32
#define TWACS_VAILED_DIFF_MAX_VAL (40)
#define JFG_MODE_MIN_VALUE 21
#define JFG_MODE_MAX_VALUE 29
#define JQ_MODE_MIN_VALUE 25
#define JQ_MODE_MAX_VALUE 32
#define AUTO_MODE (0)
#define JFG_MODE (1)
#define JQ_MODE (2)
#define TWACS_MODE AUTO_MODE
#define THRD_FIX 0x00100000 //U 0x70000
#define I_THRD_FIX 0x00500000
#define U_THRD_FIX 0x70000
#define SYCN_WINDOW_VALUE 2560
#define OUT_TIME 4224
#define ITF_IDLE (0)
#define ITF_RX_DAT (1)
#define ITF_RX485_DAT (2)
#define ADC_CHANNEL I_ADC_ADD
#define U_ADC_ADD 0x40013008
#define I_ADC_ADD 0x40013000
#define I2_ADC_ADD 0x40013004
typedef enum{
PEAK_INIT,
PEAK_ONE,
PEAK_MAX,
} twacs_peak_status_t;
typedef struct
{
sby_uint8_t cmd; // 由库函数设置,需要上层清零,若上层不清零,数据一直保持,无法接收新的数据。
sby_uint8_t mode; //
sby_uint8_t chip_reset_flag; // 当该标志位置1后需要上层调用复位芯片的指令
sby_uint8_t debug_mode; // 调试接口设置不同的调试等级可以通过串口0打印不同的信息详细参考debug_mode_t
sby_uint8_t rx_dat[50];
sby_uint8_t rx_busy; // 1:表示当前有接收数据当上层将CMD清零后该标志位自动清零
} twacs_itf_t;
typedef struct
{
sby_uint8_t ADC_Flag;
sby_uint8_t ADC_First;
sby_uint8_t ADC_Ready;
}adc_staus_t;
//typedef struct
//{
//}auto_thrd_t;
typedef struct
{
sby_uint32_t thrd;
sby_uint32_t peak_index[PEAK_NUM];
sby_uint32_t peak_value[PEAK_NUM];
sby_uint8_t twacs_staus;
sby_uint16_t sync_window;
sby_uint8_t mode;
sby_uint8_t peak_staus;
sby_uint32_t adc_index;
sby_uint16_t sync_window_index;
sby_uint8_t peak_num;
sby_uint8_t peak_max;
sby_uint16_t out_index;
// sby_uint16_t raw_data[20];
sby_uint8_t rx_finish_flag;
sby_uint8_t bak_intv_info[6];
sby_uint16_t rx_finish_val;
sby_uint8_t max_idx;
sby_uint32_t fix_thrd;
sby_uint8_t bitwide;
} twacs_vars_t;
void Data_Process(sby_int32_t *indata,sby_int32_t *outdata,adc_staus_t *adc_staus,twacs_vars_t *twacs_vars_data);
sby_int32_t Data2int32(sby_int32_t Data);
void Sub_abs(sby_int32_t *indata,sby_int32_t *outdata,sby_uint16_t index,sby_uint16_t offset);
sby_int32_t add_pwr(sby_int32_t *indata,sby_uint16_t index,sby_uint16_t offset,sby_uint8_t bitwide);
void GPIO_switch(void);
void Twacs_Phy(sby_uint32_t data,twacs_vars_t *twacs_vars_data);
sby_uint32_t Thrd_Cal(sby_uint32_t *data);
void Twacs_Decode(twacs_vars_t *twacs_vars);
void Rest_Twacs_var(twacs_vars_t *twacs_vars_data);
sby_uint16_t Data2mod(sby_uint16_t data1,sby_uint16_t data2);
sby_uint8_t cs_get (sby_uint8_t * dat, sby_uint16_t datlen);
void jfg_proto_decode (twacs_vars_t *twacs_vars_data);
void jq_proto_decode (twacs_vars_t *twacs_vars_data);
void twacs_background_rx_data(twacs_vars_t *twacs_vars_data,twacs_itf_t *twacs_itf_data);
extern sby_uint16_t Timer0_S,Timer0_E,Timer0_sub1,Timer0_sub2;
extern sby_int32_t Ubuffer[ADC_SIZE];
extern sby_int32_t U_Pro_Buffer[ADC_SIZE];
extern sby_int32_t Ibuffer[ADC_SIZE];
extern sby_int32_t I_Pro_Buffer[ADC_SIZE];
extern sby_int32_t I2buffer[ADC_SIZE];
extern sby_int32_t I2_Pro_Buffer[ADC_SIZE];
extern adc_staus_t U_ADC_STAUS;
extern adc_staus_t I_ADC_STAUS;
extern adc_staus_t I2_ADC_STAUS;
extern twacs_vars_t u_twacs_vars;
extern twacs_vars_t i_twacs_vars;
extern twacs_vars_t i2_twacs_vars;
extern twacs_itf_t u_twacs_itf;
extern twacs_itf_t i_twacs_itf;
extern twacs_itf_t i2_twacs_itf;
#endif