继续给大家介绍W5500 数据手册。

2.4       固定数据长度模式(FDM)

在外设主机不能控制 SCSn 时,可以使用固定数据长度模式。

此时,SCSn 必须连接到低电平(保持接地)。与此同时,SPI 接口不能与其他 SPI 设备 共享。(如图 5 所示)

在可变数据长度模式(VDM)中,数据段长度右 SCSn 控制。 但是在固定长度模式(FDM)中,数据长度由 SPI 工作模式位的控制段的值控制((OM [1:0])=‘01’/‘10’/‘11’)。

由于除了 SCSn 信号和工作模式位(OM[1:0])设置之外,FDM 模式下 SPI 数据帧与 VD M 模式下的相同,所以此时具体的描述就省略了。

除非特殊情况,一般不提倡使用 FDM 模式。此外,如‘2.4.1 章节’及‘2.4.2 章节’ 所述,我们只能使用 1/2/4 字节 SPI 数据帧。使用其他长度数据帧会导致 W5500 功能问 题。

2.4.1     写访问——FDM 模式

1 字节写访问

图 14 在 FDM 模式下,1 字节写访问 SPI 数据帧

2 字节写访问

图 15 在 FDM 模式下,2 字节写访问 SPI 数据帧

4 字节写访问

图 16 在 FDM 模式下,4 字节写访问 SPI 数据帧

2.4.2     读访问——FDM 模式

1 字节读访问

图 17 在 FDM 模式下,1 字节读访问 SPI 数据帧

2 字节读访问

图 18 在 FDM 模式下,2 字节读访问 SPI 数据帧

4 字节读访问

图 19 在 FDM 模式下,4 字节读访问 SPI 数据帧

3          寄存器和内存构成

W5500 有 1 个通用寄存器,8 个 Socket 寄存器区,以及对应每个 Socket 的收/发缓存区。

每个区域均通过 SPI 数据帧的区域选择位(BSB[4:0])来选取。图 20 显示了区域选择位

(BSB[4:0])选择的区域以及收/发缓存区的可用偏移地址范围。每一个 Socket 的发送 缓存区都在一个 16KB 的物理发送内存中,初始化分配为 2KB。每一个 Socket 的接收缓 存区都在一个 16KB 的物理接收内存中,初始化分配为 2KB。

无论给每个 Socket 分配多大的收/ 发缓存,都必须在 16 位的偏移地址范围内(从

0x0000 到 0xFFFF)。

关于 16KB 收/发内存的构成及访问方式的更多信息,请参考‘3.3 章节’。

图 20 寄存器及内存构成

3.1       通用寄存器区

通用寄存器区配置了 W5500 的基本信息,例如:IP 及 MAC 地址。该区域可以通过 SPI

数据帧的区域选择位(BSB[4:0])的值选定。表 3 描述了该区域寄存器的偏移地址。对 于每个寄存器的详细信息,请参考‘4.1 章节’。

3.2       Socket 寄存器区

W5500 支持 8个 Socket 作为通讯信道。每一个Socket 通过Socket n  寄存器区控制(0≤n≤7)。Socket n 寄存器可以通过 SPI 数据帧中的区域选择寄存器(BSB[4:0])来选定对应的寄存器 n。<表 5>定义 了 Socket n 寄存器区对应的 16 位偏移地址。

关于每个寄存器,详情参考‘4.2 章节’

表格 5 Socket n 寄存器区中的偏移地址(0≤n≤7)

3.3       内存 Memory

W5500 有一个 16KB 的发送内存用于 Socket n 的发送缓存区,以及一个 16KB 的接收内

存用于 Socket n 的接收缓存区。

16KB 的发送内存初始化被分配为每个 Socket 2KB 发送缓存区(2KB X 8 = 16KB)。初 始化分配的    2KB    Socket    发送缓存  ,  可以通过使用    Socket    发送缓存大小寄存器

(Sn_TXBUF_SIZE)重新分配。

一旦所有的 Socket 发送缓存大小寄存器(Sn_TXBUF_SIZE)配置完成,16KB 的发送内 存就会按照配置分配给每个 Socket 的发送缓存,并按照从 Socket 0 到 7 顺序分配。16KB 物 理内存的地址是可以自增的。但是 , 为了避免数据传输错误 , 需要避免发送缓存大小寄存器

