/*===================================================================================== File name: filter.C (IQ version) Originator: Digital Control Systems Group Texas Instruments Description: The Voltage Reconstruction based on switching functions and DC-Bus voltage ===================================================================================== History: ------------------------------------------------------------------------------------- 04-15-2005 Version 3.20 -------------------------------------------------------------------------------------*/ #include "IQmathLib.h" // Include header for IQmath library // Don't forget to set a proper GLOBAL_Q in "IQmathLib.h" file #include "DSP281x_Device.h" #include "filter.h" void two_order_filter_calc(TWO_ORDER_FILT_CALC *v) { v->yn = _IQmpy(v->par->x0,v->xn) + _IQmpy(v->par->x1,v->xn_1) + _IQmpy(v->par->x2,v->xn_2) + _IQmpy(v->par->y1,v->yn_1) + _IQmpy(v->par->y2,v->yn_2); v->xn_2 = v->xn_1; v->xn_1 = v->xn; v->yn_2 = v->yn_1; v->yn_1 = v->yn; } void low_bpf_calc(LOW_BPF *v) { v->yn = _IQmpy(v->xn,v->filter_t) + _IQmpy(v->yn_1,_IQ(1.0) - v->filter_t); v->yn_1 = v->yn; }
/* * filter.h * * Created on: 2014-1-21 * Author: lizhiguo */ #ifndef __FILTER_H__ #define __FILTER_H__ typedef struct { _iq x0; _iq x1; _iq x2; _iq y1; _iq y2; }TOW_ORDER_FILTER_PAR; typedef struct { _iq xn; _iq yn; _iq yn_1; _iq filter_t; void (*calc)(); }LOW_BPF; #define LOW_BPF_DEFAULTS {0,0,0,_IQ(1.0),(void (*)(Uint32))low_bpf_calc} typedef struct { _iq xn; _iq yn; _iq xn_1; _iq xn_2; _iq yn_1; _iq yn_2; TOW_ORDER_FILTER_PAR *par; void (*calc)(); // Pointer to calculation function }TWO_ORDER_FILT_CALC; #define TOW_ORDER_FILTER_CALC_DEFAULTS {0,0,0,0,0,0,0,(void (*)(Uint32))two_order_filter_calc} typedef TWO_ORDER_FILT_CALC *TWO_ORDER_FILT_CALC_handle; void two_order_filter_calc(TWO_ORDER_FILT_CALC_handle); void low_bpf_calc(LOW_BPF *v); #define FILTER(s,f,o) f.xn = s;f.calc(&f);o = f.yn #define FILTER_PAR(p) (TOW_ORDER_FILTER_PAR *)(&p) #endif //