OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 1065|回复: 7

enc28j60+lwip的例程有时ping一段时间后延时很大,需要复位才能正常ping

[复制链接]

  离线 

19

主题

88

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2015-12-8
在线时间
125 小时
发表于 2017-11-29 12:02:57 | 显示全部楼层 |阅读模式
5金钱
enc28j60+lwip的例程有时ping一段时间后延时会变很大,需要重新复位板子后才能正常回复正常的Ping延时,请问是什么原因?在网上找到这个答案http://blog.sina.com.cn/s/blog_a4e2465a0102ws39.html    不知道是不是这个问题?但是我更改之后程序会移植在中断中,不切换任务,请问要怎么更改才能正常?@zuozhongkai @正点原子

最佳答案

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

在ENC28J60中断处理函数中的接收中断部分改成下面这样就好了
为自己掌握新的知识感到快乐
回复

使用道具 举报

  离线 

19

主题

88

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2015-12-8
在线时间
125 小时
 楼主| 发表于 2017-11-29 12:02:58 | 显示全部楼层
正点原子 发表于 2017-11-30 00:51
根据你那个帖子去修改下,看看吧

在ENC28J60中断处理函数中的接收中断部分改成下面这样就好了
[C] 纯文本查看 复制代码
if(status&EIR_PKTIF)		//接收到数据,处理数据
	{
		
		while((packetnum=ENC28J60_Read(EPKTCNT))!=0)
		{
			lwip_pkt_handle();
			//printf("%d\r\n",packetnum);
		}
		ENC28J60_Write_Op(ENC28J60_BIT_FIELD_CLR,EIR,EIR_PKTIF);	//清除ENC28J60的接收中断标志位
	}
为自己掌握新的知识感到快乐
回复

使用道具 举报

  离线 

19

主题

88

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2015-12-8
在线时间
125 小时
 楼主| 发表于 2017-11-29 12:03:58 | 显示全部楼层
使用了UCOSIII操作系统
回复

使用道具 举报

  在线 

22

主题

674

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
3707
金钱
3707
注册时间
2015-11-5
在线时间
1137 小时
发表于 2017-11-29 14:37:15 | 显示全部楼层
如果enc28j60的驱动优化不好,在数据量比较大的网络下很容易出现丢包的,不管有没有OS结果都一样
回复

使用道具 举报

  离线 

19

主题

88

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2015-12-8
在线时间
125 小时
 楼主| 发表于 2017-11-29 19:56:49 | 显示全部楼层
正点原子公众号
FreeRTOS 发表于 2017-11-29 14:37
如果enc28j60的驱动优化不好,在数据量比较大的网络下很容易出现丢包的,不管有没有OS结果都一样

ping一段时间之后就会进入接收错误中断,是接收缓冲不足的原因吗?我ping的指令是一个数据包1500字节。
ping 192.168.10.30 -t -l 1500
为自己掌握新的知识感到快乐
回复

使用道具 举报

  离线 

501

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
130074
金钱
130074
注册时间
2010-12-1
在线时间
1173 小时
发表于 2017-11-30 00:51:22 | 显示全部楼层
根据你那个帖子去修改下,看看吧
回复

使用道具 举报

  在线 

22

主题

674

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
3707
金钱
3707
注册时间
2015-11-5
在线时间
1137 小时
发表于 2017-11-30 17:39:45 | 显示全部楼层
Jundodo 发表于 2017-11-29 19:56
ping一段时间之后就会进入接收错误中断,是接收缓冲不足的原因吗?我ping的指令是一个数据包1500字节。
...

ping包1500字节确实太大了,如果这时候网卡接收了其他数据包,那就极有可能出现丢包
我都是按照windows的ping包内容填充32字节,而且程序必须不断的检查接收错误中断,一发现错误就立刻修正接收的读写指针
下面提供我自己的ping包数据
[AppleScript] 纯文本查看 复制代码
static const uint8_t pingMsg[32] =
{
    0x61, 0x62, 0x63, 0x64,
    0x65, 0x66, 0x67, 0x68,
    0x69, 0x6A, 0x6B, 0x6C,
    0x6D, 0x6E, 0x6F, 0x70,
    0x71, 0x72, 0x73, 0x74,
    0x75, 0x76, 0x77, 0x61,
    0x62, 0x63, 0x64, 0x65,
    0x66, 0x67, 0x68, 0x69,
};
生活不只有眼前的苟且,还有你看不懂的诗和永远到不了的远方!
回复

使用道具 举报

  离线 

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2017-9-19
在线时间
34 小时
发表于 2018-1-13 14:52:17 | 显示全部楼层
本帖最后由 steaven 于 2018-1-13 14:55 编辑
Jundodo 发表于 2017-11-29 12:02
在ENC28J60中断处理函数中的接收中断部分改成下面这样就好了[mw_shl_code=c,true]if(status&EIR_PKTIF)                 ...

  牛,我之前这么用就是出问题,改成你这样,测试好一点,现在让它测试1天看看!file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\924401092\QQ\WinTemp\RichOle\3ZL}AOD_X%7CSFFM`75(JOY.png
123.jpg
回复

使用道具 举报

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

本版积分规则




关闭

"原子哥”推荐上一条 /1 下一条

QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-7-23 14:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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