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.

[参考译文] TMS320F28379D:EnDat 接口实际要求

Guru**** 2553260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/669803/tms320f28379d-endat-interface-real-requirments

器件型号:TMS320F28379D

您好!

我正在开发一个定制控制板、需要 EnDat 接口和2个旋转变压器。 为了非常快速地访问专用的分解器数字并行输出、我想以非常规的方式使用 EMIF 接口。 同时、我想使用相同的 emif1连接外部闪存。 因此、我需要异步接口的全部三个芯片选择(2个用于旋转变压器、1个用于闪存存储器)。 EMI1CS2只能在 GPIO34上复用。  
根据 sprui35 4.2.7和5、GPIO34似乎是 EnDat 方向控制的唯一可能选择。 同时、sprui71 (关于 tformat、使用相同的接口)第5节似乎有所不同:  

GPIO34用于 IDDK 和上的此用途
示例项目。 用户可以使用选择任何 GPIO
OUTPUTXBAR1多路复用器选项。

您是否确认可以使用其他引脚而不是 GPIO34? 在这种情况下、根据必须使用 OUTPUTXBAR1的事实、其他可能的引脚为:GPIO2、GPIO24、GPIO58。  

我对 EnDAT/BiSSC/tformat 接口的资源要求还有另一个问题:在相应的 sprui 中、EPWM4似乎专用于时钟生成。 但是、在初始化过程中、似乎必须修改其他 ePWM 的寄存器:

SPRUI35 (EnDat) 4.2.5  

启用 ePWM 实例1、2、3和4的时钟。
CpuSysRegs.PCLKCR2.bit.EPWM1 = 1;
CpuSysRegs.PCLKCR2.bit.EPWM2 = 1;
CpuSysRegs.PCLKCR2.bit.EPWM3 = 1;
CpuSysRegs.PCLKCR2.bit.EPWM4= 1;

SPRUI71 (tformat) 4.2.4

启用 ePWM 实例1、2、3和4的时钟。
tformatData.SPI = SpibRegs (SpibRegs);
pm_tformat_setupPeriph();

SPRUI37 (BiSSC) 4.2.6

启用 ePWM 实例3和4的时钟:
CpuSysRegs.PCLKCR2.bit.EPWM3 = 1;
CpuSysRegs.PCLKCR2.bit.EPWM4= 1;

那么第二个问题是:为什么我必须修改除数字4之外的其他 ePWM 的寄存器? 在使用 EnDat/tformat/BiSSc 接口时、是否可以自由使用 EPWM1 2和3而不受任何限制? 这个问题是相关的、因为我需要同时使用至少18个 PWM 通道、所以我需要至少9个专用 ePWM 周期。

我还有第三个问题的重要性较低。 这样做是否可以通过某种方式连接多个 EnDat 编码器? 我想对一些信号进行路由。 一种可能的方法是具有两个独立接口、并通过某些专用集成电路路由 EnDatclk、SPISIMO、SPISOMI 和方向控制。 您认为该解决方案可以进行补偿吗?

提前感谢

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

    您对 GPIO34的理解是正确的。 EnDat 和 tformat/BISS-C 协议的实现方式不同。 由于它是预编译的库、因此您必须使用用户指南中介绍的引脚。

    对于使用的 EPWM、不同协议的情况不同。 为这些模块启用时钟非常重要。
    这是因为可配置逻辑块(在库用户指南中介绍)链接到相应的 ePWM 实例、并且时钟在模块之间共享。 对于 Endat、您应该能够在应用程序中使用 ePWM 模块(EPWM4以外的模块)-但请确保时钟不会与库中的默认值发生变化。

    关于第三个问题、如果您通过选择一个编码器并通过路由相应的信号来一次使用一个编码器。 外部电路-是的、这是可行的。 但是、如果您必须同时执行2个接口、则现有库不可行。

    Bharathi。

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

    非常感谢您的回答!
    老实说、我没有完全理解。

    我能否制作一个类似于 IDDK 上的多功能(用于 EnDat、tformat 和 BiSS-C)硬件接口、但使用另一个引脚( 在 GPIO2、GPIO24、GPIO58中)代替 GPIO34? 它似乎是一个逻辑器件、因为在 EnDat 和 t 格式上、CLB 输出(TxEn)在 OUTPUTXBAR1上、OUTPUTXBAR1可以在这些其他引脚上进行多路复用。 例如、如果我要使用 GPIO24、我可以通过代入进行初始化:

    GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 1;//将 GPIO34配置为 EnDat TxEN

    其中:

    GpioCtrlRegs.GPAMUX2.bit.GPIO24=1;
    GpioCtrlRegs.GPAGMUX2.bit.GPIO24 = 0;

    关于 ePWM、假设我使用硬件接口作为 EnDat。 EPWM4是专用的、因此我无法将其用于其他目的。 是否可以不受任何限制地使用 EPWM1、EPWM2和 EPWM3? 我对 ePWM 同步的可能限制(通过同步链或 TBCLKSYNC=1)特别感兴趣。

    对于第三个问题、您认为我可以做编码器的"热插拔"之类的事情吗?
    向第一个编码器发送请求(通过将信号路由到第一个编码器)
    通过连接到多路复用器的 GPIO 引脚更改路由
    向编码器发送请求(现在是第二个)
    等等...
    您认为这会给系统带来一些问题吗? 比如同步丢失或一般的错误。

    提前感谢

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

    您好!

    EnDat 需要 GPIO34 -它是一个专用资源、不是用户可配置的、如 EnDat 文档中列出的那样。
    对于其他协议来说、这是不同的-可以通过 outputtxbar 进行配置-正如您正确指出的那样。

    "对于第三个问题、您认为我可以做一些事情、比如编码器的"热插拔"吗?"

    我认为不起作用-因为您可能需要在重新配置新编码器接口的软件之前完成复位周期。

    Bharathi。

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

    非常感谢您的快速回答!
    我希望将来对位置管理器接口的引脚限制能更加灵活:)