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:无法从 CPU2读取 EPWM1模块#39;s TBCTR 寄存器值

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/978774/tms320f28388d-could-not-read-epwm1-module-s-tbctr-register-value-from-cpu2

器件型号:TMS320F28388D

您好!

我能够从  CPU1读取 EPwm1Regs.TBCTR (加减计数器)、但从 CPU2读取同一寄存器为零。 所有其他 EPWM1寄存器在 CCS 的 CPU2寄存器窗口中也显示为零。

EPWM1时钟由 CPU1提供(CPUSEL0.EPWM1 = 1)。 那么、这是否意味着只有 CPU1可以读取 EPWM1寄存器? 或者我需要在软件中配置的其他内容?

此致

Amulrass V

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

    您好!

    访问是根据 CPUSEL 值提供的、因此如果 EPWM1的 CPUSEL 值允许从 CPU1进行访问、则 CPU2将不具有访问权限。 您需要更改 CPUSEL 的值以提供对 CPU2的访问。

    此致、

    Vivek Singh

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

    您好、Vivek、

    有趣 的是、对共享外设的访问是根据 CPUSEL 值提供的。 所有其他共享外设也是如此吗?

    我知道大多数其他多核平台(如 PPC)不会限制任何 CPU 对共享外设的访问、即使在任何时候只有一个 CPU 可以控制或使用该外设。 这将会严重限制多核应用程序、就像我的情况一样。

    我需要从两个 CPU 访问 EPWM1寄存器、并且不想在运行时更改 CPUSEL。 此问题是否有任何解决方法?  

    此致

    Amulrass  

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

    您好!

    还有一件事。  在运行时修改 CPUSEL 是否不会导致 ePWM 模块的输入时钟出现任何毛刺脉冲?

    此致

    Amulrass V

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

    您好!

    [报价] 所有其他共享外设也是如此吗? [/报价]

    是的、所有由 CPUSEL 控制的外设都是如此。

    [引用] 我知道大多数其他多核平台(如 PPC)不会限制任何 CPU 对共享外设的访问、即使在任何时候只有一个 CPU 可以控制或使用该外设。 这将会严重限制多核应用程序、就像我的情况一样。 [/报价]

    您是对的、但在这种情况下、在访问之间进行仲裁、这使得时序至关重要的控制环路很难实现。

    [引用] 我需要从两个 CPU 访问 EPWM1寄存器、并且我不想在运行时更改 CPUSEL。 此问题是否有任何解决方法? [/报价]

    您需要从两个 CPU 访问相同的 ePWM 模块吗? 如果是、则在当前架构中不可能实现这一点。 您只需通过 IPC 传递信息。 我们有多个 ePWM 模块、如果有需要、您可以为 CPU1分配一些模块、为 CPU2分配其他模块。

    [引述] 还有一件事。  在运行时修改 CPUSEL 是否不会导致 ePWM 模块的输入时钟出现任何毛刺脉冲? [/报价]

    您需要禁用 ePWM 模块的时钟、并确保没有等待处理的从 CPU 到 ePWM 模块的访问来切换 CPUSEL、否则可能会导致干扰。

    此致、

    Vivek Singh  

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

    您好、Vivek、

    我对你的上述答复有一点看法:

    "您是对的、但在这种情况下、在访问之间进行仲裁、这使得时序至关重要的控制环路很难实现"。

    例如、EPWM1模块分配给 CPU1、EPWM2模块通过 CPUSEL 分配给 CPU2。 我认为、由于所有 ePWM 模块共享公共网桥、因此在 CPU1访问和 CPU2访问之间会发生仲裁。 此外、CPU1和 CPU2访问之间的仲裁发生在连接到同一桥的不同外设之间。

    我在这里缺少什么吗?

    此致

    Amulrass V

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

    您好!

    [引用] 例如、EPWM1模块分配给 CPU1、EPWM2模块通过 CPUSEL 分配给 CPU2。 我认为、由于所有 ePWM 模块共享公共网桥、因此在 CPU1访问和 CPU2访问之间会发生仲裁。 此外、CPU1和 CPU2访问之间的仲裁发生在连接到同一桥的不同外设之间。 [/报价]

    不可以、在这种情况下、由于 CPU1和 CPU2是不同的总线、因此仲裁不会产生影响。 桥是多路复用器和其他逻辑的组合、不负责仲裁。

    此致、

    Vivek Singh