你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32CUBEMX为STM32F407ZG创建lwip,使用udp发送数据失败

[复制链接]
sdsffghgfdfg 提问时间:2018-6-6 16:00 /
问题描述:用买开发板淘宝送的程序源码在我的电脑是可以通过udp接收到发过来的数据。但是,我自己分别stm32cubemx配置和自己移植Lwip,发送udp数据,我的PC都无法接收到。

一、用的是STM32CUBEMX4.25.1版本,lwip是2.0.3版本。下面是我的操作步骤:1. cube里面配置ETH、RCC、SYS、USART1这几个,然后使能lwip。
2. 更改了middlerwares lwip的dhcp选项使不能,以及PHY改成user phy。
3. 开启lwip debug。

二、下面是(STM32CUBEMX配置的)lwip debug打印的信息

  1. udp_send
  2. pbuf_header: failed as 0800c754 < 20003340 (not enough space for new header size)
  3. pbuf_alloc(length=8)
  4. pbuf_alloc(length=8) == 2000334c
  5. pbuf_chain: 2000334c references 20003330
  6. udp_send: added header pbuf 2000334c before given pbuf 20003330
  7. udp_send: sending datagram of length 12
  8. udp_send: UDP packet length 12
  9. udp_send: UDP checksum 0x0000
  10. udp_send: ip_output_if (,,,,0x11,)
  11. pbuf_header: old 20003380 new 2000336c (20)
  12. ip4_output_if: st0
  13. IP header:
  14. +-------------------------------+
  15. | 4 | 5 |  0x00 |        32     | (v, hl, tos, len)
  16. +-------------------------------+
  17. |       89      |000|       0   | (id, flags, offset)
  18. +-------------------------------+
  19. |  255  |   17  |    0x0000     | (ttl, proto, chksum)
  20. +-------------------------------+
  21. |  192  |  168  |    1  |  240  | (src)
  22. +-------------------------------+
  23. |  192  |  168  |    1  |   68  | (dest)
  24. +-------------------------------+
  25. ip4_output_if: call netif->output()
  26. etharp_find_entry: found matching entry 0
  27. pbuf_alloc(length=32)
  28. pbuf_alloc(length=32) == 200033d8
  29. pbuf_copy(200033d8, 2000334c)
  30. pbuf_copy: end of chain reached.
  31. etharp_query: dropped previously queued packet 2000334c for ARP entry 0
  32. pbuf_free(20003390)
  33. pbuf_free: deallocating 20003390
  34. etharp_query: queued packet 2000334c on ARP entry 0
  35. pbuf_free(2000334c)
  36. pbuf_free: deallocating 2000334c
  37. pbuf_free: 20003330 has ref 1, ending here.
复制代码


三、 下面是淘宝(可以正常运行)送的程序打印的信息
  1. udp_send
  2. pbuf_header: failed as 0800d822 < 20000898 (not enough space for new header size)
  3. pbuf_alloc(length=8)
  4. pbuf_alloc(length=8) == 200008b8
  5. pbuf_chain: 200008b8 references 20000888
  6. udp_send: added header pbuf 200008b8 before given pbuf 20000888
  7. udp_send: sending datagram of length 29
  8. udp_send: UDP packet length 29
  9. udp_send: UDP checksum 0x0000
  10. udp_send: ip_output_if (,,,,IP_PROTO_UDP,)
  11. pbuf_header: old 200008ec new 200008d8 (20)
  12. ip_output_if: st0
  13. IP header:
  14. +-------------------------------+
  15. | 4 | 5 |  0x00 |        49     | (v, hl, tos, len)
  16. +-------------------------------+
  17. |       15      |000|       0   | (id, flags, offset)
  18. +-------------------------------+
  19. |  255  |   17  |    0x0000     | (ttl, proto, chksum)
  20. +-------------------------------+
  21. |  192  |  168  |    1  |  240  | (src)
  22. +-------------------------------+
  23. |  192  |  168  |    1  |   68  | (dest)
  24. +-------------------------------+
  25. netif->output()pbuf_header: old 200008d8 new 200008ca (14)
  26. etharp_send_ip: sending packet 200008b8
  27. pbuf_free(200008b8)
  28. pbuf_free: deallocating 200008b8
  29. pbuf_free: 20000888 has ref 1, ending here.
复制代码


四、自己分析了一下,差别就在于etharp这里。有大佬给指点一下吗?跪求了。。。
收藏 评论3 发布时间:2018-6-6 16:00

举报

3个回答
sdsffghgfdfg 回答时间:2018-6-6 17:07:06
补充一点:我跑TCP是没有问题的,可以ping通。板子当服务器,可以收到PC发来的包,并发回去。
sdsffghgfdfg 回答时间:2018-6-7 09:14:36
解决了。主要是中断服务程序的问题,导致ethernet的arp包收不到。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结贴奖励

查看全部评分

sdsffghgfdfg 回答时间:2018-6-7 16:13:52
这下应该彻底解决了。
1. 之前解决的是自己移植的Lwip,自己没有加ETH_IRQHandler。主要不是ETH_IRQHandler,主要是ethernet_input。参考stm32cubemx没有ETH_IRQHandler也可以正常使用。
2. stn32cubemx给我生产的lwip解决方案是,引脚的问题。我看了淘宝那个程序源码给的初始化的引脚和stm32cubemx给我自动配置的引脚有三个不同。分别是PB11、PB12、PB13 。淘宝给的是PG11、PG13、PG14 。我改成淘宝给的这三个引脚,就可以正常通信了。虽然我看了原理图,这些引脚应该都是可以用的,不知道为什么只能用PG系列的。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 谢谢分享

查看全部评分

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版