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.

[参考译文] TMDS273GPEVM:TMDS273GPEVM 两个 ECU 之间的以太网通信演示示例

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1201335/tmds273gpevm-tmds273gpevm-ethernet-communication-between-two-ecus-demo-example

器件型号:TMDS273GPEVM

您好!

有没有人知道可以使用哪个演示示示例来测试以下 SDK 中2个 ECU 之间的以太网通信?

SDK : mcu_plus_sdk_am273x_08_05_00_24

EVM : TMDS273GPEVM   

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

    尊敬的 Sara:

    您可以在 EVM 之间进行通信。

    如果您使用两个 AM273 ECVM、请按照以下步骤操作

    可  在一个 EVM 上运行 AM273x MCU+ SDK:Enet Lwip TCP 客户端示例(TI.com)、在一个   EVM 上运行 AM273x MCU+ SDK:Enet Lwip TCP 服务器示例(TI.com)此示例和另一个 EVM。 正确配置 IP 地址。 您将能够在两个 EVM 之间进行通信。

    如果您遇到任何问题、请告诉我。

    Br

    Nilabh A.

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

    非常感谢您的答复。

    您能否告诉我们是否可以在不使用 DHCP 服务器 或家庭路由器的情况下静态配置 IP? 如果是,您能告诉我们代码中的确切位置以静态配置 IP 吗?

    谢谢。

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

    是的、您可以执行静态 IP 设置:

    在以下文件中: examples\networking\lwip\enet_cpsw_tcpserver\app_main.c

    1.注释掉 DHCP 设置函数:app_allocateIPAddress() ;

    下一步是提供静态 IP:

    2. 用以下代码替换函数 App_setupNetif ():

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    static void App_setupNetif()
    {
    ip4_addr_t ipaddr, netmask, gw;
    ip4_addr_set_zero(&gw);
    ip4_addr_set_zero(&ipaddr);
    ip4_addr_set_zero(&netmask);
    LWIP_PORT_INIT_GW(&gw);
    LWIP_PORT_INIT_IPADDR(&ipaddr);
    LWIP_PORT_INIT_NETMASK(&netmask);
    DebugP_log("Starting lwIP, local interface IP is %s\r\n", ip4addr_ntoa(&ipaddr));
    for (uint32_t i = 0U; i < ENET_SYSCFG_NETIF_COUNT; i++)
    {
    /* Open the netif and get it populated*/
    LwipifEnetApp_netifOpen(NETIF_INST_ID0 + i, &ipaddr, &netmask, &gw);
    g_pNetif[NETIF_INST_ID0 + i] = LwipifEnetApp_getNetifFromId(NETIF_INST_ID0);
    netif_set_status_callback(g_pNetif[NETIF_INST_ID0 + i], App_netifStatusChangeCb);
    netif_set_link_callback(g_pNetif[NETIF_INST_ID0 + i], App_netifLinkChangeCb);
    netif_set_up(g_pNetif[NETIF_INST_ID0 + i]);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    3.在 下面部分的同一文件中添加以下代码行

    /*=========================================================== */
    /*              宏和类型定义                 */
    /*=========================================================== */
    #define LWIP_PORT_INIT_IPADDR  (addr) IP4_ADDR (addr)192、168、1200)
    #define LWIP_PORT_INIT_GW    (addr) IP4_ADDR (addr)192、168、1、1)
    #define LWIP_PORT_INIT_netmask (addr)  IP4_ADDR((addr), 255,255,255,0)
    您可以根据自己的意愿修改 IP 地址。
    两个示例也需要进行此相同更改。 如果您遇到任何问题、请告诉我。
    Br
    Nilabh A.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢您的答复,这是非常清楚的  

    我们可以在 ECU 和 PC 之间进行通信、但两个 ECU 之间仍然无法工作

    我们在两个示例(tcp_client/tcp_server)中应用了 ticket 中提到的步骤
    但无论何时启动连接、都会发出此消息(端口1:链路断开)、并且连接已关闭、如随附的图像中所示。

    1. 能否确认我们应该在两个示例中都应用上述步骤而不做任何更改?
    2. 我们是否错过了任何其他配置?

     我们只需要强调,我们使用了从 ECU 到 ECU 的连接,没有 PC 连接,并使用静态 IP 分配,而不是 DHCP。

    谢谢。

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

    尊敬的 Sara:

    您能解释一下在两个 EVM 上加载二进制文件所遵循的步骤。

    这是因为甚至在两个 EVM 上的应用启动之前就已连接两个 EVM。 例如、您先在一个 EVM 上加载二进制文件、然后在第二个 EVM 上加载二进制文件并运行它(第二个 EVM 上电时)。 应用在第二个 EVM 上启动之后、它会执行 phy 重置、这将在第一个 EVM 上显示为链路断开、然后再次显示为链路建立。

    现在、您能否告诉我在完成这些打印后是否能够正常通信?

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

    Anand、您好!

    感谢您的答复。

    现在一切都正常、

    谢谢。