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.

TMS570LC4357: PWM数字比较模块(DC)过滤毛刺疑问

Part Number: TMS570LC4357

您好,在使用TMS570LC4357PWM驱动无刷三相电机时,使用模拟比较芯片对电机驱动板电压进行监控,并连接至PWMTZ输入上,具体如下示意图。

经过示波器抓取信号发现,模拟比较器输出给PWM TZ的信号上有毛刺,且对应每一个PWM周期中,毛刺出现位置不固定,想通过PWM内数字比较模块DC中的滤波功能对TZ上的毛刺进行过滤。但是经过尝试后仍有问题,具体如下:

假设下图中T1T2是两个相邻的PWM周期(T2T1时刻后),根据TMS570LC4357 PWM模块DC章节的解释:

  • WINDOW计数器是在OFFSET计数器向下计数至0后开始计数
  • WINDOW区间内的毛刺会被过滤
  • DCCAP寄存器可捕获DCEVFILT事件发生时,时基计数器的值。

那么基于以上三点,假设在T1时刻,毛刺出现在TZ信号中间处左右,首先软件需要设置开启DC捕获功能,读取DCCAP寄存器的值,用DCCAP中捕获时基计数器的值来设置下图中OFFSET长度,同时根据毛刺宽度设置WINDOW区间,使得WINDOW过滤区间覆盖毛刺出现的区域,达到过滤毛刺的目的。但是如果在下一个周期时(T2时刻)TZ信号上毛刺出现的位置发生了改变,例如毛刺出现在TZ后部分区域,此时由于T1时刻配置的offsetnwindow无法满足T2时刻,导致T1时刻配置的过滤区间无法过滤T2时刻的毛刺。

疑问:

1PWM 模块中DC过滤毛刺功能是否只支持过滤位置固定出现在TZ信号上的毛刺?(例如上图中T1时刻的毛刺和T2时刻的毛刺如果出现在相同位置,此时如果用上述方法,则可以根据T1时刻捕获的值,合理设置上述几个参数,使得在T2时刻毛刺被滤除。但是如果毛刺出现在不同位置,按照上述算法,则无法过滤。)

2,如果每次毛刺出现的宽度不一致,软件应该如何动态调整WINDOW计数器的值,使其覆盖毛刺出现的区域?(不可能每次都用示波器测量毛刺宽度,太繁琐。)

  • 您好,您的问题我们需要升级到英文论坛看下,有答复尽快给到您。

  • 您好,

    1PWM 模块中DC过滤毛刺功能是否只支持过滤位置固定出现在TZ信号上的毛刺?

    是的,直流滤波器无法根据噪声毛刺动态地更改其窗口,它始终具有基于 DCFWINDOW 寄存器值的固定宽度,并将在 DCFOFFSET 之后立即启动,后者将在 CTR = PRD 或 CTR = 0后再次启动。 

    2,如果每次毛刺出现的宽度不一致,软件应该如何动态调整WINDOW计数器的值,使其覆盖毛刺出现的区域?

    该WINDOW不能动态调整。 但可以建议您采用一种方法来消除此毛刺。 可以通过一个选项来控制 ePWM 输入,如下所示:

    实际上您可以通过以上列出三种方法中的任何一种,使用 IOMM 模块来配置 ePWM nTZ 输入。

    1. Asynchronous Input

    2. Double-VCLK3-Synchronized Input

    3. Double-VCLK3-Synchronized and 6-VCLK3-Filtered Input

    1. Asynchronous Input:

    使用该方法,输入信号的变化(nTZ)被直接传递到 ePWM 模块,无需任何滤波。 

    2. Double-VCLK3-Synchronized Input:

    在这个方法中,在至少2VCLK3周期内输入信号的任何变化将只传递到 ePWM 模块。

    例如: 假设 nTZ1长时间处于逻辑高电平,现在它已变为逻辑低电平,因此该低电平脉冲不会立即传递到 ePWM 模块,而 IOMM 模块将验证低电平脉冲持续时间是否至少为2VCLK3个周期。 如果低电平脉冲持续时间小于2VCLK3周期,IOMM 模块将不会把那个低电平脉冲传递到 ePWM 模块,所以 ePWM 模块将把 nTZ1读取为逻辑高电平。 因此在这个方法中,宽度小于2VCLK3周期的任何噪声将被 IOMM 模块消除。 

    3. Double-VCLK3-Synchronized and 6-VCLK3-Filtered Input:

    在该方法中,在至少6个 VCLK3 (+2个 VCLK3)周期内输入信号的任何变化只会传递到 ePWM 模块。 这意味着大小为8VCLK3周期的脉冲宽度将仅通过 IOMM 模块传递到 ePWM 模块。 

    例如: 假设 nTZ1长时间处于逻辑高电平,现在它已变为逻辑低电平,因此该低电平脉冲不会立即传递到 ePWM 模块,而 IOMM 模块将验证低电平脉冲持续时间是否至少为8VCLK3个周期。 如果低电平脉冲持续时间少于8VCLK3个周期,那么 IOMM 模块将不会把那个低电平脉冲传递到 ePWM 模块,所以 ePWM 模块将只将 nTZ1读取为逻辑高电平。 

    因此在这个方法中,宽度小于8VCLK3周期的任何噪声都将被 IOMM 模块消除。

    所以根据您在 nTZ 输入端看到的噪声毛刺大小,使用方法2或3中的任何一种。 

    详情请见英文论坛答复:

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1247609/tms570lc4357-filtered-glitch-issue-in-pwm-digital-compare-module-dc/4720164#4720164