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.

[参考译文] MSP432E401Y:使用 lwIP 实现的 UDP

Guru**** 1507460 points
Other Parts Discussed in Thread: MSP-EXP432E401Y, MSP432E401Y
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1344857/msp432e401y-udp-implementation-with-lwip

器件型号:MSP432E401Y
主题中讨论的其他器件:MSP-EXP432E401Y

团队、您好!

我正在使用 MSP-EXP432E401Y 在控制器与通过 RJ45转 USB 连接器连接的 PC 之间实现 UDP 通信。

首先、我使用了 Ethernet_with_lwip_nortos_ccs 代码。 这里有 DHCP 来获取 IP 地址、但我需要静态 IP、因此我修改了静态 IP 的代码。

   uint32_t srcIP = htonl (ipaddr_addr ("192.168.254.4");
   uint32_t netmask = htonl (inet_addr ("255.255.255.0));
   uint32_t desIP = htonl (inet_addr ("192.168.254.3"));

然后、在尝试实施 UDP 和测试时、 发送和接收都不工作。

此外、来自 PC 的 ARP 请求也不会从控制器得到响应。

  

我尝试使用 Echotool 从 PC 发送帧、打印方式与终端相同。我可以看到源端口、目标端口和数据长度完全相同。 但在 Wireshark 中、它显示 ICMP 目标无法访问错误、但 ARP 请求和响应帧是正确的。

是否有人支持通过 MSP432E401Y 控制器中的 lwIP 发送和接收 UDP 帧。

 

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

    您好!

     首先、我看不到您的网关掩码。  

      您需要确保将 IPADDR_USE_STATIC 传递给 lwIPInit() 。  

     您还需要将以下两个#define 设置为0。  

    #define LWIP_DHCP             0

    #define LWIP_AUTOIP           0

    本应用手册中有一个使用静态 IP 的 tcpecho 示例、您可以参考 TM4C129 MCU。  https://www.ti.com/lit/an/spna248/spna248.pdf

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

    您好 Charles
     

    您需要确保将 IPADDR_USE_STATIC 传递给 lwIPInit() 。  

     您还需要将以下两个#define 设置为0。  

    #define LWIP_DHCP             0

    #define LWIP_AUTOIP           0

    [/报价]

    我已经执行了这些操作、然后只能使控制器从 PC 接收 UDP 帧、但无论何时都没有调用 recv 回调函数。

     结构 UDP_PCB* PCB;

       uint32_t srcIP = htonl (ipaddr_addr ("192.168.254.4");
       uint32_t netmask = htonl (inet_addr ("255.255.255.0));
       uint32_t GWADDR = 0;
       uint32_t desIP = htonl (inet_addr ("192.168.254.3"));
          lwIPInit (g_ui32SysClock、pui8MACArray、srcIP、网络掩码、GWADDR、IPADDR_USE_STATIC);
          pcb = udp_new ();
             (void) udp_recv (pcb、RxUdpPcbReceive、NULL);
             (void) udp_bind (pcb、&srcIP、8005);
             (void) udp_connect (pcb、&desIP、8006);

    这是我为 UDP 封装进行初始化的

    当我尝试 ping 微控制器的 IP 时、我可以得到响应、因此我认为 IP 没有问题。 但在尝试通过 UDP 进行通信时、没有任何效果。

    本应用手册中有一个使用静态 IP 的 tcpecho 示例可供参考。  https://www.ti.com/lit/an/spna248/spna248.pdf

    感谢您分享此示例、我尝试使用静态 IP 复制 enet_udpecho_client_lwip、但在终端上看到了下图、即使 IP 设置不正确

    请帮我解决这个问题。

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢分享此示例,我尝试复制静态 IP 的 enet_udpecho_client_lwip,但在终端中看到以下图像,即使 IP 设置不正确[/报价]

    您是否按原样尝试了 enet_tcpecho_server_static_ip_lwip 示例并且仅修改了静态地址? 运行是否正常? TM4C129与 MSP432E 是相同的器件。 您甚至可以按原样刷写.out 文件、其编程将不会有问题。  

    我还会建议您尝试不同的网络、例如尝试您的家庭网络或某处。 您的公司网络可能有防火墙或其他安全设置。 您还需要确保您的客户端和服务器位于同一子网中。  

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

    您好 Charles、

    我让它使用具有静态 IP 的 enet_udpecho_client_lwip 代码、现在可以正常运行。 我未能在 lwip init 中正确添加 IP、因此出现错误消息"No route to..."。

    发送和接收对于此代码均正确。

    但我不知道为什么它不能用于我的代码。

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

    很高兴您的问题得到解决。