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:AMIC110的 EtherCAT 问题

Guru**** 2484615 points
Other Parts Discussed in Thread: AMIC110, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/717325/tms320f28377s-ethercat-problem-with-amic110

器件型号:TMS320F28377S
主题中讨论的其他器件:AMIC110TMDSECATCNCD379DcontrolSUITE

您好、C2000冠军

我的客户使用 F28377S 评估 AMIC110 EtherCAT 解决方案。 但我们遇到了一些问题。  

我 使用 F28379D launchpad 和 AMIC110 EVM 运行 TMDSECATCNCD379D_EtherCAT_Reference 项目 SPIA 模式、这可以正常工作。 EtherCAT 可以在操作模式下工作并与 C2000进行通信。

但是、当我将项目迁移到客户 F28377s 电路板时、将 SPIA 更改为 SPIB 以及相关 的 ESC_SPI_INT_GPIO、但 SPIB 无法使用函数 HW_EscReadWord (test_read、test_addr)从 AMIC110读取数据; 以及无法初始化 AMIC110、无法在运行模式下工作。

调试后、我发现:

在 ESC_readSPI ()中使用不同代码的 SPIA 和 SPIB。 我不知道为什么。

2、即使在 F28377S 客户电路板中使用 SPIA、如果将 GPIO61设置为 SPISTE、它也不能工作、而是需要将 GPIO61配置为 GPIO 并运行为 CS、就像示例中的 GPIO22一样。 为什么?

// GpioCtrlRegs.GPBGMUX2.bit.GPIO61 = 0x3;
// GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0x3;
GpioCtrlRegs.GPBGMUX2.bit.GPIO61=0;
GpioCtrlRegs.GPBMUX2.bit.GPIO61=0;
GpioCtrlRegs.GPBDIR.bit.GPIO61=1;
//将 SPISTEAn 拉至低电平以启用芯片选择
GpioDataRegs.GPBSET.bit.GPIO61=1;

//在双核 LP Booster Pack 接头上、我们将 GPIO22用作芯片选择
//将 SPISTEAn 引脚启用为 GPIO (输出引脚)
GpioCtrlRegs.GPADIR.bit.GPIO22 = 1;
//将 SPISTEAn 拉至低电平以启用芯片选择
GpioDataRegs.GPASET.bit.GPIO22 = 1;

目前,SPIA 模式下的 SPI CLK 为5MHz,因此 SPIB 或***在 ESC_initSPIFIFO()中具有不同的 SPI 时钟设置。

我们可以设置的最大 SPI CLK 是多少、并使 EtherCAT 实时通信性能更好?

在我的测试中、只需要 SPIA 接口和 SPI_INT_GPIO、然后 EtherCAT 通信就可以正常工作。 那么、这意味着可以保存其他四个 GPIO 吗?

#ifdef USE_SPIA
#define ESC_SPI_INT_GPIO 29
#define ESC_SYNC0_GPIO 0
#define ESC_SYNC1_GPIO 0
#define ESC_RESET_ET1100_GPIO 0
#define ESC_EEPROM_LOADD_GPIO 0

5.是否有更详细的技术文档讨论了 C2000如何与 AMIC110协同工作? 例如、我不知道为什么 AMIC110需要 C2000进行初始化、以及如何使其在操作模式下工作。

谢谢!

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

    1.如果您引用 ESC_readSPI()中的 Set/Clear GPIO22代码,则该代码可用作不再受支持的 Launchpad EtherCAT Booster Pack 的芯片选择。
    使用SPI 连接 EtherCAT 的通信要求与 SPISTE 配置提供的硬件行为不同。 因此、使用 GPIO 配置的芯片选择。 不同的从器件可能需要不同的时序、并使芯片选择在特定时间变为低电平/高电平。
    请参阅 e2e.ti.com/.../490553
    此外、不确定您要查看的 HAL 代码版本(看起来较旧)、但可能希望比较/查看 controlSUITE 中的最新版本。
    3.很遗憾,我没有关于这方面的任何信息。
    4.您希望这些(或其中一些)能够从这些信息和功能中获益。 例如、当您初始化硬件时、您应该进行检查以确认 EEPROM 已加载。 需要进行复位以从 MCU 复位 ET1100。 SYNC0/1更适合调试、如果您想多路复用这些信号来查看示波器或其他内容、
    5.在 C2000方面,我没有任何信息。 我通知 AMIC110侧的工程师、看看他们是否需要在这里添加任何内容。

    此致
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Eric、您好、下面几点评论:
    - Q4)如果需要在直流模式下运行 EtherCAT,则需要 SYNC0/SYNC1 GPIO。 堆栈使用这些中断来实现具体功能。
    - Q5)据我所知、我们没有任何特定的文档。 但是、这里的过程与 ET1100的过程相同。 开发时考虑了 ET1100、我们使用的 C2000代码也基于 ET1100设置。

    谢谢、
    Paula