OpenEdv-开源电子网

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

F4以太网速度的问题

[复制链接]

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2015-11-16
在线时间
31 小时
发表于 2015-12-10 09:52:00 | 显示全部楼层 |阅读模式
5金钱
现在用探索者实验以太网,例程为网络实验5 RAW_TCP服务器实验,修改部分源码,使开发板不断地向PC发送数据,可是发现发送的数据速度很慢,大概每条数据之间有0.2秒左右的延时,不知道怎么回事?
while(res==0)
{
//key=KEY_Scan(0);
//if(key==WKUP_PRES)break;
//if(key==KEY0_PRES)//KEY0按下了,发送数据
//{
tcp_server_flag|=1<<7;//标记要发送数据
//}
if(tcp_server_flag&1<<6)//是否收到数据?
{
LCD_Fill(30,210,lcddev.width-1,lcddev.height-1,WHITE);//清上一次数据
LCD_ShowString(30,210,lcddev.width-30,lcddev.height-210,16,tcp_server_recvbuf);//显示接收到的数据
tcp_server_flag&=~(1<<6);//标记数据已经被处理了.
}
if(tcp_server_flag&1<<5)//是否连接上?
{
sprintf((char*)tbuf,"Client IP:%d.%d.%d.%d",lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]);//客户端IP
  LCD_ShowString(30,170,230,16,16,tbuf);
POINT_COLOR=RED;
LCD_ShowString(30,190,lcddev.width-30,lcddev.height-190,16,"Receive Data:");//提示消息
POINT_COLOR=BLUE;//蓝色字体
}else if((tcp_server_flag&1<<5)==0)
{
LCD_Fill(30,170,lcddev.width-1,lcddev.height-1,WHITE);//清屏
}
lwip_periodic_handle();
delay_ms(2);
t++;
if(t==200)
{
t=0;
LED0=!LED0;

}   

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-12-10 10:23:56 | 显示全部楼层
例程里面我们把发送函数放到了LWIP的轮训函数中,那个轮训函数是定时调用的,所以速度不会块,你可以把发送函数单独拿出来调用,这样速度就会快
开往春天的手扶拖拉机
回复

使用道具 举报

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2015-11-16
在线时间
31 小时
 楼主| 发表于 2015-12-10 10:50:31 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
谢谢解答。
刚接触以太网,不太明白怎么修改,能给出示例么?多谢!
回复

使用道具 举报

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2015-11-16
在线时间
31 小时
 楼主| 发表于 2015-12-10 11:03:17 | 显示全部楼层
 我将tcp_tmr();放在循环中,速度是快了不少,但是PC上的网络连接显示只有0.06M?
while(res==0)
{
//key=KEY_Scan(0);
//if(key==WKUP_PRES)break;
//if(key==KEY0_PRES)//KEY0按下了,发送数据
//{
tcp_server_flag|=1<<7;//标记要发送数据
//}
if(tcp_server_flag&1<<6)//是否收到数据?
{
LCD_Fill(30,210,lcddev.width-1,lcddev.height-1,WHITE);//清上一次数据
LCD_ShowString(30,210,lcddev.width-30,lcddev.height-210,16,tcp_server_recvbuf);//显示接收到的数据
tcp_server_flag&=~(1<<6);//标记数据已经被处理了.
}
if(tcp_server_flag&1<<5)//是否连接上?
{
sprintf((char*)tbuf,"Client IP:%d.%d.%d.%d",lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]);//客户端IP
  LCD_ShowString(30,170,230,16,16,tbuf);
POINT_COLOR=RED;
LCD_ShowString(30,190,lcddev.width-30,lcddev.height-190,16,"Receive Data:");//提示消息
POINT_COLOR=BLUE;//蓝色字体
}else if((tcp_server_flag&1<<5)==0)
{
LCD_Fill(30,170,lcddev.width-1,lcddev.height-1,WHITE);//清屏
}
lwip_periodic_handle();
tcp_tmr();
delay_ms(2);
t++;
if(t==200)
{
t=0;
LED0=!LED0;

}  
回复

使用道具 举报

19

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1873
金钱
1873
注册时间
2013-7-29
在线时间
276 小时
发表于 2015-12-11 08:32:12 | 显示全部楼层
关注中,求提高以太网通信速度的解决方法。
回复

使用道具 举报

15

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2015-11-16
在线时间
31 小时
 楼主| 发表于 2015-12-11 09:40:12 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
请问:
我将lwip_periodic_handle()函数中的TCP定时器由250ms改为2ms,速度提高了很多,但还是只有0.05M的样子,请问这样会有什么问题吗?还能不能通过其他方法提高速度?谢谢!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 18:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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