(Sn_TXBUF_SIZE)的和超过 16。

16KB 的读取内存的分派方式与 16KB 的发送内存一样。16KB 的接收内存初始化被分配 为每个 Socket 2KB 接收缓存区(2KB X 8 = 16KB)。初始化分配的 2KB Socket 接收缓存,可 以通过使用 Socket 接收缓存大小寄存器(Sn_XBUF_SIZE)重新分配。

一旦所有的 Socket 发缓存大小寄存器(Sn_TXBUF_SIZE)配置完成,16KB 的发送内存 就会按照配置分配给每个 Socket 的发送缓存,并按照从 Socket 0 到 7 顺序分配。16KB 物理 内存的地址是可以自增的。但是 , 为了避免数据传输错误 , 需要避免发送缓存大小寄存器 ( Sn_TXBUF_SIZE)的和超过 16。

对于  16  字节收 / 发内 存的分 配 , 请参 考‘ 第  4 .2  章节’ Sn_TXBUF_SIZE  和

Sn_RXBUF_SIZE 的相关描述。

16KB 的发送内存中分配了对应 Socket n 的发送缓存区,用于为来自主机传输的数据做 缓存。Socket n 的发送缓存区。Socket n 发送缓存区的 16 位偏移地址支持 64KB 的寻址范 围(从 0x000 到 0xFFFF),关于他的配置请参考‘Socket n 发送写指针寄存器(Sn_TX_WR)’ 以及 Socket n 发送读指针寄存器(Sn_RX_WR)。然而,这 16 位偏移地址会自动转化为指定的

16K B  发送 内存的 物理地 址,如 图  20  所示。 请参考 ‘ 4 .2  章节’ 中,关 于

Sn_TX_WR & Sn_TX_RD 的介绍。

16KB 的接收内存中分配了对应 Socket n 的接收缓存区,用于为来自网络传输的数据做 缓存。Socket n 的接收缓存区。Socket n 接收缓存区的 16 位偏移地址支持 64KB 的寻址范 围(从 0x000 到 0xFFFF),关于他的配置请参考‘Socket n 接受读指针寄存器(Sn_RX_RD)’ 以及 Socket n 接受写指针寄存器(Sn_RX_WR)。然而,这 16 位偏移地址会自动转化为指定的

16K B  接收 内存的 物理地 址,如 图  20  所示。 请参考 ‘ 4 .2  章节’ 中,关 于Sn_RX_RD & Sn_RX_WR 的介绍。

4 寄存器描述

4.1 通用寄存器

MR (模式寄存器- Mode Register) [R/W] [0x0000] [0x00]2
该寄存器用于S/W 复位,ping block模式和PPPoE模式。

表格6  通用寄存器描述

GAR (网关 IP 地址寄存器) [R/W] [0x0001 – 0x0004] [0x00]

该寄存器用来设置默认网关地址。 例) 例如:“192.168.0.1”

SUBR (子网掩码寄存器) [R/W] [0x0005 – 0x0008] [0x00]

该寄存器用来设置子网掩码地址.

例) 例如: “255.255.255.0”

SHAR (源 MAC 地址寄存器) [R/W] [0x0009 – 0x000E] [0x00]

该寄存器用来设置源 MAC 地址。 例) 例如:“00.08.DC.01.02.03”

SIPR (源 IP 地址寄存器) [R/W] [0x000F – 0x0012] [0x00]

该寄存器用来设置源 IP 地址。 例)例如:“192.168.0.2”

INTLEVEL (低电平中断定时器寄存器) [R/W] [0x0013 – 0x0014] [0x0000]

该寄存器用于设置中断生效等待的时间(IAWT)。当下一个中断触发,中断引脚将会在 IN TLEVEL 时间后,拉低中断引脚(INTn)。

图 21 INTLEVEL 时序

A.  当 Socket 0 的超时中断被触发,在 INTn 引脚被拉低后,S0_IR[3] & SIR[0]设置为

‘1’。

B.  当 Socket 1 的连接中断在前一个中断未处理完成之前被触发,则 INTn 引脚仍然位 低,S1_IR[0] & SIR[1]位设置为‘1’。

C.  如果主机完全是通过清理 S0_IR[3]位来完成之前的中断,则 INTn 引脚拉高,但是

