主题中讨论的其他器件:AFE031
您好!
是否可以使用 此逆变器套件附带的 C2000 Piccolo F28035 MCU (60MHz)获得85KHz 正弦波输出? 我将使用 GEN_SIN_COS.asm 模块。 我已将其提高到大约50kHz 至60kHz、似乎不能再高了。
系统时钟设置为60MHz 'PLLset (0xC);'
运行开环
开关频率:每个 PWM 周期50个周期或1.2MHz
控制循环周期:100个周期(可能会减少一点、但在50个周期时、输出不再是正弦)
-dwPll_Trace_Freq/GEN_SIN_COS_WS:被设定为2^31-1
dwPll_Sample_Time/GEN_SIN_COS_TS:被设定为2^16左右、最初增加这个值会增加输出频率、但是高于2^16时、它停止了一个效应
这是该模块的装配体。
;------------------------------------------------------------------ ;文件:Gen_SIN_COS.asm ; ;说明:为 PLL 和逆变器布线角度生成正弦和余弦波 ; 版本:2.0 ; 目标:F2802x/F2803x ; ;--------------- ;版权所有德州仪器2010 ;------------------------------------------------------- ;修订历史记录:;----------------- ;日期|说明 ;----------------- ;06/15/10|新版本2.0。 ;------------------------------------------------------------------ ======================================================== Gen_SIN_COS_INT.macron ;======================================== ; 为数据和终端指针 _GEN_SIN_COS_0.usect "GEN_Sin_Cos_Section "、2、1 、1 def Q22 _GEN_SIN_COS_1 .usect "GEN_Sin_Cos_Cos_Cos_Section "、2、1 _sin 1 _GEN_Cos_Temp_ect 0 .usect "GEN_SIN_US_IN_US_1/2_USCs_S_Section_1、US_S1_EN_SIN 1、US_1、USCs_S1_Section_SIN 1、US_Section_SIN 1、US_SIN 1、US_SIN 1、US_SIN 1、US_SIN 1、USCs_S_Section_Section_1、US_SIN 1、US_1、USCs_S_SIN 1、US_1、US_SIN 1、USCs_S_S_Section_Section_1、US_1、US_SIN 1、US_SIN 1、US_SIN 1、US_SIN 1、US_SIN 1、US_SIN Sin_SIN_COS_Sin_1 .def_GEN_SIN_COS_0 .def_GEN_SIN_COS_1 .def_GEN_SIN_COS_Max .def_GEN_SIN_COS_MIN .def_SIN_COS_WS .def _GEN_SIN_COS_VS_1; 将端子指针设置为 ZROGEN_SIN_COS_VOS_VOS_IN_MOVS_2 、VOS_VOS_VOS_IN_VOS_VOS_VOS_VOS_VOS_VOS_2、VOS_VOS_VOS_VOS_VOS_VOS_VOS_VOS_VOS_VOS_VOS_IN_S;将端子指针设置为 ZIN_GEN_GEN_GEN_GEN_GEN_GEN_GEN_GEN_GEN_GEN_GEN_MON_MON_MON_2、VOS_VOS_ @@@ XAR2 MOVL@ GEN_SIN_COS_COS_1、XAR2 MOVL@ GEN_SIN_COS_Max、XAR2 MOVL@ GEN_SIN_COS_MIN、XAR2 MOVL@ GEN_SIN_COS_WS、XAR2 MOVL@ GEN_SIN_COS_TS、 XAR2 .endm ;---------------------------------------------------- ======================================================== Gen_SIN_COS.macron ;======================================== MOVW DP、#_GEN_SIN_COS_Sin_0;使用包含_GEN_SIN_COS_SIN_0 MOVL 的页值加载 DP 指针 XAR0、@_GEN_SIN_COS_WS;使用指向_GEN_SIN_COS_WS (Q20) MOVL 的指针加载 XAR0 XAR1、@_GEN_SIN_COS_TS;使用指向_GEN_SIN_COS_TS (Q24) MOVL 的指针加载 XAR1 XAR2、@_GEN_SIN_COS_Sin_0;使用指向_GEN_SIN_COS_Sin_0 (Q22) MOVL 的指针加载 XAR2 XAR3、@_GEN_SIN_COS_0;使用指向_GEN_SIN_COS_0 (Q22) MOVL 的指针加载 XAR3 xt、;XAR0;载入 XAR0 IMPYL P、XT、*XAR1指向的位置的 XT;有符号32x32位乘法,P 是乘积(有符号低32位) QMPYL ACC、XT、*XAR1高32位 LSL64:P、#8逻辑左移8位? (ACC=WS*TS,ACC->Q20) MOVL @ dwSin_Cos_Temp、ACC;Temp = WS*TS MOVL @XT、ACC;XT = WS*TS IMPYL P、XT、*XAR2;P = WS*TS*Sin_0[31:0] QMPYL ACC、XT、*XAR2;ACC = WS*TS*Sin_0[63:32] LSL64 ACC:P、#12;ACC->Q22 NEG ACC;ACC =-ACC MOVL XAR0、@â_GEN_SIN_COS_MIN MOVL XAR1、Δ@ GEN_SIN_COS_MAX MOVL XAR2、@â_GEN_SIN_COS_COS_1 附加 ACC、* XAR2;ACC = COS_1 - WS* TS* Sin_0 MINL ACC,*XAR1;饱和度高 MAXL ACC,*XAR0;饱和低 MOVL *XAR2、ACC;COS_1 = COS_1 - WS*TS* Sin_0 MOVL xt、@ dwSin_Cos_Temp;xt = WS* TS IMPYL P、XT、*XAR3P = WS* TS* Cos_0[31:0] QMPYL ACC、XT、XAR3;ACC = WS VL TS* Cos_0[63:32] LSL64 ACC:P、#12;->QMO22 XAR3、@â_GEN_SIN_COS_Sin_1 加载 ACC、* XAR3;ACC = Sin_1 + WS* TS* Cos_0 MINL ACC,*XAR1;饱和度 Hig MAXL ACC,*XAR0;饱和低 MOVL *XAR3、ACC;Sin_1 = Sin_1 + WS*TS*Cos_0 ;;保存 Sin_0、Cos_0用于下一步 MOVL XAR0、Δ@ GEN_SIN_COS_Sin_0 MOVL XAR1、@â_GEN_SIN_COS_COS_0 MOVL *XAR0、ACC MOVL ACC,*XAR2 MOVL *XAR1,ACC .endm ;文件结尾
谢谢、
米洛