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.

[参考译文] TMS320F28388D:使用 ePWM 生成 adcscoa、并在内部将其路由到 eQEP 的选通输入以锁存位置计数

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1508112/tms320f28388d-using-epwm-to-generate-adcsoca-and-internally-route-it-to-the-strobe-input-of-eqep-to-latch-the-position-count

器件型号:TMS320F28388D

工具/软件:

您好:

这个问题与 TMS320F28388D (337 BGA 引脚)处理器有关。

我的目标是仅使用内部信号路由来实现以下目标:从 PWM 生成 adcsoca 信号并将其用作 eQEP 的选通输入、以在每个 adcsoca 上锁存 eQEP 计数值。  我希望将所有信号路由(例如、从 ePWM 到 eQEP 的 adcsoca)保持在芯片内部、从而无需配置任何 GPIO 引脚。

(此部件似乎起作用...) 在 Code Composer Studio 的寄存器窗口中、程序开始运行时、ETFLG.SOCA 引脚变为高电平、因此我认为正在生成 adcscoa。

(此部件似乎起作用...) 在 Code Composer Studio registers 窗口中、eQEP 的 qposcnt 值会根据输入信号的变化而按预期变化。

(此器件似乎不起作用...) 从不填充 eQEP qposslat 寄存器、这似乎表明选通锁存中的某个器件未按预期工作。

TRM 似乎表明、如果 ePWM 正在生成 adcsoca 信号、那么只需将其选为 eQEP 的选通输入、就应该在每次出现 adcsoca 信号时锁存 eQEP qposcnt。

eQEP 寄存器包含以下值:

QEPCTL = 0xD008

QEPSTROBESEL = 0x2

QEPSRCSEL = 0x1075

我们非常感谢您深入了解为什么这不起作用。

谢谢!

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

    您好、Chris、

    这有一个解决方案。 请确保将 QEPSRCSEL.BIT.QEPSSEL 设置为1。

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1280604/tms320f28388d-the-configuration-of-qposslat

    下面是 e2e 主题作为参考。

    此致、

    Ryan Ma

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

    您好、Ryan。  感谢您的答复。

    我将 QEPSRCSEL.QEPSSEL 设置为1 (我也尝试了0、2和0xFFFF)、并且 eQEP 仍然不会锁存选通信号。

    eQEP 选通设置为 adcscoa、由 EPWM 生成。  两个 ADC 模块也可覆盖 adcscoa、并通过寄存器窗口手动将 ETSEL.SOCAEN 设置为0会导致 ADC 模块停止更新。  因此、ePWM 似乎正在生成 adcsoca 信号、至少会将其发送到 ADC 模块、但 eQEP 并未锁存在 SOCA 上。

    然而、eQEP 通过两个 cmpss 模块的内部路由获取 A 和 B 信号、并且 eQEP 计数会根据正交信号发生变化、但 eQEP 选通似乎不起作用。

    我在一份文档中看到、将 adcsca 分配给 eQEP 选通仅在 eQEP 版本2及更高版本中可用。  根据寄存器窗口、我得到的 tms320f28388d 的 REV.MINOR = 1和 REV.MAJOR = 1。  有道理吗?  此 tms320f28388d 是否应该能够将来自 ePWM 的 adcscoa 分配给其选通信号并在芯片内部路由?

    谢谢、

    Chris

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

    您好、Chris、

    该器件能够将 ADCSOCA 用作选通信号以锁存计数器。

    您能否通过读取 QFLG.SEL 寄存器完全设置好来确认? 它始终读回0吗?

    确保为用于 ADCSOCA 的相应 PWM 启用 SYSCTL.ADCSOCOUTSELECT。

    此致、

    Ryan Ma

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

    您好、Ryan、

    如果 PWM13SOCAEN = 1 (如下面的粘贴所示)、则设置了 QFLG.SEL、但选通锁存寄存器从未改变。

    如果我添加以下内容、eQEP 选通锁存寄存器将会更新:
    SyncSockRegs.ADCSOCOUTSELECT.BIT.PWM13SOCAEN = 1;  

    这是否是在内部创建/路由 adcsoca 信号所需的设置?  它有什么作用?

    谢谢、

    Chris

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

    这是必需设置。 它能够生成 ADCSOCA/B 信号。

    此致、

    Ryan Ma

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

    感谢您的帮助、Ryan!

    您能帮助我了解我错过了 TRM 中的哪些信息、会让我知道这是必需的吗?  我已经阅读了 TRM 的第3节很多次、仍然无法弄清楚我错过的内容、这会让我看到 PWM13SOCAEN = 1是必需设置、也不是实际作用。

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

    您好、Chris、

    为混淆而道歉。 我来提交工单、以便在 TRM 中进一步阐明这一点。  

    该寄存器是系统控制配置的一部分。 以下寄存器中只有定义了该功能的地方。

    我将在我们的 TRM 的系统控制部分中了解在何处添加有关此功能的更多详细信息。

    此致、

    Ryan Ma

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

    Ryan、

    感谢您帮助我理顺这件事。

    此致!

    Chris

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

    欢迎 Chris! 感谢您提请我们注意这一点。

    此致、

    Ryan Ma