S1_IR[0] & SIR[1]仍然为‘1’。

D.  即  使 S1_IR[0]     &    SIR[1]位被设置为‘1’,但是在     INTLEVEL    期  间  ,

INTn 不能被拉低。只有过了 INTLEVEL 时间,INTn 才能被拉低。

IR (中断寄存器) [R/W] [0x0015] [0x00]

中断寄存器(IR)指明了中断的状态。IR     的每一位都是‘0’,直到被主机写为‘1’.

如果 IR 不等于‘0x00’,INTn 引脚将会被拉低。直到其变为‘0x00’时,INTn 才会被 拉高。

表格 7 IR 说明

IMR (中断屏蔽寄存器) [R/W][0x0016][0x00]

中断屏蔽寄存器(IMR)用来屏蔽中断源。每个中断屏蔽位对应中断寄存器(IR)中的 一个位。

如果中断屏蔽位被置“1”时,无论何时 IR 对应的位也置”1”,中断即会产生。换而言之, 当 IMR 中屏蔽位被清“0”。即使对应的 IR 中断位置“1”,也不会产生中断。

表格 8 IMR 说明

SIR (Socket 中断寄存器) [R/W] [0x0017] [0x00]

SIR 指明了 Socket 的中断状态。该寄存器的每一位直到被主机置‘1’前均为‘0’。

如果 Sn_IR 不等于‘0x00’, 那么意味着 SIR 对应的第 n 位为‘1’。INTn 只有在 SIR 为

‘0x00’时才能被拉低。

表格 9 SIR 描述

SIMR (Socket 中断屏蔽寄存器) [R/W] [0x0018] [0x00]

SIMR 寄存器中的每一位都对应 SIR 的相应位。当 SIMR 的一位为‘1’,而 SIR 的对应 位为‘1’时,中断将被触发。换而言之,如果 SIMR 的一位为‘0’,那么即使 SIR 对应 位为’1’,中断将不会被触发。

表格 10 SIMR 描述

RTR (重试时间值寄存器) [R/W] [0x0019 – 0x001A] [0x07D0]

RTR 配置了重传超时的时间值。每一单位数值为 100 微秒。初始化时值设为 2000

(0x07D0),即相当于 200 毫秒(100us X 2000)。

在  RTR  配置 的时 间内 , W5500  等待  Sn-CR(CONNECT, DISCON,  CLOSE,  SEND, SEND_MAC, SEND_KEEP command)传输后,来自对方的回应。如果在 RTR 时间段内没 有回应,W5500 进行包重传或触发超时中断。

例) 当超时周期别设置为 400ms 时,RTR = (400ms / 1ms) X 10 = 4000(0x0FA0)

0x0019        0x001A
0x0F           0xA0

RCR (重试计数寄存器) [R/W] [0x001B] [0x08]

该寄存器是设置重新传送的次数。当第‘RCR+1’次重传时,超时中断就会置‘1’。

(中断寄存器(Sn_IR)的 ‘中断’位(‘TIMEOUT’ bit)设置为'1')。

例) RCR = 0x0007

0x001B
0x07

W5500 的超时可以用 RTR 和 RCR 来配置。W5500 的超时包括地址解析协议(ARP)和

TCP 重新传 送超时。

在 ARP 的重新传送超时(请参阅 RFC 826  http://www.ietf.org/rfc.html),W5500 会 自动发 送 ARP 请求去对方(peer)的 IP 地址,从而获取 MAC 地址信息(IP、UDP 或 TCP 用于通信)。至 于等待对方(peer)的 ARP 响应方面,如在 RTR 中设置了重新传送时间 时,对方(peer)的 ARP 没 有响应,超时发生和 ARP 将会请求重新传送。一直重复此步 骤达'RCR+1'次。 如果在 ARP 重复请求重新传送次数达到'RCR+1'次时,仍然没有得到 ARP 响应,就会触发最终超时中断,Sn_IR(TIMEOUT)会变为'1'。

ARP 请求的最终超时值(ARPTO)如下:

在 配 置 了  RTR  和  RCR  期间,发生 TCP  数据包 重 传 超时,W5500 就会发送  TCP

数据包(SYN、FIN、RST、数据包)和等待确认(ACK)。如果没有对方(peer)的 ACK 响 应,就会触发一个临时超时中断且 TCP 数据包(较早前传送的)会重新传送。直到重新 传送'RCR+1'次。即使 TCP  数据包重新传送'RCR+1'次,如果对方(peer)仍然没有的 ACK 回应,就会触发最终超时中断且同一时间 Sn_IR(TIMEOUT)='1'。

例) 当 RTR = 2000(0x07D0), RCR = 8(0x0008),

