W5300控制器详细设计及使用说明文档.docx
《W5300控制器详细设计及使用说明文档.docx》由会员分享,可在线阅读,更多相关《W5300控制器详细设计及使用说明文档.docx(31页珍藏版)》请在冰豆网上搜索。
W5300控制器详细设计及使用说明文档控制器详细设计及使用说明文档1引言引言1.1编写目的编写目的1.2定义定义1.3参考资料参考资料W5300中文用户数据手册2W5300控制器的实现流程控制器的实现流程本W5300控制器在16位数据的直接模式地址方式的根底上实现。
2.1实现流程图实现流程图2.2流程简要说明流程简要说明1.W5300reset:
W5300工作之前,需要对其进展复位,复位低电平有效,并且至少保持2usW5300不支持上电复位,必须通过/reset接口对其进展复位。
2.Waitforatleast10ms:
W5300复位后,需要等待至少10ms使得W500部锁相环稳定后,才能进展W5300初始化操作。
3.W5300initialization:
初始化W5300就是将相应的参数按照写时序要求写入存放器。
初始化分为3个步骤:
1)主机接口配置:
设置主机接口模式和时序,设置数据位宽,设置主机中断。
2)设置网络信息:
设置数据通信的根本信息SHAR、GAS、SBUS和SIPR;设置重新发送的时间间隔和重发次数。
3)部T*/R*存储器分配:
定义部T*/R*存储器大小及SOCKTEn的T*/R*存储器大小。
4.Datamunicate:
对使用的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存放器地址:
0*000MR根底器配置值:
0*B800下表为MR存放器的配置说明:
表3.2.2-1MR存放器位符号说明MR15DBW数据总线宽度0:
8位数据总线宽度1:
16位数据总线宽度在W5300复位期间,这个值由BIT16EN引脚的电平确定。
复位后,这个值不改变。
MR14MPFMAC层终止数据报文0:
正常报文1:
终止报文当从路由器或交换机收到终止报文时,该位置1。
当设置为1时,将停顿数据传输,直到该位为0MR13WDF2MR12WDF1写数据时间当写数据操作时,/CS为低电平后,W5300在WDFPLL_CLK时间后取写入的数据,如果主机写操作在WDFPLL_CLK完成/CS恢复为高电平,写入的数据在/CS为高电平时取走MR11WDF0MR10RDH读数据保持时间0:
没有数据保持时间1:
数据保持时间为2PLL_CLK在主机进展读操作时,当主机的读操作完成/CS恢复高电平后,W5300在2PLL_CLK时间之保持读取的数据。
在这种情况下,注意数据总线上的数据冲突MR9-保存MR8FSFIFO交换0:
制止交换1:
允许交换它用于高字节和低字节的交换。
W5300的字节一般采用大端模式。
如果主机系统采用小端模式,则将该位置1,将Sn_T*_FIFOR和Sn_R*_FIFOR的字节顺序交换,使用效果与小端模式一样MR7RST软件复位该位置1,对W5300软件复位。
复位完毕后自动清0MR6-保存MR5MT存储器测试0:
制止部R*/T*存储器测试1:
允许部存储器测试一般来讲,W5300部T*存储器支持主机通过Sn_T*_FIFOR存放器的写操作,而部R*存储器只支持主机通过Sn_R*_FIFOR存放器的读操作。
如果该位置1,部R*/T*存储器同时支出通过Sn_T*_FIFOR和Sn_R*_FIFOR的读写操作,从而校验部T*/R*存储器。
测试W5300部T*/R*完成后,需要对系统重新复位或关闭端口。
MR4PBPing功能阻止模式0:
允许Ping1:
制止Ping自动Ping应答支持最多119个字节。
Ping功能阻止模式还需要考虑Sn_MR和Sn_PROTOR的设置。
MR3PPPoEPPPoE模式0:
制止PPPoE模式1:
启动PPPoE模式MR2DBS数据总线交换0:
制止交换1:
允许交换DBS位只交换Sn_T*_FIFOR/Sn_R*_FIFOR的高字节和低字节。
然而该位交换所有存放器的高字节和低字节,包括Sn_T*_FIFOR/Sn_R*_FIFOR存放器。
该位只有DBW为1时有效。
MR1-保存MR0IND间接总线模式0:
直接总线模式1:
间接总线模式它设置W5300与主机的接口模式3.2.3host主机中断设置主机中断设置主机中断设置即为对中断屏蔽存放器进展配置,它配置W5300的中断并报告给主机。
IMR的每一个中断屏蔽位对应IR的每一个中断位。
当IR的任何一个位为1且相应的IMR位也为1时,将向主机产生中断/INT输出低电平。
如果相应的IMR位为0,将不产生中断/INT保持高电平,即使IR位为1。
IMR存放器地址:
0*004IMR根底器配置值:
0*80FF下表为IR存放器的位说明,可以根据IR存放器对IMR存放器进展配置:
表3.2.3-1IR存放器位符号说明IR15IPCFIP冲突当IP地址产生冲突时,该位置1时当接收到ARP请求数据包的IP地址与W5300本机IP地址一样。
当它置1时,网络中的另外一个设备使用了一样的IP地址,将造成通信错误。
因此需要尽快采取措施解决这个问题。
IR14DPUR目标端口无法到达当收到ICMP目的端口无法到达数据包时,该位置1。
该中断用于UDP协议传输。
IR13PPPTPPPoE中止在PPPoE模式,当与效劳器连接关闭时,该位置1。
IR12FMTU分片最大传输单元MTU当收到ICMP分片最大传输单元数据包时,该位置1。
在基于UDP协议传输时,需要考虑。
TCP协议下可以不需要考虑。
IR11:
8-保存IR7S7_INTSOCKET7中断当SOCKET7产生中断时,该位置1。
该中断信息对应于S7_IR1。
当S7_IR1被主机清0后,该位自动清0。
IR6S6_INTSOCKET6中断当SOCKET6产生中断时,该位置1。
该中断信息对应于S6_IR1。
当S6_IR1被主机清0后,该位自动清0。
IR5S5_INTSOCKET5中断当SOCKET5产生中断时,该位置1。
该中断信息对应于S5_IR1。
当S5_IR1被主机清0后,该位自动清0。
IR4S4_INTSOCKET4中断当SOCKET4产生中断时,该位置1。
该中断信息对应于S4_IR1。
当S4_IR1被主机清0后,该位自动清0。
IR3S3_INTSOCKET3中断当SOCKET3产生中断时,该位置1。
该中断信息对应于S3_IR1。
当S3_IR1被主机清0后,该位自动清0。
IR2S2_INTSOCKET2中断当SOCKET2产生中断时,该位置1。
该中断信息对应于S2_IR1。
当S2_IR1被主机清0后,该位自动清0。
IR1S1_INTSOCKET1中断当SOCKET1产生中断时,该位置1。
该中断信息对应于S1_IR1。
当S1_IR1被主机清0后,该位自动清0。
IR0S0_INTSOCKET0中断当SOCKET0产生中断时,该位置1。
该中断信息对应于S0_IR1。
当S0_IR1被主机清0后,该位自动清0。
3.2.4根本网络信息设置根本网络信息设置根本网络信息设置,即为对W5300的本机硬件地址MAC存放器SHAR、网关IP地址存放器GAR、子网掩码存放器SUBR和本机IP地址存放器SIPR进展配置。
1)本机硬件地址MAC存放器SHAR配置:
SHAR0存放器地址:
0*008SHAR0存放器配置值:
MAC47:
32SHAR2存放器地址:
0*00ASHAR2存放器配置值:
MAC31:
16SHAR4存放器地址:
0*00CSHAR4存放器配置值:
MAC15:
02)网关IP地址存放器GAR配置:
GAR0存放器地址:
0*010GAR0存放器配置值:
GAR31:
16GAR1存放器地址:
0*012GAR1存放器配置值:
GAR15:
03)子网掩码存放器SUBR配置:
SUBR0存放器地址:
0*014SUBR0存放器配置值:
SUBR31:
16SUBR1存放器地址:
0*016SUBR1存放器配置值:
SUBR15:
04)本机IP地址存放器SIPRSIPR0存放器地址:
0*014SIPR0存放器配置值:
SUBR31:
16SIPR1存放器地址:
0*016SIPR1存放器配置值:
SUBR15:
03.2.5重新发送参数设置重新发送参数设置重新发送参数设置,即为对W5300的重复发送超时存放器RTR和重复发送计数存放器RCR进展配置。
1)重复发送超时存放器RTR用于配置重复发送超时周期的值。
RTR的标准单位是100us,RTR初始化设置为20000*7D0,超时的时间周期为200ms。
RTR存放器地址:
0*01CRTR存放器配置值:
0*07D0200ms2)重复发送计数存放器RCR用于配置重复发送的次数。
当重复发送的次数到达RCR+1时,将产生超时中断Sn_IR的TIMEOUT位置1。
RCR存放器地址:
0*01ERCR存放器配置值:
0*33次APP和TCP的超时计算可参见W5300的数据手册。
3.2.6SOCKETn的部的部T*/R*存储器空间分配设置存储器空间分配设置W5300部包含16个8K字节的存储单元。
这些存储单元依次映射在128K字节的存储器空间。
128K存储器分为发送存储器T*和接收存储器R*。
部T*和R*存储器以8K字节为单元分布在128K字节空间。
部T*/R*存储器可以在064K字节空间以1K字节为单元从新分配给每个SOCKET。
1)定义部T*/R*存储器大小可以在存储器单元类型存放器MYTPER中配置,每个8K字节的存储单元对应MTYPER的一个位。
当该位为1时,它用于T*存储器,当该位为0时,它用于R*存储器。
MTYPER的低位都配置为T*存储器。
其余没有配置为T*存储器的都应该设置为0。
MYTPER存放器地址:
0*030MYTPER存放器配置值:
0*00FF平均分配2)每个SOCKET的部T*存储器的大小由T*存储器大小配置存放器TMSR配置。
每个SOCKET在复位后自动分配8K字节的T*存储空间。
TMS01R存放器地址:
0*020TMS01R存放器配置值:
高8位为SOCKET0的配置值,低8位为SOCKET1的配置值0*190ETMS23R存放器地址:
0*022TMS23R存放器配置值:
高8位为SOCKET0的配置值,低8位为SOCKET1的配置值0*1900TMS45R存放器地址:
0*024TMS45R存放器配置值:
高8位为SOCKET0的配置值,低8位为SOCKET1的配置值0*0000TMS67R存放器地址:
0*026TMS67R存放器配置值:
高8位为SOCKET0的配置值,低8位为SOCKET1的配置值0*00003)每个SOCKET的部R*存储器的大小由R*存储器大小配置存放器RMSR配置。
每个SOCKET在复位后自动分配8K字节的R*存储空间。
RMS01R存放器地址:
0*028RMS01R存放器配置值:
高8位为SOCKET0的配置值,低8位为SOCKET1的配置值0*190ERMS23R存放器地址:
0*02ARMS23R存放器配置值:
高8位为SOCKET0的配置值,低8位为SOCKET1的配置值0*1900RMS45R存放器地址:
0*02CRMS45R存放器配置值:
高8位为SOCKET0的配置值,低8位为SOCKET1的配置值0*0000RMS67R存放器地址:
0*02ERMS67R存放器配置值:
高8位为SOCKET0的配置值,低8位为SOCKET1的配置值0*00003.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存放器地址:
0*2000*240、0*280Sn_MR存放器配置值:
0*0121队列对齐、允许无延时响应、TCP模式下表为SOCKETn模式存放器(Sn_MR)的配置位说明:
表3.3.1.1-1Sn_MR存放器位符号说明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,收到对端的数据包后立即发送ACK数据包响应。
建议将该位置1,以提高TCP通信的性能。
Sn_MR4-保存Sn_MR3:
0P3:
0协议类型。
它用于配置每个SOCKET的通信协议TCP、UDP、IPRAW,MACRAW等或PPPoESOCKET与PPPoE效劳器之间的操作。
4b0000:
SOCKETClosed;4b0001:
TCP;4b*0:
其它3.3.1.2SOCKETn中断屏蔽存放器设置中断屏蔽存放器设置SOCKETn中断屏蔽存放器Sn_IMR配置SOCKETn向主机产生的中断,Sn_IMR的中断屏蔽位与SOCKETn中断存放器Sn_IR是对应的。
参考主机中断设置。
Sn_IMR存放器地址:
0*2040*244、0*284Sn_IMR存放器配置值:
0*001Bsend_OK、timeout、discon、con下表为Sn_IR存放器的位说明,可以根据Sn_IR存放器对Sn_IMR存放器进展配置:
表3.3.1.2-1IR存放器位符号说明Sn_IR7PRECVPPP接收中断接收到不支持的可选数据OptionData时,该位置位。
Sn_IR6PFAILPPP失败中断PAP认证失败时该位置位Sn_IR5PNE*TPPP下一过程中断在PPPoE连接过程中,该过程改变时置位Sn_IR4SENDOK发送完成中断SEND命令完成后置位Sn_IR3TIMEOUT超时中断在ARP和TCP过程中超时置位Sn_IR2RECV接收数据中断端口从对端接收到数据时置位Sn_IR1DISCON断开连接中断接收到从对端来的FIN或FIN/ACK数据包时置位Sn_IR0CON连接中断与对端成功建立连接时置位3.3.1.3SOCKETn目的目的IP地址存放器地址存放器在TCP客户端模式下,运行CONNECT命令之前,必须将SOCKETn目的IP地址存放器Sn_DIPR设置为TCP效劳器的IP地址。
而在TCP效劳器模式,当成功建立连接以后,它被W5300自动配置为TCP客户端的IP地址。
Sn_DIPR0存放器地址:
0*2140*254、0*294Sn_DIPR0存放器配置值:
DIPR31:
16Sn_DIPR1存放器地址:
0*2160*256、0*296Sn_DIPR1存放器配置值:
DIPR15:
03.3.1.4端口号存放器设置端口号存放器设置端口号存放器设置包括对SOCKETn源端口号存放器Sn_PORTR和SOCKETn目的端口号存放器Sn_DPORTR的配置。
1)SOCKETn源端口号存放器Sn_PORTR用于配置源端口的端口号,必须在OPEN命令之前设置。
Sn_PORTR存放器地址:
0*20A0*24A、0*28ASn_PORTR存放器配置值:
2)SOCKETn目的端口号存放器Sn_DPORTR用于设置SOCKETn的目的端口号。
在TCP客户端模式下运行CONNECT命令之前,需要将它设置为处于TCP效劳器模式下的侦听端口的端口号。
而在TCP效劳器模式,当成功建立连接以后,它被W5300自动配置为TCP客户端的端口号。
Sn_DPORTR存放器地址:
0*2120*252、0*252Sn_DPORTR存放器配置值:
3.3.2SOCKET建链建链基于TCP模式的SOCKET建链,建链过程中需要配置及查询SOCKETn命令存放器Sn_CR、SOCKETn中断存放器Sn_IR和SOCKETn状态存放器Sn_SSR。
SOCKETn命令存放器地址:
0*2020*242、0*282SOCKETn中断存放器地址:
0*2060*246、0*286SOCKETn状态存放器地址:
0*2080*248、0*288下表为SOCKETn命令存放器说明:
表3.3.2-1SOCKETn命令存放器值命令说明0*01翻开端口OPEN它根据Sn_MR(P3P0)所定义的协议类型初始化端口并翻开端口0*02侦听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_CLOSED0*04连接CONNECT它将端口设置为TCP客户端模式它发送连接请求到由Sn_DIPR和Sn_DPORTR指定的TCP效劳器。
当连接请求被成功处理(收到SYN/ACK数据包),Sn_IR(0)置1,且Sn_SSR的状态变为SOCK_ESTABLISHED。
如果连接失败,可能有三种情况1ARP产生超时,因为目标硬件地址无法获得2没有收到SYN/ACK数据包而产生超时(Sn_IR(3)=1)3收到RST数据包而不是SYN/ACK数据包以上三种情况Sn_SSR都将变为SOCK_CLOSED状态0*08断开连接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状态。
0*10端口关闭CLOSE关闭端口,Sn_SSR的状态变为SOCK_CLOSED。
0*20发送数据SEND启动数据发送,发送的字节长度由Sn_T*_WRSR确定。
当发送过程完毕,Sn_IR(SENDOK)将置1,主机检测到Sn_IR(SENDOK)=1后,可以进展下一次的传输。
如果通过SEND命令数据包成功传输到对端当收到对端的DATA/ACK数据包,Sn_T*_FSR根据传输的数据长度自动增加。
如果没有传输成功没有收到DATA/ACK的数据包,将产生超时Sn_IR(3)=1,且Sn_SSR进入SOCK_CLOSED状态。
另外,主机在使用SEND命令发送数据之前,首先通过Sn_T*_FIFOR存放器将数据写入到T*存储器,然后写入要发送数据的字节数到Sn_T*_WRSR。
0*40接收数据RECV它表示主机接收到SOCKETn的数据在使用RECV命令前,主机需要通过Sn_R*_FIFOR存放器从R*存储器读取接收的数据。
下表为SOCKETn状态存放器中与TCP模式相关的说明:
表3.3.2-2SOCKETn状态存放器值符号说明0*00SOCK_CLOSEDSOCKETn端口资源释放状态当执行DI