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.

[参考译文] F28M35H52C:C28 eCAP 胜出#39;t 捕捉任何内容

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/911506/f28m35h52c-c28-ecap-won-t-capture-anything

器件型号:F28M35H52C
Thread 中讨论的其他器件:controlSUITEC2000WARE

大家好、

问题

我正在尝试在 C28内核中启动 eCAP 外设、但无法使其捕获任何事件并完全耗尽创意... 在 CAP 寄存器中不写入任何内容、事件标志保持为0。 请帮助我找到问题。

设置  

通用信息

  • 引脚: PE0_GPIO24
  • 外设:eCAP1
  • SYSCLK:150MHz
  • 我使用 XDS100v2 JTAG 进行调试
  • 增量编码器用于通过 RS-485接收器向引脚提供脉冲

代码

ECap1Regs.ECCTL1.bit.CAP1POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP2POL = EC_FALLING;
ECap1Regs.ECCTL1.bit.CAP3POL = EC_RISING;
ECap1Regs.ECCTL1.bit.CAP4POL = EC_FALLING;
ECap1Regs.ECCTL1.bit.CTRST1 = EC_Delta_MODE;
ECap1Regs.ECCTL1.bit.CTRST2 = EC_Delta_MODE;
ECap1Regs.ECCTL1.bit.CTRST3 = EC_Delta_MODE;
ECap1Regs.ECCTL1.bit.CTRST4 = EC_Delta_MODE;
ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
ECap1Regs.ECCTL1.bit.prescale = EC_DIV1;
ECap1Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUCT;
ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
ECap1Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
ECap1Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;

这是直接从参考手册(第8.7.4.1段)中删除代码。 我还多次读取整个 eCAP 部分并验证了这一点。

我已检查的内容

  • 时钟被启用到 eCAP1、TSCTR 正在递增计数
  • GPIO 多路复用器:这是根据文档:GPAMUX2.GPIO24 = 1
  • 信号实际上会传入、我可以看到它在 GPADAT.GPIO24中随着调试器发生了变化
  • 信号可以路由到外设:我尝试使用此引脚上也提供的 eQEP、在几分钟内我可以进行递增/递减计数。
  • 我的同事正在使用 f28069、我让他启动调试器、启用 eCAP 时钟并设置 CAPLDEN 和 TSCTRSTOP 位。 它发挥了作用。 原因。 。 第一个。 请尝试。 我也尝试过同样的方法、但没有成功。
  • 我在 eCAP2上尝试了相同(以及许多其他)的设置、但也不起作用。
  • 我尝试了两种不同的板、采用不同的芯片修订版本:B 和 E
  • 我检查了是否没有其他引脚被多路复用为 eCAP1。

一个 sisimal:当我处理事件预分频器并将其连续设置为随机数时,有时会触发一个事件并加载 CAP 寄存器。

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

    您好 Jason、

    eCAP 设置看起来正常。 您能否尝试 C2000ware/controlSUITE 中的一个示例?

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

    您好 Santosh、

    感谢您的提示。 我检查了 C2000ware 示例、但不支持 F28M35。 外设与 f28069中的外设相同、因此我进行了此操作、但没有帮助。

    最后、我安装了 controlSUITE 的必要部分并检查了该示例。 我甚至不需要对其进行编译即可实现该解决方案:

    "GPTRIPxSEL 寄存器还必须用于允许 ECAP 模块在引脚上捕获数据。" (F28M35参考手册、第4.2.2章)

    在我的案例中: GpioTripRegs.gpTRIP7SEL.bit.gpTRIP7SEL = 24;

    在 eCAP 一章中、没有一个提到这一点(或 GPTRIP 寄存器)。 甚至在手册中的代码示例中也不是如此。 如果您有任何方法可以在手册中推送有关它的注释、请执行此操作。 我认为这对其他贫穷的灵魂可能有用...