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.

[参考译文] TMS320F28035-AQCSFRC:EP 寄存器行为与预期不符

Guru**** 2482225 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1447797/tms320f28035-ep-aqcsfrc-register-does-not-behave-as-expected

器件型号:TMS320F28035-TMS320F28035 EP

工具与软件:

我有一个函数、该函数应该通过使用 AQCSFRC 寄存器的连续软件力量来关闭 PWM 输出。

#define         PWM_AB_OUTPUTS_OFF      0b0000000000000101

void Disable_PWM(void)
{
    //**********************************************
    // Force all PWM outputs off via continuous
    // software force. This takes effect on the next
    // rising edge of TBCLK (15MHZ) since we are 
    // immediate mode.
    //**********************************************

    DINT;
    EPwm1Regs.AQCSFRC.all = PWM_AB_OUTPUTS_OFF;         // force all ePWM1 outputs off
    EPwm2Regs.AQCSFRC.all = PWM_AB_OUTPUTS_OFF;         // force all ePWM2 outputs off
    EPwm3Regs.AQCSFRC.all = PWM_AB_OUTPUTS_OFF;         // force all ePWM3 outputs off
    EINT;
 }

我希望向该寄存器写入0x0005将关闭代码示例中所选 PWM 通道1、2和3的 A 和 B 输出(强制为低电平)。 我还希望、无论 PWM 当时进行了什么其他操作、这都能起作用。 也就是说、即使我要写入普通动作限定器寄存器、更改 PWM 占空比等

我不是在代码中的任何其他位置写入 AQSCFRC 寄存器。

但是、有时它会按预期工作、有时则不工作。

在我调用 Disable_pwm ()函数后查看 AQSCFRC 寄存器,可以看到 EPWM1、2和3.AQSCFRC 寄存器中的0x0005。 对于这些 PWM 通道、这将强制 A 和 B 输出为低电平。 但偶尔、在调用此函数后、我会看到电源在电流限制状态下出现高电流、因此我知道 PWM 开关是接通的。 我不知道实际上是否发生了 PWM。 但我知道有些开关处于打开状态、它们不应该亮起。

仅供参考-我正在运行具有立即重新加载功能的 PWM。 所以新设置应该在下一个 TBCLK 周期的上升沿生效。

下面是我的问题。

1、使用连续力寄存器(AQSCFRC)是否有特殊条件?

2.此寄存器中请求的强制条件是否覆盖 PWM 模块请求的任何其它输出操作?  软件强制事件具有最高优先级。

3.最后,为什么这不起作用(所有的时间)?

谢谢。

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

    尊敬的 Gregory:

    我已经循环来自团队的相关专家、请期待第二天左右回复。

    此致、

    Delaney

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

    更多信息。

    我未使用死区控制(DB)或 PWM 斩波器模块(PC)。 这两个模块都设置为默认配置(基本上是旁路而不起作用)。

    我还想知道为什么 AQSCFRC 不能按预期工作。 但目前、我要配置跳闸区域控制、以强制 PWM 输出进入已知状态(全部关闭)。 跳闸区模块靠近信号链的末端、其输出不会受上游模块的影响。

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

    尊敬的 Gregory:

    无论是否确实发生了 PWM、我都不知道

    AQCSFRC 强制将 PWM 设为低电平时、您能否在示波器上捕获? 您是否还可以查看在写入 AQCSFRC 时是否发生跳闸? 您使用的是 CBC trip 还是一次性?

    Thomas Guo 说:
    使用连续强制寄存器(AQSCFRC)是否有任何特殊条件?

    所需的唯一配置是配置 AQSFRC。 RLDCSF = 0x11然后写入 AQCSFRC。 CSFB = 0x1、AQCSFRC。 CSFA = 0x1以将其设置为低电平。

     此时是否发生了任何可能覆盖 AQ 输出的跳变? 您是否可以禁用跳闸区子模块、并测试 AQCSFRC 是否运行正常? 通过删除 DB 和跳闸区域、我们可以在动作限定器子模块中识别出更靠近的位置。

    [quote userid="155873" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1447797/tms320f28035-ep-aqcsfrc-register-does-not-behave-as-expected 此寄存器中请求的强制条件是否会覆盖 PWM 模块请求的任何其它输出操作?  软件强制事件具有最高优先级[/报价]

    软件强制事件具有最高优先级、但如果发生跳闸、它将覆盖这些事件。

    此致!

    Ryan Ma

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

    您好、Ryan、

    设置 AQSFRC。 RLDCSF = 0x11为我实现了这个诀窍。 我正在将 PWM 立即加载与软件强制立即加载相混淆。 另一件让问题无法预测的事情是我在 DisablePWM ()函数之后设置了一个断点。 这会停止 PWM 计时器、以便直到下一个计时器/计数器事件才会加载软件强制值。

    感谢你的帮助。

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

    尊敬的 Gregory:

    很高兴它起作用了。 我现在将继续并关闭该主题。

    此致!

    Ryan Ma