W5500寄存器使用说明_第1页
W5500寄存器使用说明_第2页
W5500寄存器使用说明_第3页
W5500寄存器使用说明_第4页
W5500寄存器使用说明_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、socket端口寄存器sn3_mr socket n模式寄存器 r/w 0x0000 0x00该寄存器用于配置全部socket 的选项或协议类型7654321·0multi/mfenbcastbno/mc/mmbucastbmip6bp3p2p1p0sn_mr 描述位符号说明7multi/mfenudp 多播模式( p3:0=0010 )0:关闭多播 1:开启多播在 macraw模式下开启地址过滤( p3:0=0100 )0:关闭 mac 过滤 1:开启6bcastbmacraw和 udp 模式下的网络堵塞0:关闭广播堵塞1 :开启在 udp 模式(p3:0=0010 )可以屏蔽接收

2、广播包在macraw模式 p3:0=0100 )同样生效5no/mc/mmb使用无延时 ackuse no delayed ack0:关闭无延时 ack 选项1:开启无延时 ack 选项在 tcp( p3:0=0001 )生效多播0:使用 igm 版本 21:使用 igm 版本 1在 udp 模式( p3:0=0010 )且 multi=1 时生效macraw 模式多播堵塞在 macraw p3:0=0100 )生效;4ucastbmip6bping block模式0:关闭 ping block1:启用 ping block假如该位设置为有响应1 ping 恳求就没3p3协议 protocol

3、2p2p3p2p1p0含义1p10000close0p00001tcp0010udp0100macrawmacraw 只有在 socket0 下才能使用3n 是 socket编号( 0,1, 2,3, 4,5 ,6,7).n 设置了 snum2:0 掌握位集n is socket number 0, 1, 2, 3, 4, 5, 6, 7. n is set snum2:0 in control bits sets.sn_cr socket n配置寄存器 r/w 0x0001 0x00该寄存器用于设置socket n的配置命令如open、close、connect 、listen、end 和

4、receive;经 w5500 识别这一命令后, sn_cr 寄存器会自动清零为0× 00;尽管 sn_cr 被清零为0× 00,但命令仍在处理中;为了验证该命令是否完成,请检查sn_ir 或 sn_sr 寄存器;值符号说明0x01open依据sn_mrp3:p0的协议挑选来初始化和打开open socketn-th ;下表显示了 sn_sr 和 sn_mr 的对应值;15 /8sn_mrp3:0sn_srsn_mr_close 0000sn_mr_tcp 0001sock_init 0x13sn_mr_udp 0010sock_udp0x22s0_mr_macraw010

5、0 sock_macraw 0x020x02listen该位只在 tcp模式 sn_mrp3:po = sn_mr_tcp下生效;在这种模式下, socket n 被配置为一个 tcp服务器,它是等待“ tcp客户端”的连接恳求(syn数据包);该 sn_sr 寄存器由 sock_init转变为 sock_listen;当一个 tcp 客户端的连接恳求胜利后该sn_sr 寄存器由sock_listen 转变为 sock_estabblieshe.与此同时sn_ir0会变为 1;另一方面,当连接失败时,sn_ir3被设置为'1'. sn_sr 转变为 s0ck_closed;0x

6、04connect此模式只适用于tcp 模式且运行 socket n作为 tcp 客户端;通过与储备在目的地址寄存器sn_dipr 和端口号寄存器 sn_dport 中的 ip 地址和端口号进行连接,一个连接恳求被发送到 tcp 服务器;当一个客户端的连接恳求胜利后sn_sr 寄存器改为 sock_establieshed;sn_ir0会变为 1;以下三种情形意味着连接恳求失败:1. arpto 发生超时 sn_irs= 1' ;由于目的地的mac地址不能通过 arp过程中猎取;2. 当没有收到 syn/ack数据包,而引起 tcptosn_ir3被设置为 1时;3. 当rst数据包而

7、不是 syn/ack 数据包被接收时;以上三种情形下,sn_sr会该为 sock_closed;0x08discon只有在 tcp模式下有效:不论“ tcp服务器”或“p客tc户端”,都使用 discon 断开;0x10close关闭 socket nsn_sr改为 sock_closed;0x20send发送( send) socket n发送 tx内存中的全部缓冲数据;0x21send_mac只在 udp 模式下有效ox22send_keep只在 tcp 模式下有效0x40recv通过使用接收读指针寄存器sn_rx_rd来 判定 socketn 接收缓存是否完成接收处理;ir 中断寄存器

