This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMDSSOLARUINVKIT:Gen_SIN_COS 模块、可最大程度地提高输出波形频率

Guru**** 2589280 points
Other Parts Discussed in Thread: AFE031

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/662141/tmdssolaruinvkit-gen_sin_cos-module-maximizing-output-waveform-frequency

器件型号:TMDSSOLARUINVKIT
主题中讨论的其他器件: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

;文件结尾 

谢谢、

米洛

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、 、我刚刚注意到您被列为 www.ti.com/.../sprabr5.pdf 应用报告的作者。 我只是提请您注意我的上述输出频率问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您获得 控制环路周期 为100个周期(SYS 时钟)的正弦波、则可以使用我们最新的 F28004x MCU。 它的运行频率为100MHz、快于 F28035。

    由于您的正弦波的速度几乎是我们示例(60Hz)的100倍、因此您的采样环路频率必须比   我们使用的频率高相同的量才能保持正弦波的相似形状/ THD。

    Shamim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尼科尔

    您的问题有两个方面、

    1.硬件功能

    如前所述、该转换器的开关频率为50kHz、因此硬件无法生成非常高的正弦波。 85kHz

    2.软件功能

    为此、我将向您介绍 www.ti.com/.../sprac94b.pdf
    在这里,我们生成不同频率的正弦波,频率高达85kHz,代码可用

    您可以参阅 boostxl_afe031_f28379d_pwmmode 或 dacmode 示例、

    在 PWM 模式下、我们在硬件中生成85kHz 方波脉冲和滤波器、借助 DAC、我们可以生成85kHz 模拟输出。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    根据您的上述帖子、我认为基于计算的方法对于您的 PWM 更新可能非常严格。

    例如、对于85kHz、您需要至少更新50次、然后您将处于4.25MHz 的更新频率

    使用 ISR 无法更新该 FAST、因此我们已连接 F28004x 上的 DMA、您将能够为正弦生成快速更新 PWM。  

    我们对 3.2.3.1软件实施提供了一些评论

    根据您的要求、我建议使用 F28004x、该示例使用 ISR 方法、您可以使用该方法开始。  

    您提到的示例最初从未设计为在如此高的频率下工作。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢所有回答。 现在、我们有一个解决方案。 我们手头上有一些更快的建议处理器、但让它们执行 F2803x 示例所做的大部分操作看起来并不快、因为我不确定我们使用的示例有多便于移植。

    -modified the GEN_SIN_COS.asm to be an inverter, so it only needs to be run twice per cycle
    从 isr.asm 中删除了所有电压测量环路
    使用硬件使输出波形平滑