W5500(socket)寄存器使用说明
W5500模块用户手册

W5500模块⽤户⼿册User ManualYIXIN_W5500模块⽤户⼿册全硬件TCP/IP协议以太⽹模块⽬录⼀、YIXIN_W5500以太⽹模块简介 (1)⼆、YIXIN_W5500模块排针功能表 (1)三、W5500芯⽚资源介绍 (2)四、电脑调试软件安装 (3)五、调式⽅法 (5)1.YIXIN_W5500模块接线⽅法 (5)2.W5500客户端模式测试 (5)3.W5500服务端模式测试 (12)4.W5500 UDP模式测试 (15)5.使⽤⼿机调试W5500模块 (19)⼀、YIXIN_W5500以太⽹模块简介YIXIN_W5500以太⽹模块是⼀款基于WIZnet W5500芯⽚的以太⽹模块,是⼀款性能出⾊、性价⽐⾼的以太⽹模块。
模块集成硬件化TCP/IP协议;内部具有32K字节存储器作为TX/RX缓存;⽀持10/100Mbps的⽹络传输速率;⽀持8个独⽴端⼝同时运⾏;同时模块还⽀持3.3V或者5V电源供电,当5V供电时还可以输出3.3V的电压,⽅便⽤户在不同的单⽚机系统中使⽤;模块与单⽚机系统的通讯⽅式是简单、⽅便的SPI总线通信。
W5500的具体性能参数请下⽂的“W5500芯⽚资料介绍”。
YIXIN_W5500以太⽹模块的实物图如图1.1所⽰:图1.1 YIXIN_W5500模块实物图⼆、YIXIN_W5500模块排针功能表表2.1 YIXIN_W5500模块排针功能说明注1:W5500的⼯作电压是3.3V,但I/O⼝可以承受5V电压。
注2:YIXIN_W5500模块有两种供电⽅式,即为3.3V供电或者5V供电,当使⽤5V供电时,“3.3V”引脚将会有3.3V的电压输出。
三、W5500芯⽚资源介绍W5500芯⽚是⼀款采⽤全硬件TCP/IP协议栈的嵌⼊式以太⽹控制器,它能使嵌⼊式系统通过SPI(串⾏外设接⼝)接⼝轻松地连接到⽹络。
W5500具有完整的TCP/IP协议栈和10/100Mbps以太⽹⽹络层(MAC)和物理层(PHY),因此W5500特别适合那些需要使⽤单⽚机来实现互联⽹功能的客户。
WIZnet W5500 产品说明书

