100人民币求帮看下W550程序UDP断开重连的问题

2020-01-01 17:41发布

本帖最后由 337zhang 于 2016-12-31 23:00 编辑

100元RMB求熟悉W5500的亲们帮看下下面这个程序,为什么断开网线重新连接后,UDP就不能自动收发了,也ping不通模块的IP地址了
是不是程序中少了哪部分?用的是中断接收数据的方式,程序是以前买的泥人的W5500模块附送的程序
泥人W5500模块-UDP模式例程.rar (4.25 MB, 下载次数: 19) 2016-12-31 22:53 上传 点击文件名下载附件

重新编辑帖子原因:另增加100RMB悬赏,比表感谢,微信支付宝转账都可以!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
27条回答
337zhang
2020-01-01 21:03
好像帖子编辑不了了,就统一这里总结下吧:
1. 我增加了两个全局状态变量,用于判断Sn_SR和Sn_MR的状态
添加在了w5500.c中的第480行下面的函数中
void Write_SOCK_Data_Buffer(SOCKET s, unsigned char *dat_ptr, unsigned short size)

sr_state=Read_W5500_SOCK_1Byte(s,Sn_SR); //正常是值为0x22  拔掉网线后值是0x40  重新插上网线后值是0x00
mr_state=Read_W5500_SOCK_1Byte(s,Sn_MR); //正常是值为0x02 拔掉网线后值是0x40 重新插上网线后值是0x00
仿真器一步步测出来的,要是早仿真,估计就早解决了

2. 在main.c的第229行主函数main中,判断这两个状态,都为0x00时,重新初始化
if((sr_state==0x00)||(mr_state==0x00))
{
        Load_Net_Parameters();  //重新加载网络参数,不写这句的话,板子的IP和端口会发生变化,还没找到原因,至少我加上后,测试十几次没变化,感觉是驱动的事
        W5500_Hardware_Reset(); //硬件复位W5500
        W5500_Initialization();          //W5500初始化配置
        Socket_UDP(0);    //初始化端口,用于改变那两个寄存器的状态
                         
}
3. 下载上电后,插拔网线,就正常了,亲们可以多试试,程序我放下面了,接法很简单的,main.c里面有接法的说明,上电后就会看到UDP主动发送数据了,板子和电脑的IP看下图吧
已完善的W5500断线重连UDP模式例程.zip (5.86 MB, 下载次数: 6) 2017-1-7 21:22 上传 点击文件名下载附件
4.另外在吐槽下商家,写的例程都不完整~

2.jpg (143.55 KB, 下载次数: 0)

下载附件

2017-1-7 21:29 上传




一周热门 更多>