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.

[参考译文] 编译器/LAUNCHXL-F28379D:为并网应用配置 PLL

Guru**** 664520 points
Other Parts Discussed in Thread: TIDM-1007, C2000WARE, POWERSUITE, C2000WARE-DIGITALPOWER-SDK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/811094/compiler-launchxl-f28379d-configuring-pll-for-grid-tied-applications

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件:TIDM-1007C2000WAREpowerSUITEC2000WARE-DIGITALPOWER-SDK

工具/软件:TI C/C++编译器

大家好、

我使用 PLL 提取电网电压的瞬时相位角、以执行应用的某些控制操作。 我的代码中用于配置 PLL 和 e 的 IF 部分

SPLL_1ph_Sogi_F spll1;

中断空 XINT2_ISR (void)
{

SPLL_1ph_Sogi_F_init (grid_FREQ、(float)(1.0/ISR_FREQUENCY))、&spll1);
SPLL_1ph_Sogi_F_coeff_update (((float)(1.0/ISR_FREQ))、(float)(2*PI*GRGE_FREQ)、&spll1);

spll1.u[0]=(Grid_Voltage_1_100.0);
SPLL_1ph_Sogi_F_FUNC (&spll1);

DacbRegs.DACVALS.all = spll1.cos*1024/1;
}

我的 DAC 配置如下、

DacbRegs.DACCTL.ALL = 0x0001;
//位15-8 0:保留
//位7-4 0000: DAC PWMSYNC 选择、不使用、因为 LOADMODE=0
//位3 0: 保留
//位2 0: LOADMODE、DACVALA 负载模式、0=下一个 SYSCLK、1=下 一个由 SYNCSEL 指定的 PWMSYNC
//位1 0: 保留
//位0 1: DACREFSEL、DAC 基准选择、0=VDAC/VSSA、1=ADC VREFHI/VREFLO

//-将 DAC-B 输出设置为中量程
DacbRegs.DACVALS.ALL = 0x0800; // DACVALS =位11-0、位15-12保留

//-启用 DAC-B 输出
DacbRegs.DACOUTEN.BIT.DACOUTEN = 1;// DAC 输出使能、0=禁用、1=使能

//- DAC-B 锁定控制寄存器
DacbRegs.DACLOCK.ALL = 0x0000; //写入1以锁定(设置后无法清除)

asm (" EDIS");//禁用 EALLOW 受保护寄存器访问 

我已经检查了传感器的 ADC 输出和微控制器生成的 ADC 结果、ADC 结果显示为预期结果。 但是、当我尝试使用微控制器的 DACB 引脚绘制 PLL 的输出时、它会给出零角。 我想知道我犯的错误或执行 PLL 的其他替代方法。

谢谢

Lahiru

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

    拉希鲁

    我建议您查看我们使用 PLL 的应用示例、然后根据该示例调试您的代码以查看导致此情况的原因。 其中一个示例是 TIDM-1007 (单相 CCM 图腾柱 PFC)。 这包括我们基于软件的 PLL。 C2000Ware 中提供了所有设计文件、文档和 PLL 相关信息(代码、文档)。

    Shamim

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

    拉希鲁

    我只是注意到您似乎没有正确处理 XINT 中断。  ISR 可能会触发一次、但要获得重复中断、您需要在 PIE 级别确认中断。  您的 ISR 中应该有如下行:

    PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;

    此致、

    Richard

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

    您好、Shamim、

    感谢你的答复。 我无法找到上述示例。 您能否共享上述示例的目录。

    谢谢你

    Lahiru

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

    您好 Richard、

    您的回复。 我原来的项目包括对中断到达的确认、它运行良好。 但我的 PLL 无法正常工作。

    Lahiru

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

    您可以导入此处的非 powerSUITE 示例作为参考示例  

    C:\ti\c2000Ware_DigitalPower_SDK_1_03_00_00\solutions\TIDM_1007\f28004x\ccs

    此外、我还看到您的调用方式有问题、

    初始化和更新函数仅被调用一次、  

    运行函数是重复调用的函数。  

    另请参阅该模块的 UG

    C:\ti\c2000Ware_DigitalPower_SDK_1_03_00_00\docs

    请在此处查看详细说明

    文件://C:/ti/C2000Ware_DigitalPower_SDK_1_03_00_00/docs/html/dplib_html/group___s_p_l_l__1_p_h___s_o_g_i.html

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

    此外、您似乎正在使用较旧版本的模块、请使用 C2000Ware-DigitalPower-SDK 中的最新版本

    此致

    Manish