OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3976|回复: 2

stm32F407+lwip+ENC28J60芯片,ping数据包超过大概1454的时候ping不通

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-8-29
在线时间
3 小时
发表于 2020-8-29 19:37:39 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 a932265643 于 2020-8-30 18:34 编辑

电脑通过网线和ENC28J60网口直连,开发板和ENC28J60通过SPI接口通信,opt.h文件中的IP_REASSEMBLY和IP_FRAG都定义为1了

现在的现象是ping 2000大小的数据包就ping不通,ping4000 6000也ping不通,而且只能接收到最后一个包的数据
ping 1000没问题
2020-08-29_19-16-08.png

开发板通过串口输出的调试信息也只能看到收到了一个数据包
2020-08-29_19-13-54.png

使用wireshark可以看到电脑发出了2个数据包
2020-08-29_19-17-58.png
在ethernetif_input函数中输出调试信息也只看到收到了最后一个数据包 2020-08-29_19-27-20.png

在enc28j60初始化函数中关闭过滤,依然ping不通,还是最能接收到最后一个数据包
enc28j60Write(ERXFCON, 0);//ERXFCON_UCEN|ERXFCON_CRCEN|ERXFCON_PMEN


各位帮忙看看是哪里出问题了吗?谢啦







最佳答案

查看完整内容[请看2#楼]

找到问题了, enc28j60最大发送接收帧长度MAX_FRAMELEN要定义为1518,之前是1500 enc28j60Write(MAMXFLL, MAX_FRAMELEN&0xFF); enc28j60Write(MAMXFLH, MAX_FRAMELEN>>8); 在enc28j60接收和发送函数里的接收发送数组大小要定义为1518以上 static unsigned char MySendbuf[1518]; static unsigned char MyRecvbuf[1518];
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-8-29
在线时间
3 小时
 楼主| 发表于 2020-8-29 19:37:40 | 显示全部楼层
a932265643 发表于 2020-8-30 18:35
之前的图好像没加上,现在加上了图片

找到问题了,
enc28j60最大发送接收帧长度MAX_FRAMELEN要定义为1518,之前是1500
enc28j60Write(MAMXFLL, MAX_FRAMELEN&0xFF);       
enc28j60Write(MAMXFLH, MAX_FRAMELEN>>8);

在enc28j60接收和发送函数里的接收发送数组大小要定义为1518以上
static unsigned char  MySendbuf[1518];
static unsigned char  MyRecvbuf[1518];
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-8-29
在线时间
3 小时
 楼主| 发表于 2020-8-30 18:35:01 | 显示全部楼层
之前的图好像没加上,现在加上了图片
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 14:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表