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.

[参考译文] TMDXIDDK379D:集成EtherCAT从属堆栈与驱动器开发套件TMDXIDDK379D

Guru**** 2535620 points
Other Parts Discussed in Thread: TIDM-DELFINO-ETHERCAT, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/655675/tmdxiddk379d-integrating-ethercat-slave-stack-with-drive-development-kit-tmdxiddk379d

部件号:TMDXIDDK379D
主题中讨论的其他部件:TMDSECATCNCD379DTIDM-Delfino-EtherCATcontrolSUITE

您好-我一直在使用驱动器开发套件IDDK 2.0。  我还使用过TIDM-Delfino-EtherCAT参考设计,并在我的TMDSECATCNCD379D控制卡上使用回声示例。  我的目标是将这两个项目集成在一起,以便我可以通过EtherCAT现场总线控制IDDK。  我真正想要启动的就是向IDDK发送UDINT命令并监控UDINT感应信号,这样我就可以按 实际情况使用EtherCAT的大部分参考设计。  我想知道是否有人可以引导我参考一些示例或建议如何将这两个项目合并在一起。

1)是否有任何包含对EtherCAT从属堆栈支持的IDDK Code Composer项目?

2)是否可以在酷睿1上运行IDDK任务,并在双核Delfino的酷睿2上运行EtherCAT?  如果是,我需要为EtherCAT参考设计创建什么模式才能使其在CPU2上运行?