DriverThe ioLibrary means “Internet Offload Library” for WIZnet chip. It includes drivers and application protocols. There are three kinds of libraries explained on this page The first two drivers (ioLibrary_BSD, ioLibrary) can be used for W5500 application designs. These will be updated continuously. The former BSD-Type driver will not be updated, as it is only meant to be a migration help from W5200 to W5500.1. ioLibrary_BSD2. ioLibrary3. BSD Type driver for W5200 User1. ioLibrary_BSDOverviewThis driver provides the Berkeley Socket type APIs. The function names of this ioLibrary_BSD are the same as the function names of the ioLibrary.Directory StructureqEthernet : SOCKET APIs like BSD & WIZCHIP(W5500,W5200 and etc) Driver rInternet :rDHCP clientsDNS clientsOthers will be added.sDownload< ioLibrary_BSD : latest version >Type Version Note Download LinkSource code Ethernet(Berkeley Socket type APIs)1.0.2-Click Internet(Application protocols)1.1.1-ClickDocuments Socket APIs Help(chm, html)1.0.2-Click< ioLibrary_BSD : old version >Type Version Note Download LinkSource code Ethernet(Berkeley Socket type APIs)1.0.1-Click1.0.0-Click Internet(Application protocols)1.1.0-Click1.0.0-ClickDocuments Socket APIs Help(chm, html)1.0.1-Click1.0.0-Click< Update History >ioLibrary_BSDqEthernet : Berkeley Socket type APIsrDocument (chm, html): Socket APIs HelpsRevision HistorysV102qsocket.c (Refer to 20131220)rsetsockopt() : Remove warning message (delete tmp variable)1.w5500.c (Refer to 20131220)rWIZCHIP_READ_BUF() & WIZCHIP_WRITE_BUF() in _WIZCHIP_IO_MODE_SPI_FDM_ 1.caseRemove warning message1.Remove unnecessary 'for' loop2.V101qsocket.c (Refer to 20131104)rsendto() : Add to clear the timeout interrupt status of socket(Sn_IR_TIMEOUT).1.V100qFirst released.rInternet : Application protocolsrRevision HistorysV111 (2013-12-26)qDHCP ClinetrModify variable declaration(dhcp_tick_1s) for code optimization in dhcp.c 1.V110qDHCP ClientrOptimize code1.Add reg_dhcp_cbfunc()2.Add DHCP_stop()3.Integrate check_DHCP_state() & DHCP_run() into DHCP_run()4.Don't care system endian5.Move unreferenced DEFINE to dns.c6.Remove the unused DEFINE7.Add comments8.DNS ClientrRemove secondary DNS server in DNS_run1.If 1st DNS_run failed, call DNS_run with 2nd DNS again1.DNS_timerHandler → DNS_time_handler2.Move unreferenced DEFINE to dns.c3.Remove the unused define4.Integrated dns.h dns.c & dns_parse.h dns_parse.c into dns.h & dns.c 5.V100qFirst released.rDHCP Client (Dynamic Host Configuration Protocol Client)sDNS Client (Domain Name System Client)s< Application code examples : latest version >Application Update Note Download LinkSTM32F103X CooCox CoIDE Project Loopback Test2013-11-04-Click DHCP Client2013-12-26-Click DNS Client2013-12-26-ClickEnergyMicroTiny GECKO(EFM32TG840F32)IAR Project Loopback TestDHCP ClientDNS Client2013-12-20-Click< Application code examples : old version >Application Update Note Download LinkSTM32F103X CooCox CoIDE Project Loopback Test2013-10-23-Click DHCP Client2013-11-08-Click DNS Client2013-11-08-ClickThese projects do not contain [Ethernet] and [Internet]codes. (Empty directory)Please download ioLibrary_BSD APIs and Applicationprotocols,and then insert to each of same named directory in providedproject.< History >Application code exampleqExample project was made by CooCox CoIDE with the STM32F103X Cortex-M3 platform.rLoopback Tests2013-11-04 Changesqmain.c : refine and rearrange source code.1.Separated Project code / APIs and Applications2.DHCP Clients2013-12-26 Changesqmain.c : refine and rearrange source code for improved DHCP code.1.DNS Clients2013-12-26 Changesqmain.c : refine and rearrange source code for improved DNS code1.DescriptionThis driver provides BSD-type Socket APIs for W5500. Because the function names of this driver are more user-friendly than those of the older drivers, …, current WIZnet chip users can easily migrate from their WIZnet chip application to the W5500 application. All drivers for W5100, W5200 and W5300 will be merged into the ioLibrary in the near future. All application protocols will also be merged into ioLibrary based on this BSD-type Socket APIs.This table shows the differences between other BSD drivers and new W5500 driver.Driver Other BSD Drivers W5500 DriverVariables Type type.h (made by wiznet)ex) uint16stdint.h (standard)ex) uint16_tRegister Naming REGName + Indexex) SIPR0 , SIPR1, SIPR2,SIPR3REGName & WIZCHIP_OFFSET_INCex> SIP,WIZCHIP_OFFSET_INC(SIP,1),WIZCHIP_OFFSET_INC(SIP,2),WIZCHIP_OFFSET_INC(SIP,3)Basic IO function IINCHIP_READIINCHIP_WRITEIINCHIP_READ_BUFIINCHIP_WRITE_BUF16bit Address SpaceUser should implementFunctionsMCU DependentWIZCHIP_READWIZCHIP_WRITEWIZCHIP_READ_BUFWIZCHIP_WRITE_BUF32bit Address SpaceSince users implement MCU-dependent parts andthen register them as Callback function, users don'tneed to implement the Function itself.Supports IINCHIP_XXX function for backwardcompatiblity.Register Function IINCHIP_XXX can be used.Supports some getREG() &setREG() functions.It is not recommended to use WIZCHIP_XXXX.Supports getREG() & setREG() functions or macros forall registers.Extra Functions NoneOptional and omissible Supports User-friendly namedfunctions. All extra functions can be implemented byusing setREG() & getREG().Socket APIs Other BSD Drivers W5500 DriverReturn Value voidSuccess or FailTransmit/Receive SizeSuccess or FailTransmit/Receive SizeAll functions return.Error Code None SOCK_BUSY : 0 SOCKERR_SOCKNUM SOCKERR_SOCKOPT SOCKERR_SOCKINIT SOCKERR_SOCKCLOSED SOCKERR_SOCKMODE SOCKERR_SOCKFLAG SOCKERR_SOCKSTATUS SOCKERR_ARG SOCKERR_PORTZERO SOCKERR_IPINVALID SOCKERR_TIMEOUT SOCKERR_DATALEN SOCKERR_BUFFER SOCKFATAL_PACKLENIO Mode Block & Non-Block Fixed Block or Non-Block configurableBlock Function sendrecvsendtorecvfromsendrecvsendtorecvfromconnectNon-Block Function connectrecvfrom Should read data in received packetunit.Can read data received packet separately.Socket APIsqFunction NamerSame as the function name of previous driverssFunction Return valuerPrevious Drivers: Void or Success/Fail and Transmit/Receive SizesW5500 Driver: All functions return Success and Fail. In Fail case, operations are subdivided.sSuccess: SOCK_OK, Socket Number, Transmit and Receive SizeqFail: SOCK_BUSY, SOCKERR_XXX, SOCKFATAL_XXX ( 0 or Negative value) qSOCK_BUSY : 01.SOCKERR_SOCKNUM2.SOCKERR_SOCKOPT3.SOCKERR_SOCKINIT4.SOCKERR_SOCKCLOSED5.SOCKERR_SOCKMODE6.SOCKERR_SOCKFLAG7.SOCKERR_SOCKSTATUS8.SOCKERR_ARG9.SOCKERR_PORTZERO10.SOCKERR_IPINVALID11.SOCKERR_TIMEOUT12.SOCKERR_DATALEN13.SOCKERR_BUFFER14.SOCKFATAL_PACKLEN15.Block / Non-Block IO moderPrevious Drivers : Block function and Non-Block function were mixed.sBlock Function : send(), recv(), sento(), recvfrom()qNon-block Function : connect()qBlocking can be avoided by using getSn_SR(), getSn_TX_FSR(), and getSn_RX_RSR() qproperly.W5500 DriversBlock / Non-Block IO mode can be selected by user. (Default: Block mode)qsocket() with new flag SF_IO_NONBLOCK or setsockopt() with SO_SET_IOMODE Can be qconfigured.Block and Non-block Configurable Functionqconnect(), send(), recv(), sendto(), recvfrom()qgetSn_SR(), getSn_TX_FSR() and getSn_RX_RSR() functions can be used like …qlike previous drivers. They are not related to IO mode2. ioLibraryDownload< ioLibrary with example project : latest version >Application Version Note Download LinkCookie board Loopback test 1.0.2-Click<Revision History>v102qsocket.c(Refer to 2014-03-18)rTCPReSend() : Remove this function and related codes because TCP send mechanism was 1.changed.TCPReSendNB() : Remove this function and related codes because TCP send mechanism was 2.changed.TCPSendCHK() : Modify return value.3.TCPSend() : Change return value to len.4.loopback.c(Refer to 2014-03-18)rExisting mechanism resend packet if don't send all received packet, but change not to resend.1.v100qFirst releaser< ioLibrary : latest version >Description Version Note Download LinkDriver Source code ioLibrary source code 1.0.2-Click< ioLibrary : old version >Description Version Note Download LinkDriver Source code ioLibrary source code 1.0.0-ClickDriver documents Socket APIs Help(chm, html)(To use html, open the index.html)1.0.0-ClickThis ioLibrary has basic I/O functions, socket register access functions, common register access functions, utilities and functions for setting up a platform and network This code has been evaluated on the CooCox Cookie Board with ARM Cortex-M0 MCU.Please refer to this link for more details.How to use on cookie board.qThe figure below shows the folder structure of this ioLibrary.3. BSD Type driver for W5200 UserDriver Source code : w5500_cortexm3_firmware_for_legacy.zipqThis driver has the same BSD as the API for W5200 users. We have been evaluating this code on the ARM-CortexM3(STM32F103 series) chipset.This type of driver is the final version. We will not update it later. Please use thenew (well coded ) driver code for new projects.。
YIXIN_W5500模块用户手册 V2

