当前位置:首页 > W5300控制器详细设计及使用说明文档 - 图文
By:liu guo qing
3.2.5 重新发送参数设置
重新发送参数设置,即为对W5300的重复发送超时寄存器(RTR)和重复发送计数寄存器(RCR)进行配置。
1) 重复发送超时寄存器(RTR)用于配置重复发送超时周期的值。RTR的标准单位是
100us ,RTR初始化设置为2000(0x7D0 ),超时的时间周期为200ms。 ? RTR寄存器地址:0x01C
? RTR寄存器配置值:0x07D0(200ms)
2) 重复发送计数寄存器(RCR)用于配置重复发送的次数。当重复发送的次数达到
?RCR+1?时,将产生超时中断(Sn_IR 的?TIMEOUT?位置?1?)。 ? RCR寄存器地址:0x01E
? RCR寄存器配置值:0x3(3次)
APP和TCP的超时计算可参见W5300的数据手册。
3.2.6 SOCKETn 的内部TX/RX 存储器空间分配设置
W5300内部包含16个8K字节的存储单元。这些存储单元依次映射在128K字节的存储器空间。128K存储器分为发送存储器(TX)和接收存储器(RX)。内部TX和RX存储器以8K字节为单元分布在128K字节空间。内部TX/RX 存储器可以在0~64K 字节空间以1K字节为单元从新分配给每个SOCKET。
1) 定义内部TX/RX 存储器大小可以在存储器单元类型寄存器(MYTPER)中配置,
每个8K字节的存储单元对应MTYPER的一个位。当该位为?1?时,它用于TX存储器,当该位为?0?时,它用于RX存储器。MTYPER的低位都配置为TX存储器。其余没有配置为TX存储器的都应该设置为?0?。 ? MYTPER寄存器地址:0x030
? MYTPER寄存器配置值:0x00FF(平均分配)
2) 每个SOCKET的内部TX存储器的大小由TX存储器大小配置寄存器(TMSR)配
置。每个SOCKET在复位后自动分配8K字节的TX存储空间。 ? TMS01R寄存器地址:0x020 ? TMS01R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1
的配置值(0x190E)
? TMS23R寄存器地址:0x022 ? TMS23R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1
的配置值(0x1900)
? TMS45R寄存器地址:0x024 ? TMS45R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1
的配置值(0x0000)
? TMS67R寄存器地址:0x026 ? TMS67R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1
的配置值(0x0000)
3) 每个SOCKET的内部RX存储器的大小由RX存储器大小配置寄存器(RMSR)配
置。
每个SOCKET在复位后自动分配8K字节的RX存储空间。 ? RMS01R寄存器地址:0x028
9 / 27
By:liu guo qing
? RMS01R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1
的配置值(0x190E)
? RMS23R寄存器地址:0x02A ? RMS23R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1
的配置值(0x1900)
? RMS45R寄存器地址:0x02C ? RMS45R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1
的配置值(0x0000)
? RMS67R寄存器地址:0x02E ? RMS67R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1
的配置值(0x0000)
3.3 数据通信
完成初始化设置以后,W5300可以以TCP 、UDP、IPRAW 或MACRAW的方式打开SOCKET发送或接收数据。根据实际使用,在此只描述基于TCP协议的W5300工作方法。
在TCP 模式,首先要根据IP 地址和端口号与对端建立SOCKET连接。通过连接的SOCKET发送和接收数据。
建立SOCKET的连接有“TCP 服务器”和“TCP 客户端”之分。区分它们的方法是谁首先发送连接请求(SYS数据包)。“TCP 服务器”等待对端的连接请求,当收到连接请求时建立SOCKET连接(被动打开)。“TCP 客户端”主动发出连接请求,与对端建立连接(主动打开)。
下图3.3-1为W5300在TCP模式下数据通信的工作流程:
W5300 initializationData communicate (TCP)Socketn openSocketn openNSocketn openSocketn openListenListenEstabished?Estabished?YConnectConnectReceived Data?Received Data?NYReceiving ProcessReceiving ProcessSend Data?Send Data?NYSending ProcessSending ProcessReceived Fin?Received Fin?NYDisconnecting Disconnecting ProcessProcessDisconnect?Disconnect?NYClosed?Closed?NNTimeout?Timeout?Timeout?Timeout?YYYCloseClose 图3.3-1 TCP模式下数据通信工作流程
10 / 27
By:liu guo qing
3.3.1 SOCKET初始化
为了实现TCP 通信,需要对SOCKET进行初始化设置并打开SOCKET。为了打开SOCKET,选择其中的一个SOCKET(被选择的SOCKET称之为SOCKETn), 通过
SOCKETn 模式寄存器(Sn_MR) 和SOCKETn源端口号寄存器(Sn_PORTR)分别设置通信协议和本机端口号(在TCP 服务器模式,称之为侦听端口号),然后执行OPEN 命令。执行完OPEN 命令后,如果Sn_SSR 改变为SOCK_INIT,则SOCKET的初始化设置完成。 3.3.1.1
SOCKETn 模式寄存器设置
SOCKETn模式寄存器(Sn_MR)用于配置SOCKET的协议类型及相关一些选项。
? Sn_MR寄存器地址:0x200(0x240、0x280)
? Sn_MR寄存器配置值:0x0121(队列对齐、允许无延时响应、TCP模式) 下表2.3.1.1-1为SOCKETn模式寄存器(Sn_MR)的配置位说明:
表3.3.1.1-1 Sn_MR寄存器
位 Sn_MR[15:9] Sn_MR[8] 符号 - ALIGN 保留 队列对齐 0:不使用对齐 1:使用对齐 说明 只有在TCP 模式下有效,在TCP 通信过程中,当每次收到的数据包的字节数为偶数且该位置为?1?时,接收数据可直接删去附在接收数据包中的PACKET-INFO(数据的字节数),使读取数据的操作大大增强。 Sn_MR[7] MULTI 多播 0:禁止多播 1:允许多播 只有在UDP模式下有效 Sn_MR[6] MF MAC地址过滤 0:禁止MAC地址过滤 1:允许MAC地址过滤 只有在MACRAW模式下有效 Sn_MR[5] ND 使用无延时的ACK 0:禁止延时ACK选项 1:允许延时ACK选项 只有在TCP 模式下有效,当该位置?1?,收到对端的数据包后立即发送ACK数据包响应。建议将该位置?1?,以提高TCP 通信的性能。 Sn_MR[4] Sn_MR[3:0] - P[3:0] 保留 协议类型。 它用于配置每个SOCKET的通信协议(TCP、UDP、IPRAW,MACRAW等)或PPPoE SOCKET与PPPoE服务器之间的操作。 4?b0000 : SOCKET Closed; 4?b0001 : TCP; 4?bxxx0 :其它 11 / 27
By:liu guo qing
3.3.1.2 SOCKETn中断屏蔽寄存器设置
SOCKETn中断屏蔽寄存器(Sn_IMR)配置SOCKETn 向主机产生的中断,Sn_IMR的中断屏蔽位与SOCKETn中断寄存器(Sn_IR)是对应的。参考2.2.3主机中断设置。
? Sn_IMR寄存器地址:0x204(0x244、0x284)
? Sn_IMR寄存器配置值:0x001B(send_OK、timeout、discon、con)
下表3.3.1.2-1为Sn_IR寄存器的位说明,可以根据Sn_IR寄存器对Sn_IMR寄存器进行配置:
表3.3.1.2-1 IR寄存器
位 Sn_IR[7] Sn_IR[6] Sn_IR[5] Sn_IR[4] Sn_IR [3] Sn_IR [2] Sn_IR [1] Sn_IR[0] 符号 PRECV PFAIL PNEXT SENDOK TIMEOUT RECV DISCON CON PPP接收中断 说明 接收到不支持的可选数据(Option Data)时,该位置位。 PPP失败中断 PAP认证失败时该位置位 PPP下一过程中断 在PPPoE连接过程中,该过程改变时置位 发送完成中断 SEND 命令完成后置位 超时中断 在ARP和TCP 过程中超时置位 接收数据中断 端口从对端接收到数据时置位 断开连接中断 接收到从对端来的FIN或FIN/ACK 数据包时置位 连接中断 与对端成功建立连接时置位 3.3.1.3 SOCKETn目的IP 地址寄存器
在TCP 客户端模式下,运行CONNECT 命令之前,必须将SOCKETn目的IP 地址寄存器(Sn_DIPR)设置为TCP 服务器的IP 地址。而在TCP 服务器模式,当成功建立连接以后,它被W5300自动配置为TCP 客户端的IP 地址。
? Sn_DIPR 0寄存器地址:0x214(0x254、0x294) ? Sn_DIPR 0寄存器配置值:DIPR [31:16]
? Sn_DIPR 1寄存器地址:0x216(0x256、0x296) ? Sn_DIPR 1寄存器配置值:DIPR [15:0] 3.3.1.4
端口号寄存器设置
端口号寄存器设置包括对SOCKETn源端口号寄存器(Sn_PORTR)和SOCKETn目的端口号寄存器(Sn_DPORTR)的配置。
1) SOCKETn源端口号寄存器(Sn_PORTR)用于配置源端口的端口号,必须在OPEN
12 / 27
共分享92篇相关文档