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:TBPRD 和 TBPRDM 不符合预期

Guru**** 2554910 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1001232/tms320f28069-tbprd-and-tbprdm-not-as-expected

器件型号:TMS320F28069

您好!

现在我们发现了一个新现象,可以解释我们在相关文章中观察到的情况:

对于 TBCTR 在700到1400之间计数的 PWM、我们发现 了

TBPRD 读取= 700、而 TBPRDM 读取= 1401。

由于我们处于影子模式、根据上表(TRM 第249页)、这意味着

TBPRD 读取反映了影子寄存器值、对吧? 那么、实际上 TBPRDM=700?

TBPRDM 读取反映了有效寄存器的值、对吧? 那么、实际上 TBPRD=1401?

 这将解释我们之前看到的现象、TBCTR 在700到1400之间计数。

 但我们无法找到 TBPRD 有效值为什么为1401、因为我们从未将该值写入 TBPRDM。

我们如何解决这个问题? 如果我们可以在多个器件上复制它、下一步是什么?

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

    Howard、

    [引用 userid="2766666" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1001232/tms320f28069-tbprd-and-tbprdm-not-as-expected "]

    TBPRD 读取反映了影子寄存器值、对吧? 那么、实际上 TBPRDM=700?

    TBPRDM 读取反映了有效寄存器的值、对吧? 那么、实际上 TBPRD=1401?

    [/报价]

    在影子模式下:

    • 读取 TBPRDM 表示 TBPRD 的有效值。
    • 读取 TBPRD 表示影子寄存器值。

    因此、是的、似乎当对值进行采样时、活动值为1400、而要在影子加载事件上加载的下一个值为700。

    [引用 userid="2766666" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1001232/tms320f28069-tbprd-and-tbprdm-not-as-expected "]但我们无法找到 TBPRD 活动值为何为1401,因为我们从未将该值写入 TBPRDM。

    写入 TBPRD 或 TBPRDM 应该会更新影子寄存器的值。

    我认为、您很可能在与 PWM 周期同步的时间点读取上述值。 读取时、有效的 TBPRD 值为1400、影子值为700。 在您读取值之后、但在影子加载事件 TBPRD 或 TBPRDM 被写入以将影子值更新为1400之前的一段时间。 然后、下一个影子到活动加载发生、1400被填充到 TBPRD 活动寄存器中。

    现在、这可能是一次性器件故障。

    后续步骤:

    1. 验证这种情况是否发生在多个设备上
      1. 如果在多个器件上发生这种情况、则很可能是软件错误、我们应该开始将代码剪切为显示问题的最简单情况。
      2. 如果在具有完全相同二进制文件的多个器件上不会发生这种情况、则如果客户希望找到根本原因、我们应提交器件进行故障分析。

    此致、
    Cody  

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

    Cody、

    我们认为我们发现了问题:

    PWM1将生成到 PWM2的 SYNC 信号以将 TBPHS 加载到 TBCTR。

    启动时、PWM1 TBPRD=1400、上数/下数模式、当 TBCTR=0时、生成 SYNC 信号。 PWM2 TBPRD=1400、TBPHS=1400、上-下计数模式。

    PWM1和 PWM2根据配置进行180°相移。

    然后、我们将 PWM1和 PWM2的 TBPRD 更改为700、PWM2 TBPHS=700。 由于它处于影子模式并且影子到活动发生在 TBCTR=0并且 PWM1首先计数到0、然后 PWM1 TBPRD 有效=700时、此时生成 SYNC 信号并且 PWM2 TBCTR 将加载 TBPHS=700、 PWM2 TBPRD 仍处于激活状态、因为 TBCTR 从不计数到0、TBCTR 将从700递增到1400、然后递减计数、下一个 SYNC 信号将再次使 TBCTR 载入700。

    它解释了为什么我们将看到 PWM2 TBPRD (有效)=1400、TBPRD (影子)=700、并解释了我们为什么可以得到下面的图:

    但是、我们也恰好满足以下波形:

    PWM2计数器的计数值介于700和2100之间。 我的理解是:PWM2 TBPRD 更新为700、TBPHS=700、PHSDIR=递增计数、当 TBCTR=TBPHS=700时、它将忽略 TBCTR=700、然后仍然递增计数。

    但是、如果是这种情况、则不符合原始设置。 因为在启动时、我们有 PWM2 TBPRD=1400、TBPHS=1400、向上向下计数模式、PHSDIR=向上 计数。 波形仍然是对称的、这意味着当 TBCTR=1400时、它会递减计数而不是递增计数。

    因此、我们需要您确认:

    1.在递增-递减计数模式中、如果我们设置 TBPHS=TBPRD 并设置 PHSDIR=1递增计数、但 TBCTR=TBPHS=TBPRD 将使其递减计数、这是冲突的、那么哪个优先呢?

    在 PWM1和 PWM2之间同步的情况下、TBCTR 是否仍会像(0.1TBCLK 延迟或提前)一样变化、而不是 TBPHS?定义的 TBCLK 整数、如果可以提前或延迟、 然后、我们可能会解释为什么我们可以看到2种不同类型的波形。

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

    Howard、在第一位、我联系了设计团队。 根据您的观察结果、我怀疑 TBPRD 反转计数器方向很可能是最低优先级。 我们将看到他们的答复是什么。

    在数字2上、我认为这是不可能的、它应该始终接近整数值。

    此致、
    Cody  

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

    Cody、

    是否有1号的更新?

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

    否 已经指派了一个人员来查看它。 我尚未收到一份时间表,估计何时完成这项工作。


    此致、
    Cody