提前感谢您的建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin,
    controlSUITE中的TMDSECATCNCD379D套件软件支持运行EtherCAT从属堆栈,该套件可以插入IDDK,代替常规controlCARD,从而将EtherCAT功能添加到IDDK。

    我们目前在controlSUITE中没有组合的IDDK + EtherCAT示例,但用户应该能够通过定义所需的输入/输出变量并将所需信息从EtherCAT输入/输出变量传递到IDDK控制环路来实现这一点。

    应该也可以在内核2上运行EtherCAT,只需确保将用于中断的Async接口(EMIF1)和IOS配置为可从CPU2访问,我尚未测试此组合,但我没有预见到任何显示限位器。 无法从CPU2访问EMIF2。

    如果您有任何疑问,请告知我们。

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

    您好,Santosh–我能够将 TIDM-Delfino-EtherCAT 参考设计软件移植到CPU2,并在CPU1上与我的IDDK电机控制代码一起运行。  我使用EtherCAT代码的SPI闪存配置完成了此操作。  作为验证,我注释了ESC APPL_Application()函数中的'echoback'代码行,其中SpeedPosFbk被设置为SpeedPosReq,并将此操作移动到CPU1。  这证明了能够在TwinCAT中设置值,将其传递到CPU2上的ECAT从属设备,将其通过共享内存传递到CPU1,然后将其通过共享内存发送回CPU2,再通过不同变量发送到TwinCAT。

    但是,当我试图从CPU1调用IDDK函数EncoderSuite()以尝试将我的电机位置发送到ECAT主控器时,我确实遇到了问题。  我使用的是BIS-C位置编码器,它在CPU1上使用SPI-B。  我认为我的问题与CPU1和CPU2都使用SPI外设有关。  我认为我可以接受,因为IDDK代码在CPU1上使用SPI-B,而EtherCAT堆栈在CPU2上使用SPI-C。  但是,我的问题显然与同时运行两个SPI外设有关。  现在出现的情况似乎是BIS-C代码在while循环中挂起,因为它没有获得成功的SPI Rx。  您是否有任何可能 发生此问题的线索?

     

    我实际上更喜欢使用EMIF配置来运行ECAT从属堆栈,但这对我也不起作用。  某种情况阻止 了TIDM-Delfino-EtherCAT 参考设计项目的EMIF配置直接从CPU1上的controlSUITE进行开箱即用。  此项目一直运行到HW_Init()(第84行)中的“等待ESC启动”DO-while循环。  变量u16PdiCtrl从不等于0x08或0x05。

     

    顺便说一句,我使用  是TMDSECATCNCD379D套件控制卡,并且在测试任何配置时,我始终确保EMIF/SPI开关在EtherCAT子板上的正确位置。  如果我可以使此基线EMIF解决方案正常工作,那么我可以将其以与我执行SPI配置相同的方式移植到CPU2,然后可能SPI问题变得没有实际意义。

     

    因此,我的问题是:

    1. 在CPU2上运行***时,在CPU1上运行SPIB可能会导致什么问题
    2. 什么原因可能会导致基线回声跟踪参考设计ASYNC16配置卡在其所在位置?

     

    提前感谢您的帮助。

    Kevin Alstrin

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

    我需要咨询这里的一些人,以了解IDDK上BISS位置编码器的SPI使用情况,因此我会在这里告知您是否需要考虑硬件/软件的冲突。

    关于EMIF/Async 16问题-所提供的TMDSECATCNCD379D项目应能正常工作。
    1.>首先,您确保EtherCAT适配器板上SW1上的开关1和2指向EMIF1。
    2.>如果您正在处理EtherCAT解决方案参考项目或PDI HAL API Test App项目,请确保为ASYNC16构建正确的构建配置(如果您右键单击项目并导航至构建配置, 您必须选择Build config 1或2)
    3.>您已使用提供的ASYNC16 ESI文件对从属节点EEPROM进行编程。

    您能否说明您正在使用哪个参考CCS项目来测试EMIF/ASYNC16 SW? 您是否也浏览了controlSUITE (C:1.0)中提供的SPRUIG9参考文档?


    此致
    Santosh Athuru
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin,
    在BISS的SPI-B使用中,您是否能够在没有EtherCAT的情况下使其独立工作? 在这种情况下,我看不到SPIB和***使用之间有任何信号冲突。 您是否检查过BISS和EtherCAT之间是否存在任何信号冲突?

    必须是分配外围设备/IOS所有者到相应CPU的软件?

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

    您好,Santosh:

    我们能否集中精力解决针对新手的EMIF/Async 16问题?  我已验证以下内容:

    1. EtherCAT适配器板SW1上的开关1和2指向“EMIF”。
    2. 我正在构建构建配置2“F2837xD_CCARD_IMIF_RAM”。
    3. 我已使用ASYNC16 ESI文件对从属节点EEPROM进行编程。
    4. 是的,我仔细地遵循了SPRUIF9和SPRUIG9。

    PDI_hal_test_app和TMDSECATCNCD379_EtherCAT_Reference项目在运行时的行为方式相同。  他们都在同一时刻挂着。  在注释“现在等待EEPROM加载”附近有一个DO-while循环。  这是PDI_hal测试应用程序项目中etherCAT_SLAVE_C28x_hal.c的第1367行。  函数调用ESC_readWordNonISR(0x0140)从不返回0x08,因此程序卡在此处。  相反,与0xFF位掩码相比,此读取返回0x88。  EMIF内存寻址是否可能关闭?  这些项目默认使用EMIF1。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin,
    当然,控制卡构建配置1和2使用EMIF2。 不是EMIF1,PDI HAL API Test应用程序有一个拼写错误,说它在构建配置注释中使用EMIF1,但如果您查看HAL.C行975至行979,则EMIF1未被选中。

    您能否验证EtherCAT主设备上的ESC内存,请同时验证寄存器0x140内容以及主设备上的EEPROM内容?

    此致
    Santosh Athuru
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin,
    还要确保子卡紧贴在J9上,有时可能存在对齐错误,这可能会导致我们看到奇怪的事情。

    此致
    Santosh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Santosh,
    我可以验证ESC主控制器中的ESC内存是否如您所愿。 特别是在偏移0x0140时,我看到在TwinCAT中PDI Ctrl为0x0E08 (dec 3592)。 我还验证了子板在J9中是否正确就位。 我之前就排错了排字。 我知道我们正在使用EMIF2。
    谢谢!
    Kevin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin
    我在设置中重新验证,我正确读取了0x0e08。 您是否可以从IDDK板中取出TMDSECATCNCD379D套件,然后使用微型USB电缆从顶部为板供电并检查EMIF操作?

    这会将问题隔离到插入IDDK时的信号争用,我们可以从那里将问题向前推进。 我目前没有IDDK来测试它。


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

    Santosh,

    很好的捕获。 这是问题。  控制卡不在IDDK插槽中时,ASYNC16工作正常。  回顾过去,我发现《战略和行动计划》第4.2 段对此提出了警告:

    我检查了原理图,发现用于EMIF数据的GPIO (通过控制卡路由到J9) 也用于通过HSEC连接器连接到IDDK上的正交编码器和sin / cos位置接口。  因此,由于硬件限制,使用EMIF似乎无法利用双核处理器运行EtherCAT和IDDK控制代码。  但是,对于SPI接口,它仍然是可行的。  4个SPI信号似乎直接在MCU和J9之间传输。

    谢谢!

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin,
    感谢您的确认。 是的,这似乎是一个限制。 我正在与团队一起检查目前或未来设计中是否还有其他事情可以做。 同时,您是否又回到SPI?

    此致
    Santosh Athuru