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.

[参考译文] TMS320F280025:更新接近计数器零时的全局加载通用异常波形

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1512443/tms320f280025-global-load-general-abnormal-waveform-while-update-close-with-counter-zero

器件型号:TMS320F280025

工具/软件:

客户如下设置 PWM 逻辑:

1、 PWM1通过计数器归零事件产生的通用 SYNC 信号到 PWM4、PWM1和 PWM4都会清除计数并通过 SYNC 事件更新寄存器

2、 PWM1和 PWM4都设置为带计数器区域事件的全局一次性加载、PWM4链接到 PWM1

3、 Timer0常规40kHz 中断、以便更新 PWM1和 PWM4的 PWM 频率和占空比、然后触发全局一次性加载

如果按如下方式执行步骤3代码、则会出现一般异常波形

 

如果步骤3代码按如下方式进行修改、以避免在计数器为零时接近更新、则 PWM 波形始终运行良好

下面是 PWM1和 PWM4设置代码、您能帮助查看是否缺少任何设置而导致问题吗?

    

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

    Terry、

    以下主题讨论的问题与您报告的问题相同、目前仍在进行中、我们已指派专家来研究此问题。 是否可以遵循相同的线程?

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1486535/tms320f2800137-f2800137-global-load-of-aqctla/5811883

    此致、

    Sumit

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

    嗨、Sumit

    感谢您的建议、我想看看会发布您的建议、 当 PWM 周期启用高分辨率调整然后使用全局加载函数时、似乎存在问题。 但是、我的案例没有为 PWM 周期启用高分辨率、并且固定 ISR 频率比 PWM 频率慢、您能帮助仔细回顾一下我的案例是否是同一问题的根本原因吗?

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

    嗨、Sumit

    客户已禁用如下所示的所有高分辨率配置、如果 在 PWM 计数接近零时设置 OSHTLD = 1、则仍然符合异常波形。

    您对此行为有任何更新发现吗?

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

    Terry、

    在使用某些寄存器值的全局加载时、似乎有一些限制和注意事项:

    1.当全局影子到活动加载设置为在计数器零处发生(CTR =零)时、无法使用零死区值。

    2.同样、当加载设置为 CTR PRD=PRD 时、不能使用等于周期(PRD)的死区值。 这可能会导致出现异常波形生成。

    3.当 DBRED/DBFED 有效寄存器在死区计数器计数时加载新的影子值时、新值仅影响下一个 PWM 边沿、而不影响当前边沿。 如果不考虑这一点、也可能导致意外的波形行为。

    要解决此问题、 如果比较值(CMPA/CMPB)加载到计数器零上、它们必须大于或等于1。 如果 CMPA/CMPB 为0、PWM 输出将在整个周期内一直处于低电平。  如果比较值加载在周期值上、则它们必须小于或等于 TBPRD - 1、以避免产生系统可以忽略的非常短的脉冲。 全局加载功能支持在定义的加载事件(例如计数器零或周期)时同时更新 TBPRD、CMPA、CMPB 和其他值的影子寄存器。 但是、如果比较值在对计数器零进行全局加载时违反上述限制、则会导致输出波形中的 PWM 脉冲失真或丢失。  

    您能否尝试这些补救措施、看看这是否能解决您的问题?

    此致、

    Sumit

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

    嗨、Sumit

    感谢您的建议、在进行测试时、我们将死区值修改为非零、并确保 CMPA/CMPB 值处于正确的范围内、但如果全局更新计数器零点附近、仍然满足相同的问题 PWM 波形。 只有当我们执行全局更新 、使计数器归零之后、波形才会运行良好。

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

    Terry、  

    如果在 计数器零位置进行全局更新、波形可能运行良好、那么您能否请确认这些波形是否使用 TBPHS/TBPHSHR 寄存器同步? 也许这就是问题所在。 请注意、使用该寄存器进行同步有1-2个 CPU 周期的延迟、需要加以考虑。

    此致、

    Sumit

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

    嗨、Sumit

     没有客户不使用 TBPHS/TBPHSHR、仅更新期限和补偿 我已经在这篇帖子中上传了客户代码、您可以详细检查代码

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

    您好、Terry、

    可能需要关注 CPUTM0一次性加载 CMP-A/B 不是同步 TBPRD 时钟。 该线程中的 CPTM0函数代码在哪里?

    考虑 CPUTM0可能会溢出;应在函数循环中进行测试并清除溢出。 如果 CPUTM0是 ePIE 中断事件源、它应该优先于 EPWM ISR 事件处理程序(如果存在)? 通过 CPUTM0一次性事件加载影子寄存器(CMP-A/B)、其占空比更新计数受 ADC 样本限制。 通常、ADC 中断用于监控 PWM 驱动电感器中的电流调节。 此外、EPWM ISR 事件源触发器用于 ADC 采样转换时序环路并控制占空比、以在次级电感器/s 中进行精密电流调节

    此致、  

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

    你好 Genatco

    很抱歉、我无法理解您的意思、如果不优先考虑 ePWM ISR 并受 ADC 样本限制、会发生什么问题? 您能提供更详细的建议吗?

    您可以在此 POST 期间检查 CPUTM0函数代码和异常 PWM 波形。  如果 CPUTM0函数代码进行全局更新而不 避免 PWM 零计数、则 PWM 波形将在一个周期内出现两次脉冲一般异常。 我认为、即使 ADC 采样错误并计算出错误的占空比、也不应导致两次脉冲 PWM 异常、因此我认为应该只是出现 PWM 模块更新问题

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

    您好、Terry、

    zp dai 说:
    3、 Timer0常规40kHz 中断来更新 PWM1和 PWM4的 PWM 频率和占空比、然后触发全局一次性加载

    上面未显示函数代码 CPUTM0 ISR 例程。 看似应该给出优先级 ePWM ISR/ADC SOC 处理程序、检查 TRM 模拟子部分表、查看 ISR 优先级顺序。 while 循环延迟(权变措施)似乎建议 CMP-A/B 单触发加载存在时序问题、ePIE IRQ 挂起、CPU 忙于延迟堆栈推送/弹出操作。 此外、验证是否存在足够的栈空间来进行 ePIE 操作 CPUTM0、并在进入 ISR 后清除计时器溢出标志。  

    此致、