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.

[参考译文] TMS320F28377S:tms320f28377s eQEP QEPCTL.PCRM 问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/570727/tms320f28377s-tms320f28377s-eqep-qepctl-pcrm-question

器件型号:TMS320F28377S

您好!  

我正在编码一个归零例程、在此例程中、我想在正交编码器上找到精确的索引脉冲。  

我想使用数据表中的"reset on first index marker"选项。 为此、我设置 EQepsRegs.QEPCTL.PCRM = 2;但这不会执行任何操作...

我可以通过将 QEPCTL.IEI 位设置为1或将.PCRM 设置为0来获得要在索引标记上复位的位置、但这会每次复位编码器。

要使 PCRM = 2正常工作、我还需要做些什么吗?

谢谢

1月

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

    您好、Jan、

    您能更详细地解释一下吗、当您的设置 PCRM=2时会发生什么情况? 当您说它不起作用时、您意味着位置计数器没有复位?  

    以下是有关 PCRM=2时应达到的预期要求的说明:

    如果在正向运动期间发生索引事件、则位置计数器在下一个 eQEP 时钟上复位为0。 如果在反向移动期间发生索引事件、则位置计数器会在下一个 eQEP 时钟上复位到 QPOSMAX 寄存器中的值。 请注意、这仅在第一次出现时完成、之后位置计数器值不会在索引事件时复位;相反、它会根据最大位置进行复位。

    此致、

    Nirav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nirav、您好!
    确实... 位置计数器未复位。
    在平均时间内、我发现它正在复位、但仅在上电后的第一次... 因此、即使在调试期间重新启动后也不会如此。 因此、可能检测到的第一个索引在某个位置保留了一个位。 我不知道是否有方法可以重置它?

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

    您好、Jan、

    重新启动代码执行不会复位 eQEP 寄存器、您将需要执行 CPU 复位以清除任何设置位、而无需执行断电。 使用 PRCM=2的思路是记住第一个索引事件并仅重置位置计数器一次、而不必对任何后续的索引执行该操作、因此没有寄存器位会清除第一个索引事件、该寄存器位内置在硬件中、 只能通过 CPU 复位或断电来复位。

    此致、

    Nirav

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

    Nirav、您好!

    感谢您的回复。  

    我对这种方法的想法是:首先、我将一个滚珠轴驱动轴置于一个不精确的家用开关上(我在执行此操作时遇到了多个索引事件)。 然后、我搜索下一个索引事件作为我的准确原始位置(我可以使用索引事件标记作为标志来指示发生了此情况)。  

    但是、还有一些其他的非正常解决方案、因此我将在那时解决这个问题。

    此致、

    1月