TI的dsp的IQmath学习 _IQsinPU(A)

// PacSci 1-hp PMSM motor: 320-v, 4-pole, 1000 line encoder
// MechScaler = 1/4000 = 0x00041893 (Q30)
 
qep1.MechScaler = _IQ30(0.25/qep1.LineEncoder);
   
    #define QEP_MACRO(m,v)																		
																								
/* Check the rotational direction */															
     v.DirectionQep = (*eQEP[m]).QEPSTS.bit.QDF;												
																								
/* Check the position counter for EQEP1 */														
     v.RawTheta = (*eQEP[m]).QPOSCNT + v.CalibratedAngle;										
     																							
     if (v.RawTheta < 0)																		
       v.RawTheta = v.RawTheta + (*eQEP[m]).QPOSMAX;											
     else if (v.RawTheta > (*eQEP[m]).QPOSMAX)													
       v.RawTheta = v.RawTheta - (*eQEP[m]).QPOSMAX;											
       																							
/* Compute the mechanical angle in Q24 */														
     v.MechTheta = __qmpy32by16(v.MechScaler,(int16)v.RawTheta,31);  /* Q15 = Q30*Q0 */			
     v.MechTheta &= 0x7FFF;                                          /* Wrap around 0x07FFF*/	\
     v.MechTheta <<= 9;                                              /* Q15 -> Q24 */			
																								
/* Compute the electrical angle in Q24 */														
     v.ElecTheta = v.PolePairs*v.MechTheta;            /* Q24 = Q0*Q24 */						
     v.ElecTheta &= 0x00FFFFFF;                        /* Wrap around 0x00FFFFFF*/				
																								
/* Check an index occurrence*/																	
     if ((*eQEP[m]).QFLG.bit.IEL == 1)    														
     {  																						
     	v.IndexSyncFlag = 0x00F0;																
        v.QepCountIndex = (*eQEP[m]).QPOSILAT;													
    	(*eQEP[m]).QCLR.bit.IEL = 1;	/* Clear interrupt flag */								
     }	

    park1.Angle = _IQ24toIQ((int32)qep1.ElecTheta);

	park1.Alpha = clarke1.Alpha;
	park1.Beta  = clarke1.Beta;
	park1.Sine   = _IQsinPU(park1.Angle);
	park1.Cosine = _IQcosPU(park1.Angle);
	PARK_MACRO(park1)

_IQsinPU(A)             //正弦函数(标幺值),你占这个圆周的几分之几为单位如果sin((0.25*PI)/(2*PI))

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值