ARPTO = 2000 X 0.1ms X 9 = 1800ms = 1.8s

TCPTO = (0x07D0+0x0FA0+0x1F40+0x3E80+0x7D00+0xFA00+0xFA00+0xFA00+0xFA00)  X 0.1ms

= (2000 + 4000 + 8000 + 16000 + 32000 + ((8 - 4) X 64000)) X 0.1ms

= 318000 X 0.1ms = 31.8s

PTIMER (PPP 连接控制协议请求定时寄存器) [R/W] [0x001C] [0x0028]

LCP Echo 请求的期限。PTIMER 的值为 1 时,大约是 25 毫秒(ms) 。 例) 如果 PTIMER 是 200,

例) 如果 PTIMER 为 200,

200 * 25(ms) = 5000(ms) = 5 seconds

PMAGIC (PPP 连接控制协议幻数寄存器) [R/W] [0x001D] [0x00]

该寄存器配置了用于 LCP 回应请求的 4 字节幻数(Magic number)。

例) PMAGIC = 0x01

0x001D
0x01

LCP Magic number = 0x01010101

PHAR (PPPoE 模式下目标 MAC 寄存器) ß[R/W] [0x001E-0x0023] [0x0000]

PHAR 需要在 PPPoE 连接过程中写入 PPPoE 服务器所需的 MAC 地址。 例) 例如目标 MAC 地址为 00:08:DC:12:34:56

PSID (PPPoE 模式下会话 ID 寄存器) [R/W] [0x0024-0x0025] [0x0000]

PSID 需要填入 PPPoE 连接过程中需要的 PPPoE 服务器会话 ID。 例) 例如会话 ID 为 0x1234

0x0024                0025
18 (0x12)           52(0x34)

PMRU (PPPoE 模式下最大接收单元) [R/W] [0x0026-0x0027] [0xFFFF]

PMRU 规定了 PPPoE 模式下的最大接收单元。 例) 例如 PPPoE 模式下最大接收单元为 0x1234

0x0026                        0027

18 (0x12)                   52 (0x34)

UIPR (无法抵达 IP 地址寄存器) [R] [0x0028-0x002B] [0x00000000]

UPORTR (无法抵达端口寄存器) [R] [0x002C-0x002D] [0x0000]

当 W5500 发送数据给一个未开启或不可抵达的端口号时,接收到一个 ICMP 包(目的 地址无法抵达),IR 变为‘1’,UIPR & UPORTR 会分别记录下目的 IP 地址和端口号。

例) 例如“192.168.0.11”

PHYCFGR (W5500 PHY 配置寄存器) [R/W] [0x002E] [0b10111XXX]

PHYCFGR 配置 PHY 的工作模式及 PHY 重启。此外,PHYCFGR 指明了 PHY 的状态, 比如:全/办双工,速度,链接状态。

表格 11 PHYCFGR 描述

VERSIONR (W5500 芯片版本寄存器) [R] [0x0039] [0x04]

W5500 的版本寄存器默认为 0x04.

今天就为大家介绍到这里。明天讲最后一部分。

W5500相关内容:

高性能以太网芯片W5500 数据手册 V1.0(一)

感谢关注!

更多信息与我们交流:

WIZnet邮箱: wiznetbj@wiznet.co.kr

