请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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
