




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1引言1.1 编写目的1.2 定义1.3 参考资料?High-performance_Internet_Connectivity_Solution_W5300_V123»?W5300中文用户数据手册_V1.2.22W5300控制器的实现流程本W5300控制器在16位数据的直接模式地址方式的基础上实现。2.1 实现流程图2.2 流程简要说明1. W5300reset:W5300工作之前,需要对其进行复位,复位低电平有效,并且至少保持2us(W5300不支持上电复位,必须通过'/reset1口对其进行复位)。2. Waitforatleast10ms:W5300复位后,需要等
2、待至少10ms使得W500内部锁相环稳定后,才能进行W5300初始化操作。3. W5300initialization:初始化W5300就是将相应的参数按照写时序要求写入寄存器。初始化分为3个步骤:1)主机接口配置:设置主机接口模式和时序,设置数据位宽,设置主机中断。2) 设置网络信息:设置数据通信的基本信息(SHAR、GAS、SBUS和SIPR);设置重新发送的时间间隔和重发次数。3) 内部TX/RX存储器分配:定义内部TX/RX存储器大小及SOCKTEn的TX/RX存储器大小。4. Datacommunicate:对使用的COCKETn初始化,进行发送、接收数据及相关配置。3流程控制3.1
3、 W5300RESET通过W5300芯片的/RESET接口对芯片进行复位,低电平有效。RESET信号低电平至少持续2us,为了使锁相环逻辑稳定,复位信号恢复高电平后至少等待10ms,见图3.1-1。W5300不支持上电复位。因此必须由外部系统给出复位信号。在复位信号有效的2us期间,需要对BIT16EN'接口进行配置。'BIT16EN为16/8位数据位选择,它确定W5300的数据位的宽度:高电平选择16位数据位,低电平选择8位数据位。在复位期间,它被锁存在模式寄存器(MR)的第15位,复位后它的改变不会产生影响。即数据位的宽度在复位后不会发生改变。图3.1-1W5300复位初始
4、化3.2 W5300初始化3.2.1 数据位宽设置数据位宽的设置可参见3.1节,根据实际使用,'BIT16EN接口信号可以始终配置为1。'3.2.2 主机接口模式和时序设置主机的接口模式和时序设置即为对W5300的模式(MR)寄存器进行配置:?MR寄存器地址:0x000?MR基础器配置值:0xB800卜表3.2.2-1为MR寄存器的配置说明:表3.2.2-1MR寄存器位符号说明MR15DBW数据总线宽度0:8位数据总线宽度1:16位数据总线宽度在W5300复位期间,这个值由BIT16EN引脚的电平确定。复位后,这个值不改变。MR14MPFMAC层终止数据报文0:正常报文1:终止
5、报文当从路由器或交换机收到终止报文时,该位置1。当设置为1时,将停止数据传输,直到该位为0'MR13WDF2写数据访问时间当写数据操作时,/CS为低电平后,W5300在WDFPLL_CLK时间后取MR12WDF1MR11WDF0写入的数据,如果主机写操作在WD*PLL_CLK完成(/CS恢复为高电平),写入的数据在'/C明高电平时取走MR10RDH读数据保持时间0:没有数据保持时间1:数据保持时间为2XPLL_CLK在主机进行读操作时,当主机的读操作完成(/CS恢复高电平)后,W5300在2XPLL_CLK时间之内保持读取的数据。在这种情况下,注意数据总线上的数据冲突MR9-保
6、留MR8FSFIFO交换0:禁止交换1:允许交换它用于高字节和低字节的交换。W5300的字节一般采用大端模式。如果主机系统采用小端模式,那么将该位置1',将Sn_TX_FIFOR和Sn_RX_FIFOR的字节顺序交换,使用效果与小端模式相同MR7RST软件复位该位置1,'对W5300软件复位。复位结束后自动清0'MR6-保留MR5MT存储器测试0:禁止内部RX/TX存储器测试1:允许内部存储器测试一般来讲,W5300内部TX存储器支持主机通过Sn_TX_FIFOR寄存器的写操作,而内部RX存储器只支持主机通过Sn_RX_FIFOR寄存器的读操作。如果该位置1;内部RX/
7、TX存储器同时支出通过Sn_TX_FIFOR和Sn_RX_FIFOR的读写操作,从而校验内部TX/RX存储器。测试W5300内部TX/RX完成后,需要对系统重新复位或关闭端口。MR4PBPing功能阻止模式0:允许Ping1:禁止Ping自动Ping应答支持最多119个字节。Ping功能阻止模式还需要考虑Sn_MR和Sn_PROTOR的设置。MR3PPPoEPPPoE模式0:禁止PPPoE模式1:启动PPPoE模式MR2DBS数据总线交换0:禁止交换1:允许交换DBS位只交换Sn_TX_FIFOR/Sn_RX_FIFOR的高字节和低字节。然而该位交换所有寄存器的高字节和低字节,包括Sn_TX_
8、FIFOR/Sn_RX_FIFOR寄存器。该位只有DBW为时有效。MR1-保留MR0IND间接总线模式0:直接总线模式1:间接总线模式它设置W5300与主机的接口模式3.2.3 host主机中断设置主机中断设置即为对中断屏蔽寄存器进行配置,它配置W5300的中断并报告给主机。IMR的每一个中断屏蔽位对应IR的每一个中断位。当IR的任何一个位为且相应的IMR位也为住将向主机产生中断('/INT'输出低电平)。如果相应的IMR位为Q'将不产生中断('/INT保持高电平),即使IR位为?IMR寄存器地址:0x004?IMR基础器配置值:0X80FF下表为IR寄存器的位
9、说明,可以根据IR寄存器对IMR寄存器进行配置:表3.2.3-1IR寄存器位符号说明IR15IPCFIP冲突当IP地址产生冲突时,该位置1时(当接收到ARP请求数据包的IP地址与W5300本机IP地址相同)。当它置时,网络中的另外一个设备使用了相同的IP地址,将造成通信错误。因此需要尽快采取措施解决这个问题。IR14DPUR目标端口无法到达当收到ICMP(目的端口无法到达)数据包时,该位置1。该中断用于UDP协议传输。IR13PPPTPPPoE中止在PPPoE模式,当与服务器连接关闭时,该位置1;IR12FMTU分片最大传输单元(MTU)当收到ICMP(分片最大传输单元)数据包时,该位置1。在
10、基于UDP协议传输时,需要考虑。TCP协议下可以不需要考虑。IR11:8-保留IR7S7_INTSOCKET7中断当SOCKET7产生中断时,该位置该中断信息对应于S7_IR1。当S7_IR1被主机清凿,该位自动清0'IR6S6_INTSOCKET6中断当SOCKET6产生中断时,该位置1;该中断信息对应于S6_IR1。当S6_IR1被主机清凿,该位自动清0'IR5S5_INTSOCKET5中断当SOCKET5产生中断时,该位置1;该中断信息对应于S5_IR1。当S5_IR1被主机清凿,该位自动清0'IR4S4_INTSOCKET4中断当SOCKET4产生中断时,该位置
11、该中断信息对应于S4_IR1。当S4_IR1被主机清凿,该位自动清0'IR3S3_INTSOCKET3中断当SOCKET3产生中断时,该位置该中断信息对应于S3_IR1。当S3_IR1被主机清凿,该位自动清0'IR2S2_INTSOCKET2中断当SOCKET2产生中断时,该位置该中断信息对应于S2_IR1。当S2_IR1被主机清凿,该位自动清0'IR1S1_INTSOCKET1中断当SOCKET1产生中断时,该位置1;该中断信息对应于S1_IR1o当S1_IR1被主机清凿,该位自动清0'IR0S0_INTSOCKET0中断当SOCKET0产生中断时,该位置1;
12、该中断信息对应于S0_IR1。当S0_IR1被主机清凿,该位自动清0'3.2.4 基本网络信息设置基本网络信息设置,即为对W5300的本机硬件地址(MAC)寄存器(SHAR)、网关IP地址寄存器(GAR)、子网掩码寄存器(SUBR)和本机IP地址寄存器(SIPR)进行配置。1) 本机硬件地址(MAC)寄存器(SHAR)配置:?SHAR0寄存器地址:0x008?SHAR0寄存器配置值:MAC47:32?SHAR2寄存器地址:0X00A?SHAR2寄存器配置值:MAC31:16?SHAR4寄存器地址:0X00C?SHAR4寄存器配置值:MAC15:02) 网关IP地址寄存器(GAR)配置:
13、?GAR0寄存器地址:0x010?GAR0寄存器配置值:GAR31:16?GAR1寄存器地址:0x012?GAR1寄存器配置值:GAR15:03) 子网掩码寄存器(SUBR)配置:?SUBR0寄存器地址:0x014?SUBR0寄存器配置值:SUBR31:16?SUBR1寄存器地址:0x016?SUBR1寄存器配置值:SUBR15:04) 本机IP地址寄存器(SIPR)?SIPR0寄存器地址:0x014?SIPR0寄存器配置值:SUBR31:16?SIPR1寄存器地址:0x016?SIPR1寄存器配置值:SUBR15:03.2.5 重新发送参数设置重新发送参数设置,即为对W5300的重复发送超时
14、寄存器(RTR)和重复发送计数寄存器(RCR)进行配置。1) 重复发送超时寄存器(RTR)用于配置重复发送超时周期的值。RTR的标准单位是100us,RTR初始化设置为2000(0x7D0),超时的时间周期为200ms。?RTR寄存器地址:0x01C?RTR寄存器配置值:0x07D0(200ms)2)重复发送计数寄存器(RCR)用于配置重复发送的次数。当重复发送的次数达到'RCR+中寸,将产生超时中断(Sn_IR的TIMEOUT位置二?RCR寄存器地址:0X01E?RCR寄存器配置值:0x3(3次)APP和TCP的超时计算可参见W5300的数据手册。3.2.6 SOCKETn的内部TX
15、/RX存储器空间分配设置W5300内部包含16个8K字节的存储单元。这些存储单元依次映射在128K字节的存储器空间。128K存储器分为发送存储器(TX)和接收存储器(RX)。内部TX和RX存储器以8K字节为单元分布在128K字节空间。内部TX/RX存储器可以在064K字节空间以1K字节为单元从新分配给每个SOCKETo1) 定义内部TX/RX存储器大小可以在存储器单元类型寄存器(MYTPER)中配置,每个8K字节的存储单元对应MTYPER的一个位。当该位为1时,它用于TX存储器,当该位为0寸,它用于RX存储器。MTYPER的低位都配置为TX存储器。其余没有配置为TX存储器的都应该设置为0
16、9;MYTPER寄存器地址:0x030MYTPER寄存器配置值:0X00FF(平均分配)2) 每个SOCKET的内部TX存储器的大小由TX存储器大小配置寄存器(TMSR)配置。每个SOCKET在复位后自动分配8K字节的TX存储空间。TMS01R寄存器地址:0x020TMS01R寄存器配置值:高8位为SOCKET0 的配置值(0x190E)TMS23R寄存器地址:0x022TMS23R寄存器配置值:高8位为SOCKET0 的配置值(0x1900)TMS45R寄存器地址:0x024TMS45R寄存器配置值:高8位为SOCKET0 的配置值(0x0000)TMS67R寄存器地址:0x026TMS67
17、R寄存器配置值:高8位为SOCKET0 的配置值(0x0000)的配置值,低8位为SOCKET1的配置值,低8位为SOCKET1的配置值,低8位为SOCKET1的配置值,低8位为SOCKET13) 每个SOCKET的内部RX存储器的大小由RX存储器大小配置寄存器(RMSR)配置。每个SOCKET在复位后自动分配8K字节的RX存储空间。?RMS01R寄存器地址:0x028?RMS01R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1的配置值(0x190E)?RMS23R寄存器地址:0x02A?RMS23R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1的配
18、置值(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发送和接收数据。
19、建立SOCKET的连接有“TCP服务器”和“TCP客户端”之分。区分它们的方法是谁首先发送连接请求(SYS数据包)。“TCP服务器”等待对端的连接请求,当收到连接请求时建立SOCKET连接(被动打开)。“TC哈户端”主动发出连接请求,与对端建立连接(主动打开)。下图3.3-1为W5300在TCP模式下数据通信的工作流程:图3.3-1TCP模式下数据通信工作流程3.3.1 SOCKET初始化为了实现TCP通信,需要对SOCKET进行初始化设置并打开SOCKET。为了打开SOCKET,选择其中的一个SOCKET(被选择的SOCKET称之为SOCKETn),通过SOCKETn模式寄存器(Sn_MR)
20、和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模式)卜表为SOCKETn模式寄存器(Sn_MR)的配置位说明:表3.3.1.1-1Sn_MR寄存器位
21、符号说明Sn_MR15:9-保留Sn_MR8ALIGN队列对齐0:不使用对齐1:使用对齐只有在TCP模式下有效,在TCP通信过程中,当每次收到的数据包的字节数为偶数且该位置为1时,接收数据可直接删去附在接收数据包中的PACKET-INFO(数据的字节数),使读取数据的操作大大增强。Sn_MR7MULTI多播0:禁止多播1:允许多播只有在UDP模式下有效Sn_MR6MFMAC地址过滤0:禁止MAC地址过滤1:允许MAC地址过滤只有在MACRAW模式下有效Sn_MR5ND使用无延时的ACK0:禁止延时ACK选项1:允许延时ACK选项只有在TCP模式下有效,当该位置1;收到对端的数据包后立即发送AC
22、K数据包响应。建议将该位置1'以提高TCP通信的性能。Sn_MR4-保留Sn_MR3:0P3:0协议类型。它用于配置每个SOCKET的通信协议(TCP、UDP、IPRAW,MACRAW等)或PPPoESOCKET与PPPoE服务器之间的操作。4'b0000:SOCKETClosed4'b0001:TCP4'bxxx0其它3.3.1.2 SOCKETn中断屏蔽寄存器设置SOCKETn中断屏蔽寄存器(Sn_IMR)配置SOCKETn向主机产生的中断,Sn_IMR的中断屏蔽位与SOCKETn中断寄存器(Sn_IR)是对应的。参考2.2.3主机中断设置。?Sn_IMR寄
23、存器地址:0x204(0x244、0x284)?Sn_IMR寄存器配置值:0x001B(send_OK、timeout、discon、con)下表3.3.1.2-1为Sn_IR寄存器的位说明,可以根据Sn_IR寄存器对Sn_IMR寄存器进行配置:位符号说明Sn_IR7PRECVPPP接收中断接收到不支持的可选数据(OptionData)时,该位置位。Sn_IR6PFAILPPP失败中断PAP认证失败时该位置位Sn_IR5PNEXTPPP下一过程中断在PPPoE连接过程中,该过程改变时置位Sn_IR4SENDOK发送完成中断SEND命令完成后置位Sn_IR3TIMEOUT超时中断在ARP和TCP
24、过程中超时置位Sn_IR2RECV接收数据中断端口从对端接收到数据时置位Sn_IR1DISCON断开连接中断接收到从对端来的FIN或FIN/ACK数据包时置位Sn_IR0CON连接中断与对端成功建立连接时置位3.3.1.3 SOCKETn目的IP地址寄存器在TCP客户端模式下,运行CONNECT命令之前,必须将SOCKETn目的IP地址寄存器(Sn_DIPR)设置为TCP服务器的IP地址。而在TCP服务器模式,当成功建立连接以后,它被W5300自动配置为TCP客户端的IP地址。?Sn_DIPR0寄存器地址:0x214(0x254、0x294)?Sn_DIPR0寄存器配置值:DIPR31:16?
25、Sn_DIPR1寄存器地址:0x216(0x256、0x296)?Sn_DIPR1寄存器配置值:DIPR15:03.3.1.4 端口号寄存器设置端口号寄存器设置包括对SOCKETn源端口号寄存器(Sn_PORTR)和SOCKETn目的端口号寄存器(Sn_DPORTR)的配置。1) SOCKETn源端口号寄存器(Sn_PORTR)用于配置源端口的端口号,必须在OPEN命令之前设置。?Sn_PORTR寄存器地址:0x20A(0x24A、0x28A)?Sn_PORTR寄存器配置值:2) SOCKETn目的端口号寄存器(Sn_DPORTR)用于设置SOCKETn的目的端口号。在TCP客户端模式下运行C
26、ONNECT命令之前,需要将它设置为处于TCP服务器模式下的侦听端口的端口号。而在TCP服务器模式,当成功建立连接以后,它被W5300自动配置为TCP客户端的端口号。?Sn_DPORTR寄存器地址:0x212(0x252、0x252)?Sn_DPORTR寄存器配置值:3.3.2 SOCKET建链基于TCP模式的SOCKET建链,建链过程中需要配置及查询SOCKETn命令寄存器(Sn_CR)、SOCKETn中断寄存器(Sn_IR)和SOCKETn状态寄存器(Sn_SSR)。?SOCKETn命令寄存器地址:0x202(0x242、0x282)?SOCKETn中断寄存器地址:0x206(0x246、
27、0x286)?SOCKETn状态寄存器地址:0x208(0x248、0x288)下表3.3.2-1为SOCKETn命令寄存器说明:表3.3.2-1SOCKETn命令寄存器值命令说明0x01打开端口OPEN它根据Sn_MR(P3P0)所定义的协议类型初始化端口并打开端口0x02侦听LISTEN只有在TCP模式下有效(Sn_MR(P3:P0)=Sn_MR_TCP)它将SOCKETn设置为TCP服务器模式。它将改变Sn_SSR寄存器的SOCK_INIT为SOCK_LISTEN,以等待其它TCP客户端的连接请求(SYN数据包)当Sn_SSR为SOCK_LISTEN且成功处理了其它TCP客户端的连接请求
28、时,Sn_IR(0)将置1,而Sn_SSR变为SOCK_ESTABLISHED。如果没有处理连接请求(SYN/ACK传输失败),TCP产生超时(Sn_IR(3)=1)且Sn_SSR变为SOCK_CLOSED0x04连接CONNECT它将端口设置为TCP客户端模式它发送连接请求到由Sn_DIPR和Sn_DPORTR指定的TCP服务器。当连接请求被成功处理(收到SYN/ACK数据包),Sn_IR(0)置1:且Sn_SSR的状态变为SOCK_ESTABLISHED。如果连接失败,可能有三种情况1 .ARP产生超时,因为目标硬件地址无法获得2 .没有收到SYN/ACK数据包而产生超时(Sn_IR(3)
29、=1)3 .收到RST数据包而不是SYN/ACK数据包以上三种情况Sn_SSR者B将变为SOCK_CLOSED状态0x08断开连接DISCON不论是TCP服务器还是客户端,它都将执行断开连接的处理。1 .主动关闭:它发送断开连接的请求(FIN数据包)到连接的对端2 .被动关闭:当收到对端的断开连接请求(FIN数据包)时,它发送FIN数据包。如果断开连接成功(收到对端的FIN/ACK数据包),Sn_SSR的状态将变为SOCK_CLOSED。如果断开连接失败,产生TCP超时(Sn_IR(3)=1)且Sn_SSR的状态变为SOCK_CLOSED。另外,如果直接使用CLOSE命令而不是DISCON命令
30、,只有Sn_SSR的状态变为SOCK_CLOSED,不产生断开连接的处理(断开连接的请求)。如果在通信过程中收到对端发送来的RST数据包,Sn_SSR无条件变为SOCK_CLOSED状态。0x10端口关闭CLOSE关闭端口,Sn_SSR的状态变为SOCK_CLOSED。0x20发送数据SEND启动数据发送,发送的字节长度由Sn_TX_WRSR确定。当发送过程结束,Sn_IR(SENDOK)将置1,主机检测到Sn_IR(SENDOK)=1后,可以进行下一次的传输。如果通过SEND命令数据包成功传输到对端(当收到对端的DATA/ACK数据包),Sn_TX_FSR根据传输的数据长度自动增加。如果没有
31、传输成功(没有收到DATA/ACK的数据包),将产生超时(Sn_IR(3)=1),且Sn_SSR进入SOCK_CLOSED状态。另外,主机在使用SEND命令发送数据之前,首先通过Sn_TX_FIFOR寄存器将数据写入到TX存储器,然后写入要发送数据的字节数到Sn_TX_WRSR。0x40接收数据RECV它表示主机接收到SOCKETn的数据在使用RECV命令前,主机需要通过Sn_RX_FIFOR寄存器从RX存储器读取接收的数据。卜表3.3.2-2为SOCKETn状态寄存器中与TCP模式相关的说明:表3,3.2-2SOCKETn状态寄存器值符号说明0x00SOCK_CLOSEDSOCKETn端口资
32、源释放状态当执行DISCON或CLOSE命令,或产生ARP、TCP超时,不管以前是什么状态,此时它都变为SOCK_CLOSED状态0x13SOCK_INITSOCKETn以TCP模式打开时的状态当Sn_MR(P3P0)为Sn_MR_TCP且执行OPEN命令时,它变为SOCK_INIT状态。它是建立TCP连接的第一步。这时可以使用LISTEN命令设置TCP服务器模式,或CONNECT命令设置TCP客户端模式0x14SOCK_LISTEN它是SOCKETn在TCP服务器状态等待TCP客户端的连接请求(SYN数据包)当运行LISTEN命令时,它改变为SOCK_LISTEN状态。当成功处理了TCP客户
33、端的连接请求(SYN数据包),SOCK_LISTEN变为SOCK_ESTABLISHED。如果失败,将产生超时中断(Sn_IR(TIMEOUT)=1),且状态改变为SOCK_CLOSED0x17SOCK_ESTABLISHED它是TCP建立连接的状态在SOCK_LISTEN状态,收到TCP客户端SYN数据包并成功处理,它将变成SOCK_ESTABLISHED,或CONNECT命令成功运行。在这种状态,可以进行数据传输,即可以运行SEND或RECV命令。0x1CSOCK_CLOSE_WAIT该状态是收到对端断开连接请求(FIN数据包)由于TCP连接处于半关闭状态,但可以进行数据传输。为了彻底断开
34、TCP连接,必须执行DISCON命令。如果关闭SOCKEn而没有断开连接的处理,可以只运行CLOSE命令0x15SOCK_SYNSENT该状态表示连接请求(SYN数据包)发送到TCP服务器该状态显示CONNECT命令从SOCK_INIT至USOCK_ESTABLISHED的状态改变过程在这种状态,如果收到TCP服务器允许连接信息(SYN/ACK数据包),状态自动转换为SOCK_ESTABLISHED。如果在产生TCP超时(Sn_IR(TIMEOUT)=1)之前没有收到TCP服务器的SYN/ACK数据包,那么它自动转变为SOCK_CLOSED0x16SOCK_SYNRECV该状态表示收到TCP客
35、户端的连接请求(SYN数据包)当W5300向TCP客户端发出允许连接(SYN/ACK数据包)信息后,它自动变换为SOCK_ESTABLISHED。如果失败,将产生超时(Sn_IR(TIMEOUT)=1),且改变为SOCK_CLOSED0x18SOCK_FIN_WAITSOCKETn被关闭的状态当SOCKET完成主动关闭或被动关闭的断开连接处理时出现这种状态。当成断开连接处理或TCP超时(Sn_IR(TIMEOUT)=1),它的状态将改变为SOCK_CLOSED0X1BSOCK_TIME_WAIT0X1DSOCK_LAST_ACK3.3.2.1 SOCKET打开运行OPEN命令将所操作的SOCK
36、ET打开。1)打开设置向SOCKETn命令寄存器(Sn_CR)写入OPEN命令:0x01;2) 打开状态查询读取SOCKETn状态寄存器(Sn_SSR),如果寄存器值为0x13(SOCK_LISTEN),SOCKET即处于打开状态。3.3.2.2 SOCKET侦听运行LISTEN命令将W5300设置为TCP服务器模式。1) 侦听设置向SOCKETn命令寄存器(Sn_CR)写入LISTEN命令:0x02;2) 侦听状态查询读取SOCKETn状态寄存器(Sn_SSR),如果寄存器值为0x14(SOCK_LISTEN),SOCKET即处于侦听状态。3.3.2.3 SOCKET链接运行CONNECT命
37、令将W5300设置为TCP服务器模式。1) 链接设置向SOCKETn命令寄存器(Sn_CR)写入CONNECT命令:0x03;2) 链接状态查询读取SOCKETn状态寄存器(Sn_SSR),如果寄存器值为0x17(SOCK_ESTABLISHED),或者检测到SOCKETn中断寄存器Sn_IR0被置为'1'则SOCKET即处于链接状态。链接成功后,需要将Sn_IR0的中断标识清除。3.3.3SOCKET数据通信3.3.3.1 接收数据检测是否接收到对端发送过来的数据,并做相应处理。1)检测是否接收到数据方法一:检测SOCKETn中断寄存器Sn_IR2是否被置为了如果为1,
38、9;则确认为接收到对端发送过来的数据。方法二:检测OCKETn接收数据的字节长度寄存器(Sn_RX_RSR)是否等于零,如果不等于零,则确认为接收到对端发送过来的数据。?Sn_RX_RSR寄存器地址:2)接收数据处理步骤一:读取OCKETn接收数据的字节长度寄存器(Sn_RX_RSR),获取当前RXmemory中的数据长度。步骤二:根据步骤一中获取的数据长度,通过SOCKETnRXFIFO寄存器(Sn_RX_FIFOR)获取RXmemory中的数据。?Sn_RX_FIFOR寄存器地址:步骤三:向SOCKETn命令寄存器(Sn_CR)写入RECV命令:0x40;3)是否清楚接收中断接收数据处理完
39、成后,再次检查OCKETn接收数据的字节长度寄存器(Sn_RX_RSR)是否等于零,如果为零,则清除SOCKETn中断寄存器Sn_IR2的中断,否则不清除。3.3.3.2 发送数据将数据通过Sn_TX_FIFOR写入到内部TX存储器后,W5300将试着把数据发送到对端。发送数据的大小不能比分配给该SOCKETn的内部TX存储器空间大。为了下一次数据的发送,主机必须检查上次SEND命令是否执行完毕。如果上一次的SEND命令还没有执行完而又开始下一次的SEND命令,将可能产生各种各样的错误。数据越大,执行SEND命令所需要的时间就会越长。所以要想提高发送效率,适当将数据分为合适的大小发送。1)在检
40、测到有数据发送请求后,需要获取SOCKETn剩余存储空间寄存器(Sn_TX_FSR)和SOCKETn中断寄存器(Sn_IR)。当Sn_IR0等于1'且Sn_IR4等于同(第一次发送数据除外),读取SOCKETn剩余存储空间寄存器(Sn_TX_FSR)中的剩余存储空间,并清除Sn_IR4的中断(第一次发送数据除外)。?Sn_TX_FSR寄存器地址:2) 通过SOCKETnTXFIFO寄存器(Sn_TX_FIFOR)发送待发数据,发送的数据量不能超过Sn_TX_FSR中的剩余存储空间。3) 待发数据写入TXmemory后,向SOCKETn命令寄存器(Sn_CR)写入SEND命令:0x20;
41、3.3.4SOCKET关闭3.3.4.1 断开链接处理当接收到有对端的断开连接的请求(接收到FIN数据包),或者接收到上层应用的断链请求后,需要做断开链接处理。1)检测到SOCKETn中断寄存器(Sn_IR)的Sn_IR1等于对,确认为接收到接收到对端的FIN数据包或者接U到对端的FIN/ACK数据包,可以进行断开链接处理,并将中断标志清除。2)向SOCKETn命令寄存器(Sn_CR)写入DISCON命令,进行断开链接处理。3.3.4.2 超时超时可能发生在TCP数据包传输过程中,如连接请求(SYN数据包)或其响应数据包(SYN/ACK数据包)、数据(DATA数据包)或其响应数据包(DATA/
42、ACK数据包)、断开连接请求(FIN数据包)或其响应数据包(FIN/ACK数据包)等等。如果以上的数据包在RTR和RCR设定的时间内没有发送出去,那么将产生TCP超时,且Sn_SSR将改变为SOCK_CLOSED状态。当检测到SOCKETn中断寄存器(Sn_IR)的Sn_IR3等于的,既可以确认为数据通信产生了超时。3.3.4.3 端口关闭当接收到上层应用的关闭(复位)请求后,做SOCKET关闭处理。1)初始化Sn_IR,即向Sn_IR写入初始值(为中断屏蔽寄存器的初始值)。2)向SOCKETn命令寄存器(Sn_CR)写入CLOSE命令,进行端口关闭处理4逻辑实现方案根据上述的流程控制,及实际
43、的应用要求,基于纯逻辑的W5300控制器的实现方案。4.1 逻辑架构如下图4.1-1所示,整个实现逻辑可分为4模块:接口控制模块(InterfaceControl)、网络主控模块(EthernetMainControl)、初始化配置模块(InitialConfig)和端口驱动模块(SOCKETn Driver )。4.2 接口控制模块接口控制模块,InterfaceControl主要完成对控制器读写W5300的操作信号进行时序转换,以满足W5300的读写时序要求。4.2.1 读时序实现4.2.1.1 时序要求下图4.2.1.1-1为W5300读时序图:图4.2.1.1-1W5300读时序图下表
44、为读时序要求说明:表4.2.1.1-1W5300读时序要求名称说明最小取大tADDRsAddressSetupTimeafter/CSand/RDlow-7nstADDRhAddressHoldTimeafter/CSor/RDhigh-tCS/CSLowTime65ns-tCSn/CSNextAssertTime28ns-tRD/RCLowTime65ns-tDATAsDATASetupTimeafter/RDlow42ns-tDATAhDATAHoldTimeafter/RDand/CShigh-7nstDATAheDATAHoldExtensionTimeafter/CShigh-2XP
45、LL_CLK4.2.1.2 逻辑实现时序下图4.2.1.2-1为接口控制模块在逻辑中实现读时序(通过100M时钟实现)图4.2.1.2-1W5300读时序实现图4.2.2 写时序实现4.2.2.1 时序要求下图4.2.2.1-1为W5300写时序图:图4.2.2.1-1W5300写时序图下表为写时序要求说明:表4.2.2.1-1W5300写时序要求名称说明最小取大tADDRsAddressSetupTimeafter/CSand/WRlow-7nstADDRhAddressHoldTimeafter/CSor/WRhigh-tCS/CSLowTime50ns-tCSn/CSNextAssert
46、Time28nstWR/WRlowtime50nstDATAsDATASetupTimeafter/WRlow7ns7ns+7XPLL_CLKtDATAfDataFetchTime14nstWR-tDATAstDATAhDataHoldTimeafter/WRhigh7ns-4.2.2.2 逻辑实现时序下图4.2.2.2-1为接口控制模块在逻辑中实现写时序(通过100M时钟实现)图4.2.2.2-1W5300写时序图4.2.3 实现状态机接口控制模块的实现状态机如下图:图4.2.3-1接口控制模块的实现状态机状态机各状态说明:1. timing_idle:状态机初始化,复位后后进入的状态,16
47、0ns后跳出。2. CMD_rdfifo_judge:判断需要写入W5300的数据缓存fifo是否有数据,并寄存当前fifo中的数据量。3. rd_CMD_fifo:读取数据缓存fifo中的数据,该状态维持时间需要满足tCS的时间(如果时钟为100M,则该状态需要维持时间必须为30ns)。4. CMD_wr_rd_out:在该状态需要判断rd_CMD_fifo读出来的数据是读W5300还是写W5300,并根据判断的结果对W5300进行读写操作。4.2.4 接口定义4.3 主控制模块主控制模块,ethmaincontrol主要对初始化配置模块、SOCKETn驱动模块的分时控制。4.3.1 实现状
48、态机下图4.3.1-1为主控制模块的实现状态机:图4.3.1-1主控制模块的实现状态机状态机各状态说明:1. mc_idle:状态机初始化,复位后后进入的状态,160ns后跳出。2. host_reset:在该态对W5300硬件复位,复位时间为为65536ns。3. reset_wait:W5300复位后的等待状态,维持时间是1ms。4. host_config:产生控制信号,驱动初始化配置模块对W5300进行参数配置。5. host_reg_gain:W5300的相关寄存器的获取模块,获取W5300的中断寄存器和各SOCKET的RSR寄存器。6. host_ir_detect:对W5300中
49、断寄存器的IPCF位判断。7. ip_conflict:如果W5300中断寄存器的IPCF位置1,'则状态机跳入该状态,表明有网络中存在IP冲突。8. app_req_proc:对后端应用的请求做处理,产生各个SOCKET的mark寄存器,如下表:表4.3.1-1Sn_MR寄存器Sn_prc_mark6:0名称说明bit0Ir_reqW5300的SOCKETn有中断标识bit1moni_req后端应用的监听请求bit2Link_req后端应用的链接请求bit3Discon_req后端应用的断链请求bit4Close_req后端应用的关闭请求bit5send_req后端应用的数据发送请求
50、bit6Recv_reqW5300中有数据接收请求9.Sn_proc_judge:对mark寄存器判断,如果不为0'则进入Sn_driver_proc状态。10. Sn_driver_proc:产生控制信号,驱动SOCKET启动模块对mark寄存器中的请求做相应处理。4.3.2 接口定义4.4 初始化配置模块初始化配置模块,initialconfig主要完成W5300的初始化参数的配置:本端IP、对端IP,子网掩码等,具体参数可参见2.2节。4.4.1 实现状态机下图4.4.1-1为初始化配置模块的实现状态机:图4.4.1-1初始化配置模块的实现状态机状态机各状态说明:1. confi
51、g_idle:初始状态,等待主控模块的启动。2. overall_config、socket0_config、socket1_config>socket2_config:参数配置状态,获取模块需口上寄存的参数:并将参数转换成限口控制模块数据落式后写入TX_fifo中。3. config_turn:配置结束状态,在该状态通知主控模块初始化配置已经完成。4.4.2 接口定义4.5 SOCKET驱动模块SOCKETn驱动模块,SOCKETndriver主要完成SOCKETn的监听、链接、断链、关闭和接收发送数据。4.5.1 实现状态机下图4.5.1-1为主控制模块的实现状态机:图4.5.1-1
52、初始化配置模块的实现状态机状态机各状态说明:1. diver_idle:初始状态,等待主控模块的启动。2. detect_SIR:检测mark寄存器的Ir_req位,如果该位为1'则状态机跳入SIR_proc状态,如果为Q'则状态机跳入detect_open状态。3. SIR_proc:在该状态,将读取W5300的SOCKET的中断寄存器,根据中断寄存器中的值,进行下一个状态的跳转。4. Close_judge:进入该状态表明,驱动器需要对W5300的SOCKET进行关闭操作。但在关闭前需要判断是否当前W5300是否处于可以关闭的状态。5. Close_proc:在该状态进行S
53、OCKET的关闭操作。6. Detect_open、open_proc:在Detect_open状态检测mark寄存器的moni_req或link_req位是否为1,'如果条件成立,则状态机进入open_proc状态,对SOCKET进彳oopen操作。7. Detect_moni、moni_proc:在Detect_moni检测mark寄存器的moni_req位是否为1'如果成立,则状态机进入moni_proc状态,对SOCKET进彳flensten操作。8. Detect_link、link_proc:在Detect_link检测mark寄存器的link_req位是否为如果成
54、立,则状态机进入link_proc状态,对SOCKET进彳fconnect操作。9. Detect_recv、recv_proc:在Detect_recv检测mark寄存器的recv_req位是否为1如果成立,则状态机进入recv_proc状态,读取SOCKET中接收到的数据。10. Detect_send、send_proc:在Detect_send检测mark寄存器的send_req位是否为如果成立,则状态机进入recv_proc状态,将待发送的数据依次写入SOCKET的发送寄存器中(写入的数据量不能超过SOCKET发送缓冲区的剩余空间)。11. Detect_discon:在Detect_discon检测mark寄存器的discon_req位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新辅助化疗护理查房
- 安徽省安庆二中2015-2016学年高三物理上学期第一次质量检测试题
- 重度脑挫裂伤护理查房
- 糖尿病胃轻瘫中医护理
- 食管癌吻合口瘘护理
- 重庆理工职业学院《视觉传达应用》2023-2024学年第二学期期末试卷
- 漳州城市职业学院《中学基础教育研究专题》2023-2024学年第二学期期末试卷
- 商丘幼儿师范高等专科学校《外国刑事诉讼法》2023-2024学年第二学期期末试卷
- 西南交通大学希望学院《计量地理学含实验》2023-2024学年第二学期期末试卷
- 无锡学院《毒理学基础实验》2023-2024学年第二学期期末试卷
- 2025眼镜行业市场分析报告
- GB/T 17642-2025土工合成材料非织造布复合土工膜
- 河南省郑州市2025届中考二模 数学试卷(含答案)
- 2022-2023学年广东省广州市天河区七年级(下)期末数学试卷(含答案)
- (四调)武汉市2025届高中毕业生四月调研考试 数学试卷(含答案详解)
- GB/T 24630.2-2024产品几何技术规范(GPS)平面度第2部分:规范操作集
- 应急预案演练记录表
- 建设用地报批服务投标方案(技术方案)
- 市政工程安全施工组织设计
- 华为流程审计方法论共83页文档课件
- 单元式多层住宅设计图
评论
0/150
提交评论