Q格式程式碼配置

wangchongwei發表於2020-11-13

最近準備自己搞實現一遍電機的foc程式碼。

Q格式-TI的dsp的IQmath學習


自己實現的基本的Q格式的配置:

/*
 *  @brief: Q format Conversion
 *  @date:   2020.11.7
 *  @author: wangchongwei
 */
// Q format: int32 -> Qx
#define I32ToQx(val,form)  ((int32_t)((val)<<form))
// Q format: float -> Qx
#define F32ToQx(val,form)  ((int32_t)((val)*(float)(1<<form)))
// Q format: Qx -> int
#define QxToI32(val,form)  ((int32_t)((val)>>form))
// Q format: Qx -> float
#define QxToF32(a,form)  ((a)*((10.000000E-01)/(float)(1<<form)))
// Q format: Qx*Qx
#define QxMul(a,b,form)   ((a)*(b)>>form)
// Q format: Qx/Qx
#define QxDiv(a,b,form)   ((a)*(b)<<form)

/*
 * @brief: Q format configure
 *  @date:   2020.11.7
 *  @author: wangchongwei
 */
#define  GLOBLE_Qx      (15)
#define  I32ToQ(val)    I32ToQx(val,GLOBLE_Qx)
#define  F32ToQ(val)    F32ToQx(val,GLOBLE_Qx)
#define  QToI32(val)    QxToI32(val,GLOBLE_Qx)
#define  QToF32(val)    QxToF32(val,GLOBLE_Qx) 
#define  QMul(a,b)      QxMul(a,b,GLOBLE_Qx)
#define  QSqu(val)      QxMul(val,val,GLOBLE_Qx)
#define  QDiv(a,b)      QxDiv(a,b,GLOBLE_Qx)



相關文章