高性能以太网芯片W5500 数据手册 V1.0(二)的更多相关文章

  1. 高性能以太网芯片W5500 数据手册 V1.0(一)

    W5500 W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案.W5500 集成了 TCP/IP 协议栈,10/100M 以太网数据链路层(MAC) ...

  2. 《次元唤醒 需求规格说明书v1.0》

    一.团队分工 组员 工作比例 参与范围 王诚荣 17% 原型设计,需求规格说明书整合,LOGO设计 马祎特 22% PPT制作,演讲,博客模板,用户描述 陈斌 21% 评审表格制作,引言,项目描述,功 ...

  3. jplogic v1.0案例开发之知识库管理(文档管理等)(二)

    jplogic v1.0开发陆续更新,意在和广大网友分享交流.通过寻求合作伙伴,交流群.以下是jplogic的关于知识库模块的部分功能,例如以下进行功能展示: 知识库主界面: 新增知识类别: wate ...

  4. J20航模遥控器开源项目系列教程(一)制作教程 | 基础版V1.0发布,从0到1

    我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ...

  5. WIZnet即将推出高性能网络芯片W5500

    WIZnet将于9月份推出高性能网络芯片W5500,这是继W5100.W5200和W5300之后一款全新的全硬件TCP/IP协议栈网络芯片,这款芯片具有更低功耗与工作温度,及改良工艺,是嵌入式以太网的 ...

  6. 【iCore4 双核心板】DEMO V1.0 测试程序发布

    iCore4 Demo V1.0程序说明 一.概要 本资料包含5个文件夹: 1.“arm”里是iCore4上arm的程序包,开发环境为KEIL5.17: 2.“fpga”里是iCore4上FPGA的程 ...

  7. MySQL与MariaDB核心特性比较详细版v1.0(覆盖mysql 8.0/mariadb 10.3,包括优化、功能及维护)

    注:本文严禁任何形式的转载,原文使用word编写,为了大家阅读方便,提供pdf版下载. MySQL与MariaDB主要特性比较详细版v1.0(不含HA).pdf 链接:https://pan.baid ...

  8. 痞子衡嵌入式:kFlashFile v1.0 - 一个基于Flash的掉电数据存取方案

    大家好,我是痞子衡,是正经搞技术的痞子.今天给大家带来的是痞子衡的个人小项目 - kFlashFile. 痞子衡最近在参与一个基于 i.MXRT1170 的项目,项目有个需求,需要在 Flash 里实 ...

  9. 痞子衡嵌入式:超级下载算法RT-UFL v1.0发布,附J-Link下安装教程

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> 历时 8 个月终于迎来了 v1.0 版发布,因为是第一个正式版,为了保证质 ...

随机推荐

  1. JDBC和DBUtils区别(查询时jdbc只能返回ResultSet需要po转vo,dbutils返回的BeanListHandler与BeanHandler对应集合与对象)

    17:34 2013/6/7 JDBC //添加客户 public void addNewCustomer(Customer c) throws DAOException { Connection c ...

  2. struts2用了哪几种模式

    代理模式 责任连模式 ActionVacation 迭代模式

  3. HtmlTestRunner二次封装(TestRunner.py)

    将HtmlTestRunner进行二次封装,使报告生成的更方便 import HTMLTestRunner import unittest import time, os class TestRunn ...

  4. Ural1387 Vasya's Dad

    Description Vasya's dad is good in maths. Lately his favorite objects have been "beautiful" ...

  5. [DP] Rod-cutting problem

    给一个长度为 n 的杆子,切成小段卖出去,价格根据小段的长度不同而不同.下面是一个例子 我们要通过切成小段卖出尽可能高的总价钱.问题是:How to decompose the problem? De ...

  6. unity 导出 android安装包配置方案

    原地址:http://blog.csdn.net/u012085988/article/details/17393111 1.jdk本人安装的是win32版的(虽然系统是64位的.但听说装64位的导出 ...

  7. Linux下OpenSSL 安装图文详解

    安装环境:        操作系统:CentOs6.3 OpenSSL Version:openssl-1.0.0e.tar.gz 目前版本最新的SSL地址为http://www.openssl.or ...

  8. *[topcoder]HexagonalBoard

    http://community.topcoder.com/stat?c=problem_statement&pm=12784 真心觉得tc的div1 250不少好题,对我来说比较适合.这道题 ...

  9. 49. 面向对象的LotusScript(十五)之Log4Dom下

    Log4Dom是模仿Log4J的思想建立的.Log4J能够向多种记录媒介以统一的格式写入各种级别的日志信息(包括错误.调试和信息等),还可以籍配置文件在运行时方便地修改记入日志的级别.Log4Dom提 ...

  10. hadoop运行流程分析源代码级

    前言: 最近一直在分析hadoop的运行流程,我们查阅了大量的资料,虽然从感性上对这个流程有了一个认识但是我总是感觉对mapreduce的运行还是没有一个全面的认识,所以决定从源代码级别对mapred ...