OpenEdv-开源电子网

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

W5500一直PING不通是怎么回事啊???

[复制链接]

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-7-28
在线时间
16 小时
发表于 2017-12-17 12:59:37 | 显示全部楼层 |阅读模式
10金钱
连接方式为               STM32F103RCT6--------W5500-----网络变压器-----IP175G--------RJ45经测试,W5500寄存器可以读写,交换机芯片也可以正常使用,但就是PING不通,用的是官网提供的测试代码,只修改了硬件复位引脚,SPI接口一样

1.Network Install.zip

330.54 KB, 下载次数: 629

最佳答案

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

W5500官方给出的驱动中,Sn_SR是这样定义的 #define Sn_SR(ch) (0x000308 + (ch
忍将夙愿,付诸东流?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8031
金钱
8031
注册时间
2014-8-13
在线时间
1595 小时
发表于 2017-12-17 12:59:38 | 显示全部楼层
本帖最后由 mack13013 于 2017-12-18 03:13 编辑
游刃有余 发表于 2017-12-17 18:22
*名    称:W5500_DetectGateway()        
*功    能:检查网关服务器
*出口参数:1(0xFF)=成功 0(0x00)=失 ...

W5500官方给出的驱动中,Sn_SR是这样定义的
#define Sn_SR(ch)                       (0x000308 + (ch<<5))
也就是说,有S0_SR,S1_SR 、、、S7_SR,对应的Sn_SR(0),Sn_SR(1)、、、Sn_SR(7),没有直接用的Sn_SR,
所以我猜想W5500_WriteSocketReg1Byte(0,Sn_CR,OPEN);//打开Socket   
其实是W5500_WriteSocketReg1Byte(S0_CR,OPEN);//打开Socket  
如果是这样的话,在任何W5500_DetectGateway()返回0的地方把S0_SR、S0_IR、IR、SIR这些数据都读出来看看发生了什么。

还有,通过其他方式经过交换机芯片去访问PC服务器看能否得到回应。
ip地址顺序是不是正确的,端口是否对应,MAC是否合法等这些小细节都检查一遍。


还是不行,那么W5500做服务器,PC机发送connect请求看下到底返回什么 ,对照Windows Sockets Error Codes看下到底是什么故障
回复

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-7-28
在线时间
16 小时
 楼主| 发表于 2017-12-17 13:00:40 | 显示全部楼层
请问各位大神,我还需要修改什么吗?
回复

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-7-28
在线时间
16 小时
 楼主| 发表于 2017-12-17 13:14:36 | 显示全部楼层
设备IP初始化为192.168.1.110   电脑IP为192.168.1.129,其余子网掩码,默认网关,DNS都一样
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8031
金钱
8031
注册时间
2014-8-13
在线时间
1595 小时
发表于 2017-12-17 14:43:55 | 显示全部楼层
本帖最后由 mack13013 于 2017-12-17 14:45 编辑

W5100某个寄存器有个位是用来设置不响应ping的,W5500应该也有,找找看。

帮你找到了,MR的PB位为1时不响应ping。

数据手册要多啃。

回复

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-7-28
在线时间
16 小时
 楼主| 发表于 2017-12-17 16:57:41 | 显示全部楼层
mack13013 发表于 2017-12-17 14:43
W5100某个寄存器有个位是用来设置不响应ping的,W5500应该也有,找找看。

帮你找到了,MR的PB位为1时不 ...

设置了,初始化的时候都置0了,还是不行
忍将夙愿,付诸东流?
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8031
金钱
8031
注册时间
2014-8-13
在线时间
1595 小时
发表于 2017-12-17 17:10:43 | 显示全部楼层
游刃有余 发表于 2017-12-17 16:57
设置了,初始化的时候都置0了,还是不行

哎,装逼失败了。。。。


把交换机芯片摘掉,尽量先最小精简系统测试看下。

ping不通的话,看能否建立socket连接。
回复

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-7-28
在线时间
16 小时
 楼主| 发表于 2017-12-17 17:43:23 | 显示全部楼层
mack13013 发表于 2017-12-17 17:10
哎,装逼失败了。。。。

检测网关服务器时,返回值一直是0,收不到服务器端的SYN/ACK数据包,不知道是不是服务器端就压根没收到客户端发送的连接请求。
忍将夙愿,付诸东流?
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8031
金钱
8031
注册时间
2014-8-13
在线时间
1595 小时
发表于 2017-12-17 18:07:50 | 显示全部楼层
游刃有余 发表于 2017-12-17 17:43
检测网关服务器时,返回值一直是0,收不到服务器端的SYN/ACK数据包,不知道是不是服务器端就压根没收到客 ...

上位机的connect返回值是0?
这是没错误发生啊
MSDN中关于connect的返回说明
If no error occurs, connect returns zero. Otherwise, it returns SOCKET_ERROR, and a specific error code can be retrieved by calling WSAGetLastError.

当然,在非阻塞连接中,返回SOCKET_ERROR也不一定是失败。


访问W5500的是什么机器? PC机的C程序吗?

