首页>>新闻资讯

应用笔记

W5100S-SOCKET-less PING功能解析

更新时间:2018-12-17 阅览次数: 289

PING 是DOS 命令,它是用来检查网络是否通畅或者网络连接速度的命令。

        利用的原理是:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包, 根据返回的数据包我们可以确定目标主机的存在。

        而最新推出的W5100S,则将PING功能通过硬件实现,并固化在芯片内,方便客户使用。无需编写PING功能的相关程序代码,只需简单的寄存器配置即可使用PING功能。


一、使用Scoket-less命令流程

新建位图图像.bmp

从上图我们可以看出,Socket - less 命令的使用,整体流程还是十分明了的。

开始,配置相关寄存器的数值,完成后启动Socket - less 命令,启动后则判断对端的回应与超时的判断。

而在这个整体流程中,最主要的难点在于寄存器配置部分。


二、关于Socket - less PING 功能的寄存器

我们在使用Socket - less 命令时,只需要配置以下寄存器即可完成PING功能的调用。

1.SLRTR(SOCKET - less 重传超时时间寄存器)

配置PING的超时重传时间基本单位是100us,当过了时间则会启动重传机制。

2.SLRCR(SOCKET - less 重传次数寄存器)

设定重传次数,若当前重传次数 >= 重传次数 + 1时,则判定为TIMEOUT。

3.SLPIPR(SOCKET - less 目标IP地址寄存器)

硬件PING的目标IP。

4.PINGSEQR(PING序列号寄存器)

PING请求数据包的报头序列号。

5.PINGIDR(PING ID寄存器)

PING请求数据包的报头数据包ID。

6.SLIMR(SOCKET - less 中断屏蔽寄存器)

选择开启/关闭PING与TIMEOUT中断。

7.SLCR(SOCKET-less控制寄存器)

发送相关请求的使能寄存器。


三、相关寄存器的配置及Socket - less 命令调用

使用硬件PING时仅需要设置这几个相关寄存器即可。具体配置流程如下代码:

void hw_ping_init(void)
{
    setSLRTR(0x03E8);       // 重传超时时间设置:1000 * 100us
    setSLRCR(3);            // 重传次数设置:3次
    /* 使用中断时可开启该配置 */	
    setSLIMR(0x05);         // 中断开启 PING & TIMEOUT
 
    setPINGSEQR(0x03E8);    // 请求数据包序列号设置:1000
    setPINGIDR(0x0100);     // 请求数据包ID:100
}

上述代码使用硬件PING功能时,无特殊要求那么设置一次即可。设置先后顺序不作要求。

void hw_ping(uint8* ip)
{
    setSLPIPR(ip);                    // 目标IP设置:PING对象IP
    setSLCR(0x01);                    // 发送PING请求
}

这部分代码在需要使用一次硬件PING功能时,进行一次调用。

而判断PING的结果,则可使用中断进行判断,超时还是响应都会发生次中断,具体如下:

switch(getSLIR())
{
    case 0x01:             // PING回应标志
        setSLIR(0x01);
        getSLPHAR(remote_mac);
        printf("
已收到来自 %d.%d.%d.%d 的PING回应。",
        hw_ping_ip[0],hw_ping_ip[1],hw_ping_ip[2],hw_ping_ip[3]);
    break;
 
    case 0x04:
        setSLIR(0x04);
        printf("
来自 %d.%d.%d.%d 的回复:无法访问目标主机。",hw_ping_ip[0],
        hw_ping_ip[1],hw_ping_ip[2],hw_ping_ip[3]);
    break;
    default:break;
}

中断发生后,根据PING的SLIR寄存器的数值,判断对方是给予反馈,还是已经超时。


四、代码运行结果

电脑IP:192.168.1.100

W5100S 与电脑连接在同一路由器下。

W5100S 硬件PING IP:192.168.1.100

当电脑网线接入时:

image.png

当电脑网线拔掉时:

image.png