#ifndef _PHASE_CURRENT_H__ #define _PHASE_CURRENT_H__ #include "math/fix_math.h" typedef struct _phase_time { s32 A; s32 B; s32 C; s32 A_next; s32 B_next; s32 C_next; u32 Samp_p1; //单电阻方案两个采样时刻可能不是连续的 u32 Samp_p2; u8 sampe_phase_1; u8 sampe_phase_2; u8 boundary3_flags; u8 three_shunts_flags; }phase_time_t; //����pwn��duty cnt #define IGNORE_NONE 0 #define IGNORE_A 1 #define IGNORE_B 2 #define IGNORE_C 3 #define IGNORE_ALL 4 typedef struct current_sample { s32 adc_offset_a; s32 adc_offset_b; s32 adc_offset_c; s16 adc_ia; s16 adc_ib; s16 adc_ic; s16 adc_ia_filter; s16 adc_ib_filter; s16 adc_ic_filter; u8 c_phases; u8 c_ignore_phase; phase_time_t time; volatile int sample_count; volatile bool is_calibrating_offset; volatile bool is_calibrating_sensor; float calibrate_current; float sensor_samples_1; float sensor_samples_2; float sensor_k1; float sensor_k2; }current_samp_t; void phase_current_init(void); void phase_current_get(float *iABC); bool phase_current_offset(void); void phase_current_point(void *); void phase_current_adc_triger(void); void phase_current_offset_calibrate(void); void phase_current_calibrate_wait(void); void phase_current_sensor_start_calibrate(float calibrate_current); bool phase_current_sensor_do_calibrate(void); bool phase_curr_offset_check(void); #endif /* _PHASE_CURRENT_H__ */