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.

[参考译文] TMS320F28P559SJ-Q1:eCAP1 未在 GPIO24(引导引脚)上捕获 PWM–TMS320F28P55

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1599102/tms320f28p559sj-q1-ecap1-not-capturing-pwm-on-gpio24-boot-pin-tms320f28p55

器件型号: TMS320F28P559SJ-Q1

您好、

我正在使用 TMS320F28P55(64 引脚) 定制 ESC 板。 我想捕获  打开的 PWM 输入 (~50Hz、3.3V) GPIO24 、也是 BOOT 引脚 、使用 eCAP1 。 MCU 启动正常、我验证了 PWM 信号是否到达引脚。

我无法捕获 CAP1 CAP2 Cap3、但 TSCTR 会根据时钟配置增加。

    //Gpio init for Ecap input
    GpioCtrlRegs.GPAMUX2.bit.GPIO24 =  0;
    GpioCtrlRegs.GPADIR.bit.GPIO24  =  0;
    GpioCtrlRegs.GPAPUD.bit.GPIO24  =  0;

   void EscController::initEcap(){
    EALLOW;
    ECap2Regs.ECCTL0.bit.INPUTSEL = 0; // Use default ECAP1 input pin
    InputXbarRegs.INPUT1SELECT = 24;  // INPUT1 now gets data from GPIO6
    ECap2Regs.ECEINT.bit.CEVT4 = 1;      // Enable interrupt on 4th capture2
    ECap2Regs.ECCTL1.bit.CAP1POL = 0;    // Rising edge
    ECap2Regs.ECCTL1.bit.CAP2POL = 1;    // Falling edge
    ECap2Regs.ECCTL1.bit.CAP3POL = 0;    // Rising edge again (for full period)
    ECap2Regs.ECCTL1.bit.CAP4POL = 1;    // Falling edge2
    ECap2Regs.ECCTL1.bit.CTRRST1 = 1;    // Reset counter after CAP1
    ECap2Regs.ECCTL1.bit.CTRRST2 = 1;    // Reset after CAP2
    ECap2Regs.ECCTL1.bit.CTRRST3 = 0;    
    ECap2Regs.ECCTL1.bit.CTRRST4 = 1;    // Reset after CAP42
    ECap2Regs.ECCTL1.bit.CAPLDEN = 1;    // Load the time stamp to register
    ECap2Regs.ECCTL2.bit.CONT_ONESHT = 0;  // Continuous mode
    ECap2Regs.ECCTL2.bit.STOP_WRAP = 3;    // Stop at 4rd event
    ECap2Regs.ECCTL2.bit.CAP_APWM = 0;     // Capture mode
    ECap2Regs.ECCTL2.bit.SYNCI_EN = 0;     // Disable sync in
    ECap2Regs.ECCTL2.bit.SYNCO_SEL = 0;    // Pass through
    ECap2Regs.ECCTL2.bit.TSCTRSTOP = 1;    // Start counter
    ECap2Regs.ECCTL2.bit.REARM = 1;        // Arm the eCAP
    EDIS;
}
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    代码具有 eCap2、但我同时使用 eCAP1 和 ECap2 进行检查。

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

    HI RAM、

    您能否首先使用 SDK 中的 eCAP_ex2_capture_pwm.c 示例进行实验? 我无法重现您看到的问题、并且我使用的是 GPIO24、inputxbar1 和 eCAP2。

    您是否无法看到设置了任何 ECFLG 位?

    从配置角度看、一切都正常。  

    此致、

    Ryan Ma

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

    感谢您的答复。

    我正在测试 eCAP_ex2_capture_pwm.c 示例。 我仅更改了 GPIO 输入引脚;默认为 GPIO16 。 但是、我无法触发 ISR:

    __interrupt void INT_myECAP0_ISR(void)

    您是否能够看到中的任何一个 ECFLG 是否会置位?

    是的、我得到了 ECFLG = 0x0020 、这意味着 CTROVR = 1.

    e2e.ti.com/.../Screen-Recording-2025_2D00_12_2D00_18-114422.mp4

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

    您好、Ryan、

    我有以下疑问-

    1.您是否在 128 针或 64 针型号上进行过测试?

    2.我们在 GPIO24 中仅尝试了 GPIO 切换、但失败了。 这里提供了 GPIO 设置的屏幕截图、此处分享了结果的视频。

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

    HI RAM、

    我在 100 引脚型号上进行了测试。

    GPIO 翻转应该会起作用。 让我进一步研究一下这一点。

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

    HI RAM、  

    您是否可以共享引导模式引脚+连接到此引脚的 PWM 的原理图? 似乎发生的情况是、一些外部驱动元件使引导模式引脚保持在低电平。

    您当前正在运行的引导模式是什么?

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

    您好、Ryan、

    下图显示了 PWM 电路。 PWM_I/P 信号直接连接到 GPIO24。 PWM_I/P 和 MCU 引脚之间没有任何信号。

    2.对于引导模式,我们没有进行任何特殊的配置。 我们使用 JTAG 调试器、简单地使用 CCS IDE 进行调试并运行。 代码中没有专门针对引导模式的内容。

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

    您可以尝试对另一个具有 PWM 的 GPIO 进行采样吗? 您是否能够看到相应的 CAP1/2/3/4 更新?  

    似乎输入引脚正在由某个器件驱动。

    如果您可以对另一个引脚进行采样并获得结果、则切换回 GPIO24 但它不起作用、我想这是与 GPIO24 相关的特殊操作。

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

    您好、Ryan、

    我们尝试了 GPIO18 和 GPIO17、但没有任何用处。 它一直被拉低。  

    然后我们还尝试切换这些 GPIO 引脚但无法切换。

    然后、我们只是尝试将这些引脚的状态拉至高电平、但即使这样、我们也无法实现。 这些引脚甚至没有对地短路、请使用万用表进行检查。

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

    尊敬的 Sayandev:

    您是将 GPIO18 用作 X2 还是用作 GPIO? GPIO17 是否配置为输出?切换 GPIO 时没有看到任何内容?

    我刚刚做了另一个测试用例切换 GPIO17、我能够看到相应的 CAP1/2/3/4 更新以及相应的 GPADATA 寄存器更新。

    请参阅以下 GPIO 寄存器配置。

    您将哪个 inputxbar 用于 eCAP? 我正在使用 INPUTXBAR1、并将 GPIO 24 连接到该 inputxbar。 然后用一根线从 GPIO17 连接到 LaunchPad 上的 GPIO24。

    您能否确认以下 eCAP 配置?

    此致、

    Ryan Ma