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.

[参考译文] AM2434:AM2434 EtherCAT 演示:IGH 主站无法通过 FOE 协议将文件发送到从站

Guru**** 2393395 points
Other Parts Discussed in Thread: AM2434

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1360079/am2434-am2434-ethercat-demo-igh-master-failed-to-send-file-to-the-slave-over-foe-protocol

器件型号:AM2434

您好、TI 专家:

我在尝试通过 FOE 协议发送文件时遇到问题。 我的器件是 TMDS243GPEVM、我正在使用的 SDK 版本为 mcu_plus_sdk_am243x_08_06_00_43。 EtherCAT 主站版本为 IGH EtherCAT 主站1.6.0-RC1。 CCS 工程是从 SDK 示例 ethercat_slave_cia402_demo_am243x-evm_r5fss0-0_freertos_ti-arm-clang 导入的。

我通过添加几行代码来注册 FOE 协议的回调函数、对演示项目进行了一些修改。  SDK 中定义的回调函数:mcu_plus_sdk_am243x_08_06_00_43\examples\industrial_comms\ethercat_slave_demo\common\os\freertos\esl_foeDemo.c.

我将使用 IGH fooe_write 命令将文件发送到 AM2434。 但是、在输入命令时、我遇到了错误"无法通过 foe 写入:fooe_timeout_error"。

为了尝试诊断此问题、我使用 Wireshark 捕获了网络数据包。 从器件似乎没有对最后一个数据包做出"ACK"响应、导致主 FOE 超时错误。

最后一个数据包为108字节、而之前的数据包为244字节。 数据包大小的这种差异是否就是从器件无法处理该帧的原因?

您可以帮助我缩小此消息的范围吗?

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

    您好、有人能就如何解决此问题提供一些建议吗?

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

    尊敬的赵飞:

    很抱歉这么晚才回复。 我认为这与下面的 E2E 中提到的问题类似: https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1340959/am2432-error-occurs-when-using-igh-ethercat-master-ver-1-6-0

    如上链接所述、  默认情况下、IGH 主器件不适用于 TI ESC、因为该配置使用的是非最优 PDO 配置、需要 TI ESC 将每个器件的过程路径延迟增加400ns。

    为了增加过程路径延迟、您可以执行以下操作:

    • 您可以为其设置值  TIESC_PORT0_TX_DELAY_200_MHz_CLOCK  。  tiescbsp.h  。  {SDK_directory}/source/industrial_comms/ethercat_slave/icss_fwhal  最终目的  0x98 . 这是上述代码片段。 行4是所提到的从0x48到0x98的更改。  
      #if ENABLE_MULTIPLE_SM_ACCESS_IN_SINGLE_DATAGRAM
      #define TIESC_PORT0_TX_DELAY_200_MHZ_CLOCK    0x98
      #else
      #define TIESC_PORT0_TX_DELAY_200_MHZ_CLOCK    0x98
      #endif
      #define TIESC_PORT1_TX_DELAY_200_MHZ_CLOCK    TIESC_PORT0_TX_DELAY_200_MHZ_CLOCK
      请注意、进行上述更改后、需要重新构建 fwhal 库文件。

    请告知我们此权变措施是否对您的情况有效。

    此致、

    亚伦  

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

    大家好、 

    感谢您的答复。 我尝试了你建议的方法,但它不起作用,问题仍然存在。

    您可以设置的值  TIESC_PORT0_TX_DELAY_200_MHz_CLOCK  。  tiescbsp.h  。  {SDK_directory}/source/industrial_comms/ethercat_slave/icss_fwhal  最终目的  0x98 . 这是上述代码片段。 行4是所提到的从0x48到0x98的变化。

    关于 FOE 部分、我尝试了检查源代码。 我从 ssc_v5i13获得了源代码、但无法找到名为"EC_API_SLV_xxx"(例如 EC_API_SLV_Foe_cbRegisterWriteFileHandler)的函数的源代码。 我有几个问题:

    1. 在哪里可以找到名为"EC_API_SLV_xxx"的函数的源代码?

    2. 名为"EC_API_SLV_xxx"的函数的源代码与 SSC_V5i13中的 SSC 源代码之间存在什么关系? EC_API_SLV_xxx 的底层实现是否仍然基于 SSC?

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

    我尝试了您建议的方法、但该方法无效、问题仍然存在。
    • 您能尝试写入该值吗 0x98  写入寄存器0x30090E10和 0x30090E12。 (更新值后、将器件与主器件重新连接)
    我有几个问题:
    • 我已就您的问题通知堆栈团队。 会尽快回复您。

    此致、

    亚伦  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="483122" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1360079/am2434-am2434-ethercat-demo-igh-master-failed-to-send-file-to-the-slave-over-foe-protocol/5203392 #5203392"]
    • 在哪里可以找到名为"EC_API_SLV_xxx"的函数的源代码?

    • 名为"EC_API_SLV_xxx"的函数的源代码与 SSC_V5i13中的 SSC 源代码之间存在什么关系? EC_API_SLV_xxx 的底层实现是否仍然基于 SSC?

    [报价]


    1.) 遗憾的是、由于栈本身是专有软件和闭源代码、因此不为栈的 API 函数提供源代码。

    2.) 出于1中提到的原因、我们无法提供有关栈 API 确切实现的详细信息。 但是、SSC 用作我们 API 所基于的低级接口。