8、r/w 0x0015 0x00中断寄存器(ir)指明白中断的状态;ir 的每一位都是 0,直到被主机写为 1.假如 ir 不等于 0× 0,0intn 引脚将会被拉低;直到其变为 0× 0时0, intn才会被拉高;76543210conflictunreachpppoempreservedreservedreservedreserved表格 ir 说明位7符号conflict说明ip 冲突:在收到 apr 恳求时,发觉发送方ip 于本地 ip 重复,该位将置1 6unreach目标不行抵达:当接收到 icmp(目的端口不行达)包后,该位置 1;当该位为1时,通过相应的 u

9、ipr & uportr.可能查询到目标信息;如: ip 地址和端口号;5pppoepppoe连接关闭:当 pppoe模式下, pppoe连接断开时,该位生效;4mpmagic packet:30reserved当网络唤醒模式启用并通过udp 接收到 magic packet 网络唤醒时,该位生效;保留位sn_sr socket n状态寄存器 r 0x0003 0x00sn_sr 指示了 socket n的状态,并依据sn_cr或者一些 tcp 模式下的特别掌握包,如syn ,fin包而转变;sn_sr状态描述值符号说明0x00sock_closed该位指示了 socket n处于关闭

10、状态,资源被释放;当 dicon ,close 命令生效或当触发超时中断时,w5500 对应的 socket n 会无视之前的状态,变为 sock_closed0x13sock_init该位指示了 socket n 端口打开并处于tcp工 作 模 式 ; 当sn_mrp3:0= 0001且open 命令生效时,sn_sr变为 sock_init;之后用户才可以使用 listen 或 connect 命令;0x14sock_listen该位指示着 socket n 工作在 tcp 服务器模式下,且等待对方(tcp 客户端)的连接恳求( syn packet);当 连 接 请 求 被 成 功 接

11、收 以 后 ,socket_sr会变为sock_estalblished状态;否就将会在动身 tcpt0 超时中断之后,变为 sock_closed状态;0x17sock_established指示了 socket n 的连接状态;sock_listen状态下,当 tcp 服务器处理 tcp 客户端的syn 恳求包或当connect命 令配 置 成 功 时 , 变 为sock_established;在此状态下,可以使用send 或者recv 命令对数据包传输;0x1csock_close_wait指示 socket n接收到了来自连接对方发来的断开连接恳求(fin packet );这是一个

12、瓣关闭的状态,可以进行数据传输;如要全部关闭,需要使用discon命 令 ; 而 如 果 是 要 关 闭socket ,需要使用 close命令;0x22sock_udp指示了 socketn处于 udp 模式下sn_mrp3:0= 0010 ;当sn_mrp3:0= 0010o且pen 命令生效时, sn_sr转变为 sock_udp;不同于 tcp 模式,在这个模式下,数据包可以在无连接过程的情形下传输;0x02sock_macraw指示了 socket0 工作在 macraw 模式下 so_mrp3:0= 0100o且pen 命令 生 效 时 , sn_sr改 变 为sock_macra

13、w.如 udp 模式一样, socket0 工作在macraw 模式下时; 也能在无连接过程的情形下,实现mac数据包 以太网帧 传输sn_sr暂时状态描述值符号说明0x15sock_synsent指示了 socket n 已经发送连接恳求 syn packet 到对方;他显示了发送connect命令后, sn_sr 从sock_init 到 sock_established的暂时状态;假如此时, 收到了来自对方的接受连接恳求syn/ack packet 就,变为 sock_established.否就,在 tcpt0 超时 sn_irtimeout= 1中断之后,转变为 sock_close

14、d;0x16sock_synrecv指示 socketn 胜利的从对方收到了连接恳求包synpacket ;如 果 socket n 成 功 的 给 对 方 发 送 了 连 接 应 答syn/ack packet ,将转变为 sock_established状态;否就,在动身超时中断 sn_irtimeout= 1后,变为 sock_closed;0x18sock_fin_wait这些状况表示 socket n正在关闭;0x1asock_closing0x1bsock_time_wait这显示的是断开连接 主动关闭或被动关闭 的过程;当断线程序胜利完成或tcpto( sn_ir超时 = 1)发

15、生时,它便会更换为sock_closed;0x1dsock_last_ack指示了 socket n 在被动关闭状态下, 正在等待对断开连接恳求 fin packet 做出回应 fin/ack packet ;当 socketn 胜利接收到了断开连接恳求的回应或动身超时中断,就变为sock_closed状态;sn_port socket n源端口寄存器 r/w 0x0004-0x0005 0x0000该寄存器配置了socket n的源端口号;当socket n工作在 tcp 或 udp 模式下,该寄存器生效;留意:必需在open命令生效前,完成对该寄存器的设置;例 如 socket 0的端口=

