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

STM32F429 UCOSII NETCONNECT TCP客户端 网口通信问题,求大神解惑...

[复制链接]
红色风叶55 提问时间:2016-12-6 09:32 /
悬赏1ST金币未解决
参考原子哥NETCONN_TCP客户端实验


稍作修改在UCOS任务列表中只有一个TCP客户端任务
该任务不做任务切换 ,无限循环执行该任务

while(1)
{
netconn_write(conn,tcp_sbuffer,520,NETCONN_COPY);//发送数据
}

循环发送conn为新创建的netconn连接,tcp_sbuffer为520字节数组首地址,长度520字节
此处图中Kbps 有误,实际为KBps这点我已经确认过了。得到网速约(7MB/S)。

while(1)
{
netconn_recv(conn,&recvbuf);//仅接收数据,数据不作任何处理
netconn_write(conn,tcp_sbuffer,520,NETCONN_COPY); //发送数据

}
此处图中Kbps 有误,实际为KBps这点我已经确认过了。得到网速约(55KB/S)。


问题一:此函数netconn_recv(conn,&recvbuf)为网口接收函数,加了此函数严重影响通信速度,小弟想通过读取寄存器标志或其他状态标志判断网口是否接收到数据,使网速依旧能保持(7MB/S)如:

while(1)
{
if(ETH_Handler.RxFrameInfos.length>60)//接收到数据
{
//解析接收到的数据
}
netconn_write(conn,tcp_sbuffer,520,NETCONN_COPY); //发送数据
}

这样做确实可以让发送速度保持在(7MB/S)但是这个判断存在问题, TCP自身协议通信如握手包,NAK包等通信时ETH_Handler.RxFrameInfos.length该值也会改变。
这个值是从网口中断服务函数void ETH_IRQHandler(void)中得到的。
有没有大神知道网口通信可以通过读取哪个寄存器或者判断哪个标志可以判断接收到网口数据了?或者采用其他的方式,只需网速能保持在(3MB/S)以上即可。


问题二:

while(1)
{
netconn_write(conn,tcp_sbuffer,520,NETCONN_COPY);//发送数据
}


仅发送函数无限循环,无接收函数,TCP服务器发送数据20次后程序停止,硬件仿真程序一直在网口中断服务函数,大神知道原因吗?


以下为修改过的程序源码:

收藏 2 评论8 发布时间:2016-12-6 09:32

举报

8个回答
z258121131 回答时间:2016-12-7 13:40:37
不明觉厉
peter001 回答时间:2016-12-7 23:19:00
帮顶
原田夜舞love 回答时间:2016-12-7 23:25:00
网络通信这块用的比较少
斜阳 回答时间:2016-12-8 09:13:02
昨天的酱油还没打
damiaa 回答时间:2016-12-8 09:17:12
帮顶帮顶
红色风叶55 回答时间:2017-3-10 19:07:27
太久没来这个论坛了   登录发现还有个帖子   问题之前解决了  当初就是netconn_recv这个API函数没理解透彻  感谢你们的回答
nosignal 回答时间:2017-4-2 13:51:01
红色风叶55 发表于 2017-3-10 19:07
太久没来这个论坛了   登录发现还有个帖子   问题之前解决了  当初就是netconn_recv这个API函数没理解透彻  ...

求详情
wenyan212235 回答时间:2017-5-2 13:44:21
大神,求详情,可否发一份源码学习学习,502260659@qq.com
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版