W5300控制器详细设计及使用说明文档.docx
- 文档编号:4782353
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:41
- 大小:358.31KB
W5300控制器详细设计及使用说明文档.docx
《W5300控制器详细设计及使用说明文档.docx》由会员分享,可在线阅读,更多相关《W5300控制器详细设计及使用说明文档.docx(41页珍藏版)》请在冰豆网上搜索。
W5300控制器详细设计及使用说明文档
1引言
1.1编写目的
1.2定义
1.3参考资料
Ø《High-performance_Internet_Connectivity_Solution_W5300_V1.2.3》
Ø《W5300中文用户数据手册_V1.2.2》
2W5300控制器的实现流程
本W5300控制器在16位数据的直接模式地址方式的基础上实现。
2.1实现流程图
2.2流程简要说明
1.W5300reset:
W5300工作之前,需要对其进行复位,复位低电平有效,并且至少保持2us(W5300不支持上电复位,必须通过‘/reset’接口对其进行复位)。
2.Waitforatleast10ms:
W5300复位后,需要等待至少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.1W5300RESET
通过W5300芯片的‘/RESET’接口对芯片进行复位,低电平有效。
RESET信号低电平至少持续2us,为了使锁相环逻辑稳定,复位信号恢复高电平后至少等待10ms,见图3.1-1。
W5300不支持上电复位。
因此必须由外部系统给出复位信号。
在复位信号有效的2us期间,需要对‘BIT16EN’接口进行配置。
‘BIT16EN’为16/8位数据位选择,它确定W5300的数据位的宽度:
高电平选择16位数据位,低电平选择8位数据位。
在复位期间,它被锁存在模式寄存器(MR)的第15位,复位后它的改变不会产生影响。
即数据位的宽度在复位后不会发生改变。
图3.1-1W5300复位初始化
3.2W5300初始化
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寄存器
位
符号
说明
MR[15]
DBW
数据总线宽度
0:
8位数据总线宽度
1:
16位数据总线宽度
在W5300复位期间,这个值由BIT16EN引脚的电平确定。
复位后,这个值不改变。
MR[14]
MPF
MAC层终止数据报文
0:
正常报文
1:
终止报文
当从路由器或交换机收到终止报文时,该位置‘1’。
当设置为‘1’时,将停止数据传输,直到该位为‘0’
MR[13]
WDF2
写数据访问时间
当写数据操作时,/CS为低电平后,W5300在WDF×PLL_CLK时间后取写入的数据,如果主机写操作在WDF×PLL_CLK完成(/CS恢复为高电平),写入的数据在‘/CS’为高电平时取走
MR[12]
WDF1
MR[11]
WDF0
MR[10]
RDH
读数据保持时间
0:
没有数据保持时间
1:
数据保持时间为2×PLL_CLK
在主机进行读操作时,当主机的读操作完成(/CS恢复高电平)后,W5300在2×PLL_CLK时间之保持读取的数据。
在这种情况下,注意数据总线上的数据冲突
MR[9]
-
保留
MR[8]
FS
FIFO交换
0:
禁止交换
1:
允许交换
它用于高字节和低字节的交换。
W5300的字节一般采用大端模式。
如果主机系统采用小端模式,那么将该位置‘1’,将Sn_TX_FIFOR和Sn_RX_FIFOR的字节顺序交换,使用效果与小端模式相同
MR[7]
RST
软件复位
该位置‘1’,对W5300软件复位。
复位结束后自动清‘0’
MR[6]
-
保留
MR[5]
MT
存储器测试
0:
禁止部RX/TX存储器测试
1:
允许部存储器测试
一般来讲,W5300部TX存储器支持主机通过Sn_TX_FIFOR寄存器的写操作,而部RX存储器只支持主机通过Sn_RX_FIFOR寄存器的读操作。
如果该位置‘1’,部RX/TX存储器同时支出通过Sn_TX_FIFOR和Sn_RX_FIFOR的读写操作,从而校验部TX/RX存储器。
测试W5300部TX/RX完成后,需要对系统重新复位或关闭端口。
MR[4]
PB
Ping功能阻止模式
0:
允许Ping
1:
禁止Ping
自动Ping应答支持最多119个字节。
Ping功能阻止模式还需要考虑Sn_MR和Sn_PROTOR的设置。
MR[3]
PPPoE
PPPoE模式
0:
禁止PPPoE模式
1:
启动PPPoE模式
MR[2]
DBS
数据总线交换
0:
禁止交换
1:
允许交换
DBS位只交换Sn_TX_FIFOR/Sn_RX_FIFOR的高字节和低字节。
然而该位交换所有寄存器的高字节和低字节,包括Sn_TX_FIFOR/Sn_RX_FIFOR寄存器。
该位只有DBW为‘1’时有效。
MR[1]
-
保留
MR[0]
IND
间接总线模式
0:
直接总线模式
1:
间接总线模式
它设置W5300与主机的接口模式
3.2.3host主机中断设置
主机中断设置即为对中断屏蔽寄存器进行配置,它配置W5300的中断并报告给主机。
IMR的每一个中断屏蔽位对应IR的每一个中断位。
当IR的任何一个位为‘1’且相应的IMR位也为‘1’时,将向主机产生中断(‘/INT’输出低电平)。
如果相应的IMR位为‘0’,将不产生中断(‘/INT’保持高电平),即使IR位为‘1’。
ØIMR寄存器地址:
0x004
ØIMR基础器配置值:
0x80FF
下表2.2.3-1为IR寄存器的位说明,可以根据IR寄存器对IMR寄存器进行配置:
表3.2.3-1IR寄存器
位
符号
说明
IR[15]
IPCF
IP冲突
当IP地址产生冲突时,该位置‘1’时(当接收到ARP请求数据包的IP地址与W5300本机IP地址相同)。
当它置‘1’时,网络中的另外一个设备使用了相同的IP地址,将造成通信错误。
因此需要尽快采取措施解决这个问题。
IR[14]
DPUR
目标端口无法到达
当收到ICMP(目的端口无法到达)数据包时,该位置‘1’。
该中断用于UDP协议传输。
IR[13]
PPPT
PPPoE中止
在PPPoE模式,当与服务器连接关闭时,该位置‘1’。
IR[12]
FMTU
分片最大传输单元(MTU)
当收到ICMP(分片最大传输单元)数据包时,该位置‘1’。
在基于UDP协议传输时,需要考虑。
TCP协议下可以不需要考虑。
IR[11:
8]
-
保留
IR[7]
S7_INT
SOCKET7中断
当SOCKET7产生中断时,该位置‘1’。
该中断信息对应于S7_IR1。
当S7_IR1被主机清‘0’后,该位自动清‘0’。
IR[6]
S6_INT
SOCKET6中断
当SOCKET6产生中断时,该位置‘1’。
该中断信息对应于S6_IR1。
当S6_IR1被主机清‘0’后,该位自动清‘0’。
IR[5]
S5_INT
SOCKET5中断
当SOCKET5产生中断时,该位置‘1’。
该中断信息对应于S5_IR1。
当S5_IR1被主机清‘0’后,该位自动清‘0’。
IR[4]
S4_INT
SOCKET4中断
当SOCKET4产生中断时,该位置‘1’。
该中断信息对应于S4_IR1。
当S4_IR1被主机清‘0’后,该位自动清‘0’。
IR[3]
S3_INT
SOCKET3中断
当SOCKET3产生中断时,该位置‘1’。
该中断信息对应于S3_IR1。
当S3_IR1被主机清‘0’后,该位自动清‘0’。
IR[2]
S2_INT
SOCKET2中断
当SOCKET2产生中断时,该位置‘1’。
该中断信息对应于S2_IR1。
当S2_IR1被主机清‘0’后,该位自动清‘0’。
IR[1]
S1_INT
SOCKET1中断
当SOCKET1产生中断时,该位置‘1’。
该中断信息对应于S1_IR1。
当S1_IR1被主机清‘0’后,该位自动清‘0’。
IR[0]
S0_INT
SOCKET0中断
当SOCKET0产生中断时,该位置‘1’。
该中断信息对应于S0_IR1。
当S0_IR1被主机清‘0’后,该位自动清‘0’。
3.2.4基本网络信息设置
基本网络信息设置,即为对W5300的本机硬件地址(MAC)寄存器(SHAR)、网关IP地址寄存器(GAR)、子网掩码寄存器(SUBR)和本机IP地址寄存器(SIPR)进行配置。
1)本机硬件地址(MAC)寄存器(SHAR)配置:
ØSHAR0寄存器地址:
0x008
ØSHAR0寄存器配置值:
MAC[47:
32]
ØSHAR2寄存器地址:
0x00A
ØSHAR2寄存器配置值:
MAC[31:
16]
ØSHAR4寄存器地址:
0x00C
ØSHAR4寄存器配置值:
MAC[15:
0]
2)网关IP地址寄存器(GAR)配置:
ØGAR0寄存器地址:
0x010
ØGAR0寄存器配置值:
GAR[31:
16]
ØGAR1寄存器地址:
0x012
ØGAR1寄存器配置值:
GAR[15:
0]
3)子网掩码寄存器(SUBR)配置:
ØSUBR0寄存器地址:
0x014
ØSUBR0寄存器配置值:
SUBR[31:
16]
ØSUBR1寄存器地址:
0x016
ØSUBR1寄存器配置值:
SUBR[15:
0]
4)本机IP地址寄存器(SIPR)
ØSIPR0寄存器地址:
0x014
ØSIPR0寄存器配置值:
SUBR[31:
16]
ØSIPR1寄存器地址:
0x016
ØSIPR1寄存器配置值:
SUBR[15:
0]
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.6SOCKETn的部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
Ø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模式下数据通信的工作流程:
图3.3-1TCP模式下数据通信工作流程
3.3.1SOCKET初始化
为了实现TCP通信,需要对SOCKET进行初始化设置并打开SOCKET。
为了打开SOCKET,选择其中的一个SOCKET(被选择的SOCKET称之为SOCKETn),通过SOCKETn模式寄存器(Sn_MR)和SOCKETn源端口号寄存器(Sn_PORTR)分别设置通信协议和本机端口号(在TCP服务器模式,称之为侦听端口号),然后执行OPEN命令。
执行完OPEN命令后,如果Sn_SSR改变为SOCK_INIT,则SOCKET的初始化设置完成。
3.3.1.1SOCKETn模式寄存器设置
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-1Sn_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等)或PPPoESOCKET与PPPoE服务器之间的操作。
4’b0000:
SOCKETClosed;
4’b0001:
TCP;
4’bxxx0:
其它
3.3.1.2SOCKETn中断屏蔽寄存器设置
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-1IR寄存器
位
符号
说明
Sn_IR[7]
PRECV
PPP接收中断
接收到不支持的可选数据(OptionData)时,该位置位。
Sn_IR[6]
PFAIL
PPP失败中断
PAP认证失败时该位置位
Sn_IR[5]
PNEXT
PPP下一过程中断
在PPPoE连接过程中,该过程改变时置位
Sn_IR[4]
SENDOK
发送完成中断
SEND命令完成后置位
Sn_IR[3]
TIMEOUT
超时中断
在ARP和TCP过程中超时置位
Sn_IR[2]
RECV
接收数据中断
端口从对端接收到数据时置位
Sn_IR[1]
DISCON
断开连接中断
接收到从对端来的FIN或FIN/ACK数据包时置位
Sn_IR[0]
CON
连接中断
与对端成功建立连接时置位
3.3.1.3SOCKETn目的IP地址寄存器
在TCP客户端模式下,运行CONNECT命令之前,必须将SOCKETn目的IP地址寄存器(Sn_DIPR)设置为TCP服务器的IP地址。
而在TCP服务器模式,当成功建立连接以后,它被W5300自动配置为TCP客户端的IP地址。
ØSn_DIPR0寄存器地址:
0x214(0x254、0x294)
ØSn_DIPR0寄存器配置值:
DIPR[31:
16]
ØSn_DIPR1寄存器地址:
0x216(0x256、0x296)
ØSn_DIPR1寄存器配置值:
DIPR[15:
0]
3.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客户端模式下运行CONNECT命令之前,需要将它设置为处于TCP服务器模式下的侦听端口的端口号。
而在TCP服务器模式,当成功建立连接以后,它被W5300自动配置为TCP客户端的端口号。
ØSn_DPORTR寄存器地址:
0x212(0x252、0x252)
ØSn_DPORTR寄存器配置值:
3.3.2SOCKET建链
基于TCP模式的SOCKET建链,建链过程中需要配置及查询SOCKETn命令寄存器(Sn_CR)、SOCKETn中断寄存器(Sn_IR)和SOCKETn状态寄存器(Sn_SSR)。
ØSOCKETn命令寄存器地址:
0x202(0x242、0x282)
ØSOCKETn中断寄存器地址:
0x206(0x246、0x286)
ØSOCKETn状态寄存器地址:
0x208(0x248、0x288)
下表3.3.2-1为SOCKETn命令寄存器说明:
表3.3.2-1SOCKETn命令寄存器
值
命令
说明
0x01
打开端口
OPEN
它根据Sn_MR(P3~P0)所定义的协议类型初始化端口并打开端口
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客户端的连接请求时,Sn_IR(0)将置‘1’,而Sn_SSR变为SOCK_ESTABLISHED。
如果没有处理连接请求(SYN/ACK传输失败),TCP产生超时(Sn_IR(3)=1)且Sn_SSR变为SOCK_CLOSED
0x04
连接
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)=1)
3.收到RST数据包而不是SYN/ACK数据包
以上三种情况Sn_SSR都将变为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命令,只有Sn_SSR的状态变为SOCK_CLOSED,不产生断开连接的处理(断开连接的请求)。
如果在通信过程中收到对端发送来的RST数据包,Sn_SSR无条件变为SOCK_CLOSED状态。
0x10
端口关闭
CLOSE
关闭端口,Sn_SSR的状态变为SOCK_CLOSED。
0x20
发送数据
SEND
启动数据发送,发送的字节长度由Sn_TX_WRS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- W5300 控制器 详细 设计 使用说明 文档