User ManualYIXIN_W5500模块用户手册全硬件TCP/IP协议以太网模块目录一、YIXIN_W5500以太网模块简介 (1)二、YIXIN_W5500模块排针功能表 (1)三、W5500芯片资源介绍 (2)四、电脑调试软件安装 (3)五、调式方法 (5)1.YIXIN_W5500模块接线方法 (5)2.W5500客户端模式测试 (5)3.W5500服务端模式测试 (12)4.W5500 UDP模式测试 (15)模块购买链接:/item.htm?spm=a1z10.1.w4004-7343112040.8.6OZKhY&id= 40933615687一、YIXIN_W5500以太网模块简介YIXIN_W5500以太网模块是一款基于WIZnet W5500芯片的以太网模块,是一款性能出色、性价比高的以太网模块。
模块集成硬件化TCP/IP协议;内部具有32K字节存储器作为TX/RX缓存;支持10/100Mbps的网络传输速率;支持8个独立端口同时运行;同时模块还支持3.3V或者5V电源供电,当5V供电时还可以输出3.3V的电压,方便用户在不同的单片机系统中使用;模块与单片机系统的通讯方式是简单、方便的SPI总线通信。
W5500的具体性能参数请下文的“W5500芯片资料介绍”。
YIXIN_W5500以太网模块的实物图如图1.1所示:图1.1 YIXIN_W5500模块实物图二、YIXIN_W5500模块排针功能表表2.1 YIXIN_W5500模块排针功能说明注1:W5500的工作电压是3.3V,但I/O口可以承受5V电压。
注2:YIXIN_W5500模块有两种供电方式,即为3.3V供电或者5V供电,当使用5V供电时,“3.3V”引脚将会有3.3V的电压输出。
三、W5500芯片资源介绍W5500芯片是一款采用全硬件TCP/IP协议栈的嵌入式以太网控制器,它能使嵌入式系统通过SPI(串行外设接口)接口轻松地连接到网络。
W5500网络扩展板教程