16、50000 × 1388 ,配置应如下,0x00040x00050x130x88sn_dhar socket n目的 mac地址寄存器 r/w 0x0006-0x000b 0xffffffffffffsn_dhar 寄存器指示的为:udp 模式下,使用send_mac配置命令,配置socket n的目标主机 mac地址;或者 connect/send配置命令, arp 过程猎取到的mac地址;例 如 socket 0的目标 mac地址 = 08.dc.00.01.02.10 ,配置应如下0x00060x00070x00080x00090x000a0x000b0x080xdc0x000

17、x010x020x0asn_dipr socket目标 ip 地址寄存器 r/w 0x000c-0x000f 0x00000000sn_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

18、, 配置应如下,0x000c0x000d0x000e0x000f1920xc01680xa800x00110x0bsn_dport socket n目标端口寄存器 r/w 0x0010-0x0011 0x00sn_dport 配置或指示了socket n的目标主机端口号,在tcp/udp 模式下生效;在 tcp 客户端模式下,在connet 配置命令前,该寄存器配置了tcp server 监听的 端口号;在 tcp 服务器模式下,他显示了在胜利建立连接后,tcp 客户端的端口号;在 udp 模式下,他配置了对方主机的端口号以供send 或 send_mac 配置命令后接收udp 包;例 如 s

19、ocket 0的目标端口号= 50000 × 1388 ,配置应如下 ,0x00100x00110x130x88最大分段寄存器 r/w 0x0012-0x0013 0x0000该寄存器配置或显示了socket n的最大传输单元mtumaximum transfer unit; 在 tcp/udp 模式下 ,默认该寄存器设定的最大传输单元生效;modenormalmrpppoe = 0pppoemrpppoe= 1default mturangedefaultrangetcp146011460145211452udp147211472146411464macraw1514当 socke

20、tn 处于 macraw模式时 ,由于 mtu不在内部处理,默认的mtu将会生效 , 因此 ,当传输的数据比默认的 mtu大时,主机需要手动的将数据划分成默认mtu大小 单元进行传输;当 socket n处于 tcp/udp 模式 ,而传输的数据比mtu大时 ,数据将会被自动的划分成默认 mtu单元大小传输;在 udp 模式下 ,由于不像 tcp 模式那样涉及到一些连接过程,所以使用了 mtu配置; 当不同大 小的 mtu 数据传输给对方是时 ,可能会收到icmp 包mtu分片 ;这样的话irfmtu置1,对 方的信息如mtu大小以及 ip 地址将分别由fmtur 和 uipr 指定; 假如

21、irmtu =1,用户不 能发送数据到对方; 假如要重新复原与对方的通讯,可以按 照以下操作 :1. 通过 closed 配置命令关闭socket ;2. 设置 sn_mss 指定 fmtur 中的 mtu ;3. 通过 open 配置命令打开socket n ;4. 重新与对方通信例 如 socket 0的 mss = 14600x05b40x00120x00130x050xb4服务类寄存器 r/w 0x0015 0x00该寄存器设置在ip 层里 ip header的 tostype of service 服务类型 字段;它应在执行 open 命令之前设置;生存时间寄存器 r/w 0x001

22、6 0x80该寄存器设置在ip 层里 ip 头的 ttltime-to-live 生存时间 字段;它应在执行open 命令之前设置;接收缓存大小寄存器 r/w 0x001e 0x02sn_rxbuf_size配置了 socketn的接收缓存大小;socketn接收缓存区大小可以配置为 1,2, 4,8 和16kbytes ;假如配置为其他大小,就 w5500不能正常的从对方主机接收数据;即使 socket n的接收缓存大小初始默认为2kbytes ;用户仍旧可以使用sn_rxbuf_size重新定义;但是所有 socket 接收缓存 sn_rxbuf_size的 总大小不能超 16kbytes

23、 ;否就 ,将会使得接收反常;当全部的 sn_rxbuf_size配置完成后 ,就会依据 socket0到 7 的次序依次将 16kbytes的接收内存安排给各个socket作为接收缓存使用;不论 socketn 的接收缓存配置的大小如何,都可以被 16 位的偏移地址寻址找到;寻址范畴 : 0 ×0000到0xffffvaluedec0124816buffer size0kb1kb2kb4kb8kb16kb例 socket 0 rx buffer size = 8kb0x080x001e发送缓存大小寄存器 r/w 0x001f 0x02sn_txbuf_size 配置了socketn

