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.

[参考译文] TMS320F28069:由噪声触发的错误 ECAP 模块

Guru**** 2529560 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/602851/tms320f28069-ecap-module-with-wrong-triggered-by-noise

器件型号:TMS320F28069

尊敬的冠军:

我的客户使用 F28069进行 PFC 控制、为了实现 ZCD (过零检测)、他们使用 GPIO 作为 ZCD 信号并连接到 ECAP 引脚。

但是、在具有开关噪声的电源中、我们会影响捕获结果。

团队是否有更好的方法来解决问题? 下面是代码和波形。

感谢您的评论。

CH1:ZCD 信号(连接至捕捉引脚);            Ch2:PWM;             Ch3:电感器电流。  

void InitECap1Gpio (void)
{
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO24 = 1;//启用 GPIO24 (CAP1)上的上拉电阻

//默认情况下输入与 SYSCLKOUT 同步。
//注释掉其他不需要的行。

// GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 0;//同步到 SYSCLKOUT GPIO5 (CAP1)
// GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 0;//同步到 SYSCLKOUT GPIO11 (CAP1)
// GPQTL1.bit.GPIO12 = 0;//同步到 SYSCLKOUT GPIO11 (CAP1);// GPQTL2.GPIO19 = GPB=GPQ251.GPIO0; //同步到 SYSCLKOUT GPIO19 (CAP1)

//使用6个样本进行限定。对配置为 GPIO 或外设功能的引脚有效。
//样本之间的间隔时间在 GPACTRL 寄存
器 GpioCtrlRegs.GPIOQSEL2.bit.GPIO24 = 0x10;//GPIO24 (CAP1)//GPIO31

指定采样周期到 GPIO24。
//采样周期= 2*255×TSYSCLKOUT
GpioCtrlRegs.GPACTRL.bit.QUALPRD3 = 0xFF;

//使用 GPIO 寄存器配置 eCAP-1引脚*//
这指定了哪个可能的 GPIO 引脚将是 eCAP1功能引脚。
//注释掉其他不需要的行。

// GpioCtrlRegs.GPAMUX1.bit.GPIO5=3;//将 GPIO5配置为 CAP1
// GpioCtrlRegs.GPAMUX1.bit.GPIO11=3;//将 GPIO11配置为 CAP1
// GpioCtrlRegs.GPAMUX2.bit.GPIO1=








3;//将 GPIO1= 0x24/ GPIO1.0x24/ GPIO1= GPIO1.GPIO1.0x24;将 GPIO1= GPIO1.GPIO1.0x24/ GPIO1.GPIO1.GPIO1.GPIO1.GPIO1.GPIO1.GPIO1.bit.GPIO1.GPIO1.GPIO1.GPIO1.GPIO1.GPIO1.GPIO1.GPIO1.GPIO1.GPIO1.GPIO1.GPIO1.GPIO1. //禁用所有捕捉中断
ECap1Regs.ECCLR.ALL = 0xFFFF;//清除所有 CAP 中断标志
ECap1Regs.ECCTL1.bit.CAPLDEN = 0;//禁用 CAP1-CAP4寄存器加载
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0;//确保计数器停止 ECAP1.CONTINTRL2.ECL2.ECTRL2.ECL2.ECTRENTRESL2.TRL2.TRL2.TRENTRESL2.TRL2.TRESL2.TRL2.TRESL2.TRL2.TRENTRENTRESL2.TRESL2.TRESL2.TRL2.TRESL2.TRL2.TRENTR



//连续
ECap1Regs.ECCTL1.bit.CAP1POL 中的 CAP-EVT2 (CEVT2)后换行= 0;//上升沿发生 CEVT1、正緣觸發為正半週zcd
ECap1Regs.ECCTL1.bit.CAP2POL = 1;//下降沿发生 CEVT2、負緣觸發為負半週zcd /ECap1Regs.ECL1.EC1RTR1.T1/


下降沿= 0;/下降沿发生 CTR1.EC1RTR1.EC1RTR1.EC1RTR1.EC1.EC1.ECL1.EC1/下降沿= 0;/下降沿发生 CTR1.ECTR1.ECTR1.EC1ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.ECTR1.EC1/
//差动操作
//ECap1Regs.ECCTL1.bit.CTRCAPST3 = 1;//差动操作
/ECap1Regs.ECCTL1.bit.CTRRST4 = 1;//差动操作
/ECap1Regs.ECCTL2.bit.SYNCI_EN = 1;// SCTREN/ECL1.ECL1.TS=



1 MODE/ TRP1CLT.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.MOUNits = 1;SYECL1.ECL1.ECL1.ECL1.ECL1.SYECL1.ECL1.SYECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.ECL1.MOUNits = 1;SYECL1.SY

//起始计数器
ECap1Regs.ECCTL2.bit.reARM = 1;// ARM 一次性
ECap1Regs.ECCTL1.bit.CAPLDEN = 1;//启用 CAP1-CAP4寄存器加载
ECap1Regs.ECEINT.BIT.CEVT1 = 1;// 1事件=中断
ECAP1RET.ERET.EINT.1 = 1;


//中断 RECC1.E= 1 = 1;中断 EINT.E= 1

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

    Bard、

    要求客户在运行时验证 GPAQSEL2中的值。 我认为是错误的。

     

    GpioCtrlRegs.GPAQSEL2.bit.GPIO24 = 0x10; //GPIO24 (CAP1)

    要使用6个样本启用鉴定、您需要写入 B10、而不是0x10... 0x10= b 0001 0000、我猜只有两个最低有效位被写入 GPAQSEL2。 这将导致 B00或 GPIO24 与系统时钟同步、这不会过滤干扰。

    另一个考虑因素是、目前它们的限定周期设置为0xFF、这非常长。 我建议他们缩短这个时间。

    此致、
    Cody

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

    您好、Cody、

    感谢您指出这个问题、它现在的工作正常。

    BRS、

    Bard

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

    如果您有任何其他问题、请随时开始另一个主题!

    此致、
    Cody