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.

[参考译文] CCS/TMS320F2.8377万S:ECAP_CAPTY_PWM_cpu01引脚未输出PWM

Guru**** 2562120 points
Other Parts Discussed in Thread: C2000WARE, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/634282/ccs-tms320f28377s-ecap_capture_pwm_cpu01-pins-are-not-outputting-pwm

部件号:TMS320F2.8377万S
主题中讨论的其他部件: C2000WAREcontrolSUITE

工具/软件:Code Composer Studio

我尝试在 Code Composer Studio的TMS320F2.8377万S微芯片上使用示例项目“ECAP_CAPACT_PWM_cpu01”。 我正在尝试生成PWM。 该项目正在运行,但我已使用示波器测试了板上的每个引脚,没有一个引脚输出PWM。

我需要在示例项目上设置什么才能生成PWM输出?

我希望安排屏幕共享,并在正确设置此项目时获得帮助。

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

    您应该希望GPIO4上会出现ePWM3。 连接仿真器,加载代码,然后开始运行代码后,将会发生这种情况。

    您使用的是什么硬件? 这是TI套件/EVM还是定制硬件?

    您可以通过查看表达式窗口中的GPIO mux寄存器来验证GPIO mux是否设置正确。 对于GPIO19,您可以查看GpioCtrlRegs.GPAMUX1.bit.GPIO4和GpioCtrlRegs.GPAGMUX1.bit.GPIO4。

    您还可以运行其他一些ePMW示例,以查看是否可以使这些示例发挥作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用的是TI官方Hercules Launchpad TMS320F2.8377万S。

    我已经测试了GPIO4。 引脚驱动高电平,但不像PWM那样振荡。

    我想安排一个屏幕共享,因为这是解决问题的最佳方式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想请求一个屏幕共享。 有人能在多短时间内与我联系?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Derek,

    您能否说明您拥有的启动板(拍摄照片可能会有帮助)。

    Hercules是一系列面向安全的MCU,具有ARM 'R'系列内核。 请参阅此处:
    www.ti.com/.../launchpads.page

    C2000是面向实时控制的MCU系列。 请参阅此处:
    www.ti.com/.../launchpads.page

    TMS320F2.8377万S无疑是C2000部件号,我们确实有一个相应的启动板(市场营销系列是'Delfino'),但我们需要在其他地方为您提供帮助,以便对Hercules Launchpad进行故障排除。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是一张微型芯片的照片,以及它所放入的盒子。

    我的时间已经不能用了。 您能否让某人通过屏幕共享与我联系,并帮助我设置并使此PWM模块正常工作? 我可以访问的平台有Skype,Google Hangouts和Team Viewer。  如果您有另一个,我很乐意设置它。

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

    您好,Derek,

    好的,感谢您发布套件信息。  

    我们仅限于通过e2e提供支持,但我们将尽我们所能提供支持。

    ----------------

    您说销驱动器高? 是否仅在您加载并运行代码后才会出现此问题?  

    ----------------

    您可以通过执行以下操作手动切换销钉以验证连接:

    从具有位字段定义的任何项目启动调试配置,然后启动'connect',再启动'load program'(或加载符号)

    (.\ti\c2000Ware_1_00_02_00\device_support\f2837xs\examples\CPU1 \ECAP_CAPT_PWM\cpu012837 \ECAP_CAPT_PWM\cpu01项目应该可以满足此要求)

    然后在 “表达式”窗口中,设置

    • GpioCtrlRegs.GPAMUX1.bit.GPIO4到0
    • GpioCtrlRegs.GPAGMUX1.bit.GPIO4 到0
    • GpioCtrlRegs.GPADIR.bit.GPIO4到1

    这将GPIO4配置为通用输出。  然后,您应该能够通过更改直接控制输出状态

    • GpioDataRegs.GPADAT.bit.GPIO4

    在“表达式”窗口中(1=高,0=低):  

    ----------------

    您尝试运行的软件是来自C2000ware,controlSUITE还是其他地方?  如果您尚未下载C2000ware的最新版本(C2000Ware_1_00_02_00),最好下载。

    ----------------

    您是否运行了更基本的示例?

    \ti\c2000\c2000Ware_1_00_02_00\device_support\f2837xs+示2000示例2837例\CPU1\flinky

    这是一个很好的检查方法,因为如果您的目标配置/项目没有定义"_LAUNCHXL_F2.8377万S"(这可能会导致其他项目出现问题),则LED不会闪烁。

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

     我正在运行来自controlSUITE的"ECAP_CAPT_PWM_cpu01"。 下面是我的示波器的屏幕截图,显示GPIO4被驱动为高电压,并保持3.3 电压的恒定输出。

    我尝试运行“盲”示例,一旦我在 项目设置中定义了“_LAUNCHXL_F2.8377万S”,LED就会按预期闪烁。

    我 也在"ECAP_CAPACT_PWM_cpu01"的设置中定义了"_LAUNCHXL_F2.8377万S",但应该振荡的引脚(GPIO4上的EPWM3a)仍仅被驱动为高电平,如屏幕截图所示。

    您发送给我的文档和建议对我没有帮助。 TI技术支持部门的一封电子邮件告诉我,我可以通过在e2e上发布来请求屏幕共享,因此我知道有人可以与我进行屏幕共享。 我收到的电子邮件如下

    "您好,Derek,

    然后检查系统时钟。 检查PLL是否正确锁定,以及设备是否以所需的SYSCLK频率运行。

    InitSysCrtl();  在此函数中,有一个调整PLLSYSCLK的函数,它与SYSCLK相同。

    InitSysPll (XTAL_OSC,IMULT_40,FMULT_1,PLLCLK_BY_2);// 10 MHz* 40 * 1/2   ->然后SYSCLK以200MHz运行

    查看以下建议:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/534845/1947860#1947860</s>53.4845万 194.786万194.786万

    很抱歉,我无权进行任何屏幕共享。 TI政策。 要申请该服务,请在e2e论坛上在线发布C2000芯片: https://e2e.ti.com/support/microcontrollers/c2000/f/171 ,如果个人同意,您可以脱机进行对话,然后继续进行。

    此致,

     

    Kishen Someshwar
    TI应用支持
    美国客户支持中心
    512-434-1560"

    请将我转至能够为我提供此屏幕共享服务的任何人。

     

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

    我们也没有授权执行此操作。

    我已经通过实验证明,即使CPU未运行,以下情况也会导致GPIO4由于ePWM而发生切换:

    EALLOW;
    gpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1;//将GPIO4配置为EPWM3A
    CpuSysRegs.PCLKCR2.bit.EPWM3 =1;//ePWM时钟已启用
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;//ePWM时钟门控
    EPwm3Regs.TBCTL.bit.CTRMODE = 0;//ePWM UP计数
    EPwm3Regs.TBPRD = 250;//ePWM周期= 250 ePWM时钟= 500 SYSCLK
    EPwm3Regs.AQCTLA.bit.PRD = 3;//在ePWM期间匹配时切换GPIO4
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;//启动ePWM时钟
    EPwm3Regs.TBCTL.bit.FREE_SOFT = 3;//ePWM自由运行

    您可以运行此代码或直接将这些寄存器设置输入到“表达式”窗口中。 更改TBPRD将更改频率。

    它们与您正在运行的示例之间的关键区别是'FREE_SOFT =3'。 这使得ePWM时基可以继续运行,即使在CPU停止时也是如此(如果暂停代码,代码结束或代码遇到SW或HW断点,就会发生这种情况)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外,从文档中我可以看出(很遗憾,这里没有F2.8377万S Launchpad),这应该是您想要的引脚:

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

    谢谢,您发送给我的代码示例行正在帮助我取得进展。 现在我可以看到PWM振荡。 我仍然卡住,无法更改占空比。

    您是否知道要写入哪个寄存器来设置占空比? 我的理解是它是CMPA,但是当我插入行"EPwm2Regs.CMPA.All"时,PWM不会以任何视觉方式受到影响。 我已尝试将其设置为多个值,但占空比保持不变。 下面是我正在使用的代码:

    EALLOW;
    gpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1;//将GPIO4配置为EPWM3A
    CpuSysRegs.PCLKCR2.bit.EPWM2 = 1;//ePWM时钟已启用
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;//ePWM时钟门控
    EPwm2Regs.TBCTL.bit.CTRMODE = 0;//ePWM UP计数
    EPwm2Regs.TBPRD = 25;//ePWM周期= 250 ePWM时钟= 500 SYSCLK
    EPwm2Regs.AQCTLA.bit.PRD = 3;//在ePWM期间匹配时切换GPIO4
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;//启动ePWM时钟
    EPwm2Regs.TBCTL.bit.FREE_SOFT = 3;//ePWM自由运行
    EPwm2Regs.CMPA.ALL = 6400;
    EDIS;

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

    您好,Derek,

    ePWM输出可以切换,驱动高电平或从各种事件驱动低电平。  目前,导致输出状态更改的唯一事件是:

    EPwm2Regs.AQCTLA.bit.PRD = 3;//在ePWM期间匹配时切换GPIO4

    这不取决于comare A或B的设置

    如果您查看AQCTLA寄存器中的其他字段,您将看到您可以在计时器周期的不同点引起各种状态变化。  这些事件包括基于比较A和B的事件

    请注意,这是因为  

    EPwm2Regs.TBCTL.bit.CTRMODE = 0;//ePWM UP计数

    ePWM计时器仅在计数。 您可以通过将计时器设置为向上计数模式来获得更大的灵活性。

    另请注意,此寄存器控制ePWM2 (当前为GPIO4)的A输出,但也有一个AQCTLB寄存器,可用于从同一时间基准控制第二个ePWM引脚(GPIO5)。 A和B输出都可以执行期间之外的操作,零,比较A和比较B事件,因此使用比较B来控制GPIO4占空因数同样有效。   

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

    从您发送的代码片段中,您的TBPRD值< CMPA值。 使用此配置时,您的TBCTR将永远不会到达CMPA,因为当TBCTR = TBPRD时,它会被重置。 这就是您看不到占空比有任何变化的原因。

    设置您的TBPRD > CMPA,并根据您的要求将AQCTLA.CAU配置为切换/清除/设置。 这应该会改变重复周期。 请在TRM的PWM一章中的AQCTLA寄存器描述中找到有关这方面的更多信息。

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

    我的代码现在如下所示:

    "

    EALLOW;
    gpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1;//将GPIO4配置为EPWM3A
    CpuSysRegs.PCLKCR2.bit.EPWM2 = 1;//ePWM时钟已启用
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;//ePWM时钟门控
    EPwm2Regs.TBCTL.bit.CTRMODE = 2;//ePWM向上/向下计数
    EPwm2Regs.TBPRD = 10万;//ePWM周期= 250 ePWM时钟= 500 SYSCLK
    EPwm2Regs.AQCTLA.bit.PRD = 3;//在ePWM期间匹配时切换GPIO4
    EPwm2Regs.AQCTLA.bit.CAU = 3;
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;//启动ePWM时钟
    EPwm2Regs.TBCTL.bit.FREE_SOFT = 3;//ePWM自由运行
    EPwm2Regs.CMPA.ALL = 7.5万;
    EDIS;"

    我已将TBPRD设置为高于CMPA,将TBCTL设置为上升-下降计数,并将AQCTLA设置为切换信号。 我仍然无法更改占空比。

    我写的是正确的寄存器吗? 现在,我尝试将占空比设置为"EPwm2Regs.CMPA.ALL = 7.5万;"。

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

    您好,Derek,

    查看文档并查找TBPRD和CMPA的字段宽度(以位为单位);我很确定这些字段当前超出范围。

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

    我目前正在技术参考手册中查找射野宽度。

    同时,我认为“EPwm2Regs.CMPA.ALL”可能不是设置占空比的正确寄存器。 您能否验证是否存在? 如果不是,我应该写信给哪个注册表?

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

    CMPA或CMBB是控制占空比的好选择。 有了CMPA,它将是以下几行内容:

    *TBPRD匹配将输出状态设置为高
    *CMPA匹配将输出状态设置为低(或切换也会起作用)

    如上所述,CMPA需要小于TBPRD,并且两者都需要小到足以纳入其寄存器的值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在,我将TBPRD设置为1000,CMPA设置为250。 理论上,这应该给我一个25 % 占空比,但它仍然是一个完美的50 %。

    我正在使用的".all"后缀又如何? (CMPA.ALL)后缀是否正确?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    无论我将CMPA设置为什么值,占空比都不会改变。 是否有什么因素阻止CMPA影响PWM?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Derek,

    也许尝试一下您已经在工作的东西,但是

    EPwm2Regs.AQCTLA.bit.PRD =不执行任何操作
    EPwm2Regs.AQCTLA.bit.CAU =驱动ePWM高
    EPwm2Regs.AQCTLA.bit.CAD =驱动ePWM过低
    EPwm2Regs.TBPRD = 1万
    EPwm2Regs.CMPA.ALL = 1到9999范围内的不同值

    通常,确保TBPRD < 6.5536万和0 < CMPA < TBPRD