24、的发送缓存大小;socketn发送缓存区大小可以配置为1,2,4,8 和16kbytes ;假如配置为其他大小,就 w5500不能正常给对方主机发送数据;即使 socket n的发送缓存大小初始默认为2kbytes ;用户仍旧可以使用sn_rxbuf_size重新定义;但是全部 socket 发送缓存的总大小不能超过16kbytes ; 否就,将会 使得发送反常;当全部的 sn_txbuf_size 配置完成后 ,就会依据 socket 0 到 7 的次序依次将16kbytes的发送内存安排给各个 socket作为发送缓存使用;不论 socketn 的接发送存配置的大小如何,都可以被 16 位

25、的偏移地址寻址找到;寻址范畴 :0 ×0000到0xffffvaluedec0124816buffer size0kb1kb2kb4kb8kb16kb例 socket 0 tx buffer size = 4kb0x001f0x04sn_tx_fsr socket n闲暇发送缓存寄存器 r 0x0020-0x0021 0x0800 sn_tx_fsr显示了 socketn 发送缓存的闲暇空间大小;该寄存器初始化配置为sn_txbuf_size大小;当传输数据比sn_tx_fsr 大时,将不能储存到socket n的发送 缓存中;由于多出来的数据会掩盖之前未传输完成的数据;因此在向so

26、cket n发送缓 储存数据之前,需要先检查一下数据大小是否等于或小于其剩余空间,然后再储存数据到发送缓存并通过send/send_mac 配置命令发送;假如数据比检查到的剩余空间大,需要将数据划分成小于或等于剩余空间的大小之后, 再储存数据到socket n发送缓存;假如 sn_mrp3:0不是 tcp 模式 0001 w,5500将运算发送写指针sn_tx_wr和 socketn 发送读指针之间的空间,并自动将数据划分成相应大小;假如sn_mrp3:0是 tcp 模式 0001 w,5500将运算发送写指针 sn_tx_wr与内 部 ack 指针 指示已经从连接对方接收数据的节点位置之间的

27、空间;例 如 20480 ×0800在 s0_tx_fsr 时,例) in case of 20480 ×0800 in s0_tx_fsr,0x00200x00210x080x00sn_tx_rd socket n发送读指针寄存器 r 0x0022-0x0023 0x0000sn_tx_rd 寄存器可以通过 open 配置命令进行初始化;然而,假如 sn_mrp3:0是 tcp 模式 0001 ,该寄存器将会在 tcp 连接期间, 重新进行初始化; 该寄存器初始化之后, 会依据 send 配置命令自增; send 配置命令传输的是 socket n 发送缓存中,当前 sn

28、_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 0x0000sn_tx_wd 寄存器可以通过open 配置命令进行初化; 然而, 假如 sn_mrp3:0是 tcp 模式0001 ,该寄存器将会在 tcp 连接期间,重新进行初始化;该寄存器需要读取或更新如下;1

29、. 读取发送缓存中将要储存传输数据的首地址;2. 从 socket n的发送缓存对应的首地址开头,储存需要传输的数据;3. 在储存完传输数据之后,将sn_tx_wr 的值增加到传输数据大小;假如增加后,超过最大值0xffff(比 0 ×10000大且产生进位) ,那么将自动忽视进位,并自动更新为低 16 位的值;4. 通过使用 send 命令发送储存在socket n发送缓存中的数据;sn_rx_rsr socket n闲暇接收缓存寄存器 r 0x0026-0x0027 0x0000sn_rx_rsr显示了 socket n 接收缓存中已接收和储存的数据大小; sn_rx_rsr不会

30、超过 n_rxbuf_size 大小,且运算的为 socket n 接收写指针 sn_rx_wr和 socket n 接收读指针之间的空间大小; 例 如20480x0800 在 s0_rx_rsr时,0x00260x00270x080x00sn_rx_rd socket n接收读指针寄存器 r/w 0x0028-0x0029 0x0000sn_rx_rd 寄存器可以通过open 配置命令进行初始化;请确保该寄存器依据以下步骤读取并更新:1. 读取储存在接收缓存中数据的首地址;2. 从储存在 socket n接收缓存中数据的首地址开头读取数据;3. 在读取完毕接收数据,将sn_rx_rd 的值更

31、新为所读数据大小;假如增加后的值超过最大值 0xffff,即超过 0×10000并产生进位,将会忽视进位,只取低16 位 值;4. 在接收到 recv 命令后,将更新后的sn_rx_rd 值告知 w5500.例 如 20480x0800在 s0_rx_rd 时,0x00280x00290x080x00sn_rx_wr socket n接收写指针寄存器 r 0x002a-0x002b 0x0000sn_rx_wr 寄存器可以通过 open 配置命令进行初始化;并且随着数据接收自动增加; 假如 sn_rx_wr 的值增长到超过最大值 0xffff(即超过 0×10000 并产生进位) ,那么将自动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论