以太网在各个领域和行业有着非常广泛和深入的应用,这主要源于以太网的高度灵活性和较易实现的特点。
因为以太网具有组网简单,成本低廉,兼容性优秀,连接可靠,以及拓扑调整方便的优点,在作为智能家居,物联网或者无线传感网络的网关方面有其他的网络技术所不具备的优势,从而得到大力的发展和应用。
本文将详细介绍如何使嵌入式系统接入到以太网,如何采用硬件协议栈的方式使您的方案或应用快速高效的连接到互联网,如何实现TCP/IP的通信,以及如何实现上层应用层协议等等。
第1章以太网模型以太网的实现采用层次结构的概念,每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持,每一层也都为上一层功能的实现打好基础。
实际上,用户接触到的只是最上面的一层,根本感觉不到底层的存在。
要理解以太网,必须从最下层开始,自下而上理解每一层的功能。
1.1五层结构以太网模型有不同的分层方式,ISO(国际标准组织)提出OSI七层网络模型,自上而下分别为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
OSI七层网络模型主要是为了解决异种网络互联时所遇到的兼容性问题。
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,也使网络的不同功能模块承担起不同的职责。
由于互联网网络体系结构以TCP/IP协议为核心,因而基于TCP/IP的参考模型将以太网可以分成四层,自上而下分别为:应用层、传输层、网络互联层、网络接口层。
根据我自己的理解,把以太网分成五层比较容易解释。
这五层结构不仅符合OSI结构强调的不同层次承担不同职责的特点,同时也符合TCP/IP协议参考模型协议之间相互支撑、相互调用的逻辑关系。
图1-1-1以太网五层模型如上图所示,最底下的一层叫做“物理层”,也叫“PHY层”,最上面的一层叫做“应用层”,中间的三层(自下而上)分别是“链路层”,也叫“MAC层”、“网络层”和“传输层”。
越下面的层,越靠近硬件;越上面的层,越靠近用户。
W5500以太网芯片及模块使用

