首页>>新闻资讯

应用笔记

W5100S-SOCKET-less ARP功能解析

更新时间:2018-11-13 阅览次数: 149

       ARP——地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的TCP/IP协议之一。

       在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头。

       但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。

       使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行


一、使用Scoket-less命令流程

新建位图图像.bmp

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

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

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


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

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

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

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

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

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

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

硬件ARP的目标IP。

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

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

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

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

对于使用SOCKET - less 命令,相关的寄存器还有很多,这里仅介绍几个关于硬件PING功能相关的寄存器。

更多详细的W5100S信息,欢迎前往www.w5100s.com浏览下载,资料例程我们会不断完善更新。


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

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

void hw_arp_init(void)
{
    setSLRTR(0x03E8);       // 重传超时时间设置:1000 * 100us
    setSLRCR(3);            // 重传次数设置:3次
    /* 使用中断时可开启该配置 */	
    setSLIMR(0x06);         // 中断开启 ARP & TIMEOUT
}

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

void hw_arp(void)
{
    setSLPIPR(hw_arp_ip);     // 目标IP设置:ARP对象IP
    setSLCR(0x02);            // 发送ARP请求
}

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

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

switch(getSLIR())
{
    case 0x02:
        setSLIR(0x02);
        getSLPHAR(remote_mac);
        printf("
已收到来自 %d.%d.%d.%d 的ARP回应,其MAC地址%x:%x:%x:%x:%x:%x。",
        hw_arp_ip[0],hw_arp_ip[1],hw_arp_ip[2],hw_arp_ip[3],remote_mac[0],
        remote_mac[1],remote_mac[2],remote_mac[3],remote_mac[4],remote_mac[5]);
    break;
    case 0x04:
        setSLIR(0x04);
        printf("
%d.%d.%d.%d 无回复。",hw_arp_ip[0],hw_arp_ip[1],hw_arp_ip[2]
        ,hw_arp_ip[3]);
    break;
    default:break;
}

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

上述代码,均是www.w5100s.com内18.HW_ARP例程内的,该例程已经过实测,硬件ARP功能正常使用。

注:提供的例程是中断方式判断结果,也可写成轮询形式,均可。


四、代码运行结果

电脑IP:192.168.1.100;MAC:54:E1:AD:E7:DF:C9

W5100S IP:192.168.1.233;MAC:00:08:DC:22:33:33

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

W5100S 硬件ARP 目标 IP:192.168.1.100

新建位图图像.bmp

可以看到,W5100S自带的硬件ARP功能很及时获取目标回复情况,获取其对应的MAC地址。

利用这个功能,用户可以很及时的获取到目标设备的物理地址,更及时的进行数据传输。

注:无回复时,是我已将网线拔了。


五、Wireshark网络封包内容

新建位图图像.bmp