如果是PC访问W5500的话,PC软件开调试模式,STM32也开调试模式,这样观察双方的通讯就方便确定故障点了。


回复

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-7-28
在线时间
16 小时
 楼主| 发表于 2017-12-17 18:20:04 | 显示全部楼层
mack13013 发表于 2017-12-17 18:07
上位机的connect返回值是0?
这是没错误发生啊
MSDN中关于connect的返回说明

32单片机C程序在线调试,初始化W5500端口0为TCP客户端,PC机为TCP服务端,然后5500向PC机发送连接请求
忍将夙愿,付诸东流?
回复

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-7-28
在线时间
16 小时
 楼主| 发表于 2017-12-17 18:22:45 | 显示全部楼层
mack13013 发表于 2017-12-17 18:07
上位机的connect返回值是0?
这是没错误发生啊
MSDN中关于connect的返回说明

*名    称:W5500_DetectGateway()       
*功    能:检查网关服务器
*出口参数:1(0xFF)=成功 0(0x00)=失败         
*说    明:无                          
*********************************************/
u8 W5500_DetectGateway(void)
{          
        u8 ip_adde[4];   //==========192.168.1.129
        ip_adde[0]=W5500Info.LocalIP[0];
        ip_adde[1]=W5500Info.LocalIP[1];
        ip_adde[2]=W5500Info.LocalIP[2];
        ip_adde[3]=W5500Info.LocalIP[3]+41;   
        //检查网关及获取网关的物理地址
        W5500_WriteSocketReg4Byte(0,Sn_DIPR,ip_adde);//向目的地址寄存器写入与本机IP不同的IP值
        W5500_WriteSocketReg2Byte(0, Sn_DPORTR,8080); //设置端口0-目的/远程端口
        W5500_WriteSocketReg1Byte(0,Sn_MR,MR_TCP);//设置socket为TCP模式
        W5500_WriteSocketReg1Byte(0,Sn_CR,OPEN);//打开Socket       
        delay_ms(5);//延时5ms           
        if(W5500_ReadSocketReg1Byte(0,Sn_SR) != SOCK_INIT)
        {//如果socket打开失败
                W5500_WriteSocketReg1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket
                return 0;//返回0(0x00)
        }                                                  
        W5500_WriteSocketReg1Byte(0,Sn_CR,CONNECT);//设置Socket为Connect模式         
        do
        {
                u8 j=0;
                j=W5500_ReadSocketReg1Byte(0,Sn_IR); //读取Socket0中断标志寄存器
                if(j!=0)
                {
                        W5500_WriteSocketReg1Byte(0,Sn_IR,j);
                }
                delay_ms(5); //延时5ms
                if((j&IR_TIMEOUT) == IR_TIMEOUT)
                {       
                        return 0;       
                }
                else if(W5500_ReadSocketReg1Byte(0,Sn_DHAR) != 0xff)
                {
                        W5500_WriteSocketReg1Byte(0,Sn_CR,CLOSE); //关闭Socket
                        return 1;                                                       
                }
        }while(1);
}
忍将夙愿,付诸东流?
回复

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-7-28
在线时间
16 小时
 楼主| 发表于 2017-12-18 14:46:22 | 显示全部楼层
mack13013 发表于 2017-12-18 03:11
W5500官方给出的驱动中,Sn_SR是这样定义的
#define Sn_SR(ch)                       (0x000308 + (ch

谢谢这位大哥这么认真的回答,经多次测试,发现5500到交换机芯片的信号线接地了,哈哈,把那段线割断问题成功解决,这问题太低级了,哈哈
忍将夙愿,付诸东流?
回复

使用道具 举报

8

主题

82

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-5-23
在线时间
17 小时
发表于 2017-12-20 15:53:03 | 显示全部楼层
游刃有余 发表于 2017-12-18 14:46
谢谢这位大哥这么认真的回答,经多次测试,发现5500到交换机芯片的信号线接地了,哈哈,把那段线割断问题 ...

你好,support@wisioe.com我们有提供技术支持 ,W5500代理商 炜世科技
WIZnet 以太网芯片 w5500 Dai Li 商 深圳炜世科技0755-86568556  QQ2574989918
回复

使用道具 举报

8

主题

82

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-5-23
在线时间
17 小时
发表于 2017-12-22 10:38:37 | 显示全部楼层
12月23日 WIZnet活动主题:嵌入式WEB服务器搭建及HTTP(S)协议讲解-STM32-F0/F1/F2专区-OpenEdv-开源电子网
http://www.openedv.com/forum.php ... d=234520&extra=
WIZnet 以太网芯片 w5500 Dai Li 商 深圳炜世科技0755-86568556  QQ2574989918
回复

使用道具 举报

8

主题

169

帖子

0

精华

高级会员

Rank: 4

积分
564
金钱
564
注册时间
2015-7-4
在线时间
105 小时
发表于 2019-5-6 16:12:52 | 显示全部楼层
解决了吗???上电,没有插网线,link和Active灯是量的,SPI一开始读出来的数据是对的,重新焊了一下芯片,现在读出来全是FF,不知道为啥,准备换芯片
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 16:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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