W5500以太网芯片及模块使用
一、模块介绍
是以太网转spi接口的,模块上有3个led和一个复位按钮,灯的含义是:
LINKLED
网络连接指示灯(Link LED)
显示当前连接状态:
低电平:连接建立;
高电平:未连接;
DUPLED
全/半双工指示灯(Duplex LED)
显示当前连接的双工状态:
低电平:全双工状态;
高电平:半双工状态;
ACTLED
活动状态指示灯(Active LED)
显示数据收/发活动时,物理介质子层的载波侦听活动情
况:
低电平:有物理介质子层的载波侦听信号;
高电平:无物理介质子层的载波侦听信号;
但貌似配置成全双工100M的速度也没什么增加,哪里出问题了呢?我现在使用18M的spi,使用wiz官方loopback软件测试速度为5Mb/s左右,好慢啊(/ □ \)
二、模块驱动
注意:在官网上有人共享了github的库函数驱动,不过是C99标准的,这一段Keil的c编译器支持好像有问题,而且对于是库函数很
致命,使用寄存器则无所谓
比如:ctlsocket和ctlwizchip函数的参数会因C99和C89的强转void类型定义不同,使其失效。
eg:0x0000不会错,0x0010可能会篡改成0x4e3c。
w5500引脚图及引脚说明

w5500引脚图及引脚说明W5500是WIZnet推出的高性能以太网接口芯片系列之一,内部集成全硬件TCP/IP协议栈+MAC+PHY。
全硬件协议栈技术采用硬件逻辑门电路实现复杂的TCP/IP协议簇,其应用具有简单快速、可靠性高、安全性好等显著优势;内部集成MAC和PHY 工艺,使得单片机接入以太网方案的硬件设计更为简捷和高效。
W5500 是一款全硬件TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。
W5500 集成了TCP/IP 协议栈,10/100M 以太网数据链路层(MAC)及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。
久经市场考验的WIZnet 全硬件TCP/IP 协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以及PPPoE 协议。
W5500 内嵌32K 字节片上缓存以供以太网包处理。
如果你使用W5500,你只需要一些简单的Socket 编程就能实现以太网应用。
这将会比其他嵌入式以太网方案更加快捷、简便。
用户可以同时使用8 个硬件Socket 独立通讯。
W5500 提供了SPI(外设串行接口)从而能够更加容易与外设MCU 整合。
而且,W5500 的使用了新的高效SPI 协议支持80MHz 速率,从而能够更好的实现高速网络通讯。
为了减少系统能耗,W5500 提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。
w5500芯片特点全硬件TCP/IP协议栈- 支持TCP,UDP,ICMP,IPv4,ARP,IGMP,PPPoE协议- 硬件协议栈不受网络攻击,安全稳定8个独立的硬件Socket,各路通信互不影响32bytes片上缓存供TCP/IP包处理集成802.3以太网MAC集成10BaseT / 100Base-T以太网PHY主机接口:SPI高速串行外设接口(最高80Mhz )低功耗,工作温度40℃左右支持嵌入式操作系统:Linux RTOS。
Arduino扩展板-POE以太网络扩展板-W5500介绍

Arduino扩展板-POE以太网络扩展板-W5500介绍Arduino扩展板-POE以太网络W5500介绍这款兼容Arduino的W5500以太网扩展板是DFRobot Ethernet 家族的新成员,其集成PoE电源和W5500以太网芯片,能够满足一般IoT项目的应用要求。
其PoE供电、以太网传输、IO扩展,为一根网线部署IoT项目打下坚实基础。
在外形和功能扩展上,W5500 PoE以太网扩展板集成了符合IEEE 802.3at行业标准的PoE Class 0电源,MicroSD卡座以及标准的Gravity-4 Pin I2C接口2个,UART 接口1个,Gravity-3 Pin数字模拟接口各4个,产品大小与Arduino UNO尺寸相等。
Arduino扩展板-POE以太网络W5500性能优势在性能上POE以太网络扩展板W5500集成了TCP/IP 协议栈,10/100M 以太网数据链路层(MAC)及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接POE以太网络扩展板W5500支持全硬件TCP/IP协议栈,支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以及 PPPoE 协议POE以太网络扩展板 W5500 内嵌 32K 字节片上收发缓存以供以太网包处理。
这将会比其他嵌入式以太网方案,更加快捷、简便W5500主控板使用了一个新的高效SPI协议,支持80MHz通信速率,从而能够更好的实现高速网络通讯POE以太网络扩展板W5500还提供了网络唤醒模式(WOL)及掉电模式,能够有效减少系统能耗,供客户更方便的选择使用。
Arduino扩展板-POE以太网络W5500特性支持硬件TCP/IP协议:TCP,UDP, ICMP, IPv4,ARP,IGMP,PPPoE 支持8通道独立Sockets支持WOL网络唤醒内部32KB收发缓存板载电平转换电路扩展Gravity传感器用3P排针接口Arduino扩展板-POE以太网络W5500技术规格PoE输入:48V AC/DC(本产品为符合802.3at标准的Class 0 PD设备)PoE功率:最高12W(VIN口可向外输出12V/1A)SPI时钟:80MHz(Max)PHY:WIZnet W5500PCB尺寸:68.6mmx53.3mm整体尺寸:72.5mmx53.3mm。
W5500使用手册V2.0

W5500使用手册1、W5500芯片简介------------------------------------------------22、W5500模块的接线说明------------------------------------------23、TCP服务端例程使用说明----------------------------------------24、TCP客户端例程使用说明----------------------------------------65、UDP例程使用说明----------------------------------------------76、远程通信使用说明(跟手机通信)-------------------------------8一、W5500芯片简介W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。
W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。
全硬件TCP/IP 协议栈,支持TCP,UDP,IPv4,ICMP,ARP,IGMP以及PPP oE协议。
W5500内嵌32K字节片上缓存以供以太网包处理。
如果你使用W5500,你只需要一些简单的Socket编程就能实现以太网应用。
这将会比其他嵌入式以太网方案更加快捷、简便。
用户可以同时使用8个硬件Socket独立通讯。
W5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。
而且,W5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。
为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。
二、W5500模块接线说明1、STM32单片机模块标号STM32引脚INT--------------------------PB0RST-------------------------PB8SCLK-------------------------PA5SCS-------------------------PA4MOSI-------------------------PA7MISO-------------------------PA63V3------------------------- 3.3VGND--------------------------地NC------------------------不用接2、51单片机模块标号51单片机引脚INT---------------没使用RST---------------P1^1SCLK---------------P1^2SCS---------------P1^0MOSI---------------P1^4MISO---------------P1^33V3--------------- 3.3VGND---------------地NC---------------不用接二、TCP服务端例程使用说明这个例程,表示W5500工作在TCP服务端。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Socket 端口寄存器Sn3_MR (Socket n 模式寄存器) [R/W] [0x0000] [0x00]3, 4, 5, 6, 7). n is set ‘SNUM[2:0]’ in Control Bits sets.Sn_CR (Socket n 配置寄存器) [R/W] [0x0001] [0x00]该寄存器用于设置Socket n 的配置命令如OPEN、CLOSE、CONNECT、LISTEN、END 和RECEIVE。
经W5500 识别这一命令后,Sn_CR 寄存器会自动清零为0×00。
尽管Sn_CR 被清零为0×00,但命令仍在处理中。
为IR (中断寄存器) [R/W] [0x0015] [0x00]中断寄存器(IR)指明了中断的状态。
IR 的每一位都是‘0’,直到被主机写为‘1’.如果IR 不等于‘0×00’,INTn 引脚将会被拉低。
直到其变为‘0×00’时,INTn 才会被拉高。
S n_SR (Socket n 状态寄存器) [R] [0x0003] [0x00]Sn_SR指示了Socket n 的状态,并根据Sn_CR 或者一些TCP模式下的特殊控制包,如SYN,FIN 包而改变。
Sn_PORT (Socket n 源端口寄存器) [R/W] [0x0004-0x0005] [0x0000]该寄存器配置了Socket n 的源端口号。
当Socket n 工作在TCP 或UDP 模式下,该寄存器生效。
注意:必须在OPEN 命令生效前,完成对该寄存器的设置。
例) 如SOCKET 0 的端口=5000(0×1388),配置应如下,Sn_DHAR (Socket n 目的MAC 地址寄存器) [R/W] [0x0006-0x000B] [0xFFFFFFFFFFFF]Sn_DHAR 寄存器指示的为:UDP 模式下,使用Send_MAC 配置命令,配置Socket n的目标主机MAC 地址;或者CONNECT/SEND 配置命令,ARP 过程获取到的MAC 地址。
例) 如Socket 0 的目标MAC 地址= 08.DC.00.01.02.10,配置应如下Sn_DIPR (Socket 目标IP 地址寄存器) [R/W] [0x000C-0x000F] [0x00000000]Sn_DIPR 配置或指示的为Socket n 的目标主机IP 地址,在TCP/UDP 模式下生效。
在TCP 客户端模式下,在CONNECT 配置命令前,该寄存器设置了TCP 服务器的IP地址。
在TCP 服务器模式下,他显示了在成功建立连接后,TCP 客户端的IP 地址;在UDP 模式下,他配置了对方主机的IP 地址以供SEND 或SEND_MAC 配置命令后接收UDP 包。
例)如Socket 0 的目标IP 地址= 192.168.0.11,配置应如下,Sn_DPORT (Socket n 目标端口寄存器) [R/W] [0x0010-0x0011] [0x00]Sn_DPORT 配置或指示了Socket n 的目标主机端口号,在TCP/UDP 模式下生效。
在TCP 客户端模式下,在CONNET 配置命令前,该寄存器配置了TCP Server 监听的端口号。
在TCP 服务器模式下,他显示了在成功建立连接后,TCP 客户端的端口号;在UDP 模式下,他配置了对方主机的端口号以供SEND 或SEND_MAC 配置命令后接收UDP 包。
例) 如Socket 0 的目标端口号= 5000(0×1388) ,配置应如下,最大分段寄存器[R/W] [0x0012-0x0013] [0x0000]该寄存器配置或显示了Socket n 的最大传输单元MTU(Maximum Transfer Unit)。
在TCP/UDP 模式下,默认该寄存器设定的最大传输单元生效。
比默认的MTU 大时,主机需要手动的将数据划分成默认MTU 大小单元进行传输。
当Socket n 处于TCP/UDP 模式,而传输的数据比MTU 大时,数据将会被自动的划分成默认MTU 单元大小传输。
在UDP 模式下,由于不像TCP 模式那样涉及到一些连接过程,所以使用了MTU 配置。
当不同大小的MTU 数据传输给对方是时,可能会收到ICMP 包(MTU 分片)。
这样的话IR(FMTU)置‘1’,对方的信息如MTU 大小以及IP 地址将分别由FMTUR 和UIPR 指定。
如果IR[MTU] = ‘1’,用户不能发送数据到对方。
如果要重新恢复与对方的通讯,可以按照以下操作:1. 通过CLOSED 配置命令关闭Socket。
2. 设置Sn_MSS 指定FMTUR 中的MTU。
3. 通过OPEN 配置命令打开Socket n。
4. 重新与对方通信例) 如Socket 0 的MSS = 1460(0x05B4)服务类寄存器[R/W] [0x0015] [0x00]该寄存器设置在IP 层里IP header 的TOS(Type of Service –服务类型) 字段。
它应在执行OPEN 命令之前设置。
生存时间寄存器[R/W] [0x0016] [0x80]该寄存器设置在IP 层里IP 头的TTL(Time-To-Live –生存时间) 字段。
它应在执行OPEN 命令之前设置。
接收缓存大小寄存器[R/W] [0x001E] [0x02]Sn_RXBUF_SIZE 配置了Socket n 的接收缓存大小。
Socket n 接收缓存区大小可以配置为1,2, 4,8 和16Kbytes。
如果配置为其他大小,则W5500 不能正常的从对方主机接收数据。
即使Socket n 的接收缓存大小初始默认为2Kbytes。
用户仍然可以使用Sn_RXBUF_SIZE 重新定义。
但是所有Socket 接收缓存(Sn_RXBUF_SIZE)的总大小不能超16Kbytes。
否则,将会使得接收异常。
当所有的Sn_RXBUF_SIZE配置完成后,就会按照Socket0 到7 的顺序依次将16Kbytes 的接收内存分配给各个Socket 作为接收缓存使用。
不论Socket n 的接收缓存配置的大小如何,都可以被16 位的偏移地址寻址找到。
(寻址范围: 0×0000 到0xFFFF)例) Socket 0 RX Buffer Size = 8KB发送缓存大小寄存器[R/W] [0x001F] [0x02]Sn_TXBUF_SIZE 配置了Socket n 的发送缓存大小。
Socket n 发送缓存区大小可以配置为1,2,4,8 和16Kbytes。
如果配置为其他大小,则W5500 不能正常给对方主机发送数据。
即使Socket n 的发送缓存大小初始默认为2Kbytes。
用户仍然可以使用Sn_RXBUF_SIZE 重新定义。
但是所有Socket 发送缓存的总大小不能超过16Kbytes。
否则,将会使得发送异常。
当所有的Sn_TXBUF_SIZE 配置完成后,就会按照Socket 0 到7 的顺序依次将16Kbytes 的发送内存分配给各个Socket 作为发送缓存使用。
不论Socket n 的接发送存配置的大小如何,都可以被16 位的偏移地址寻址找到。
(寻址范围:0×0000 到0xFFFF)例) Socket 0 TX Buffer Size = 4KBS n_TX_FSR (Socket n 空闲发送缓存寄存器) [R] [0x0020-0x0021] [0x0800]Sn_TX_FSR显示了Socketn发送缓存的空闲空间大小。
该寄存器初始化配置为Sn_TXBUF_SIZE 大小。
当传输数据比Sn_TX_FSR 大时,将不能保存到Socket n 的发送缓存中。
因为多出来的数据会覆盖之前未传输完成的数据。
因此在向Socket n 发送缓保存数据之前,需要先检查一下数据大小是否等于或小于其剩余空间,然后再保存数据到发送缓存并通过SEND/SEND_MAC配置命令发送。
如果数据比检查到的剩余空间大,需要将数据划分成小于或等于剩余空间的大小之后,再保存数据到Socket n 发送缓存。
如果Sn_MR(P[3:0])不是TCP 模式(‘0001’),W5500 将计算发送写指针(Sn_TX_WR)和Socket n 发送读指针之间的空间,并自动将数据划分成相应大小。
如果Sn_MR(P[3:0])是TCP 模式(‘0001’),W5500 将计算发送写指针(Sn_TX_WR)与内部ACK 指针(指示已经从连接对方接收数据的节点位置)之间的空间。
例) 如2048(0×0800) 在S0_TX_FSR 时,例)In case of 2048(0×0800) in S0_TX_FSR,Sn_TX_RD (Socket n 发送读指针寄存器) [R] [0x0022-0x0023] [0x0000]Sn_TX_RD 寄存器可以通过OPEN 配置命令进行初始化。
然而,如果Sn_MR(P[3:0])是TCP 模式(‘0001’),该寄存器将会在TCP 连接期间,重新进行初始化。
该寄存器初始化之后,会根据SEND 配置命令自增。
SEND 配置命令传输的是Socket n发送缓存中,当前Sn_TX_RD 到Sn_TX_WR 之间保存的数据。
在传输完保存的数据之后,SEND 配置命令会使得Sn_TX_RD 等于Sn_TX_WR。
当Sn_TX_RD 增加的值超出最大值0xFFFF(大于0×10000 并产生进位),Sn_TX_RD 会忽略进位,仅使用低16 位的值。
Sn_TX_WR (Socket n 发送写指针寄存器) [R/W] [0x0024-0x0025] [0x0000]Sn_TX_WD 寄存器可以通过OPEN 配置命令进行初化。
然而,如果Sn_MR(P[3:0])是TCP 模式(‘0001’),该寄存器将会在TCP 连接期间,重新进行初始化。
该寄存器需要读取或更新如下。
1. 读取发送缓存中将要保存传输数据的首地址。
2. 从Socket n 的发送缓存对应的首地址开始,保存需要传输的数据;3. 在保存完传输数据之后,将Sn_TX_WR 的值增加到传输数据大小。
如果增加后,超过最大值0xFFFF(比0×10000 大且产生进位),那么将自动忽略进位,并自动更新为低16 位的值。
4. 通过使用SEND 命令发送保存在Socket n 发送缓存中的数据。
Sn_RX_RSR (Socket n 空闲接收缓存寄存器) [R] [0x0026-0x0027] [0x0000]Sn_RX_RSR 显示了Socket n 接收缓存中已接收和保存的数据大小。