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)及掉电模式供客户选择使用。 特点
支持硬件 TCP/IP 协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE 支持 8 个独立端口(Socket)同时通讯 支持掉电模式 支持网络唤醒
支持高速串行外设接口(SPI 模式 0,3) 内部 32K 字节收发缓存
内嵌 10BaseT/100BaseTX 以太网物理层(PHY) 支持自动协商(10/100-Based 全双工/半双工) 不支持 IP 分片
3.3V 工作电压,I/O 信号口 5V 耐压;
LED 状态显示(全双工/半双工,网络连接,网络速度,活动状态) 48 引脚 LQFP 无铅封装(7x7mm, 0.5mm 间距)
目标应用
W5500 适合于以下嵌入式应用:
家庭网络设备: 机顶盒、个人录像机、数码媒体适配器 串行转以太网: 门禁控制、LED 显示屏、无线 AP 继电器等 并行转以太网: POS/微型打印机、复印机
USB 转以太网: 存储设备、网络打印机 GPIO 转以太网: 家庭网络传感器
安全系统: 数字录像机、网络摄像机、信息亭 工厂和楼宇自动化控制系统 医疗监测设备 嵌入式服务器
1 引脚分配
图 1 W5500 引脚分布 1.1 引脚描述
表格 1 引脚类型标记
表格 2 W5500 引脚描述
在 EXRES1 引脚和模拟地之间需要接一个 12. 4KΩ,精度 1 %的电阻。如下图所示:
图 2 外部参考电阻
晶振参考周边电路如下图所示:
图 3 晶振参考电路
2 主机接口
W5500 提供了 SPI(串行外部接口)作为外设主机接口,共有 SCSn, SCLK, MOSI, MISO 4 路信号,且作为 SPI 从机工作。
W5500 与 MCU 的连接方式如图 4 和图 5 所示。根据其工作模式(可变数据长度模 式/固定数据长度模式)将分别在第 2.3 章节和 2.4 章节做解释说明。 如图 4 所示,可以与其他 SPI 设备共用 SPI 接口
在可变数据长度模式中(如图 4 所示),W5500 可以与其他 SPI 设备共用 SPI 接口。 但是一旦将 SPI 接口指定给 W5500 之后,则不能再与其他 SPI 设备共用,如图 5 所示。
在可变数据长度模式(如图 4 所示),W5500 可以与其他 SPI 设备共用 SPI 接口。 然而,在固定数据长度模式(如图 5 所示),SPI 将指定给 W5500,不能与其他 SPI 设 备共享。
图 4 可变数据长度模式(SCSn 受主机控制)
图 5 固定数据长度模式(SCSn 保持接地)
SPI 协议定义了四种工作模式(模式 0,1,2,3)。每种模式的区别是根据 SCLK 的极性及相位不同定义的。SPI 的模式 0 和模式 3 唯一不同的就是在非活动状态下, SCLK 信号的极性。SPI 的模式 0 和 3,数据都是在 SCLK 的上升沿锁存,在下降沿输出。
W5500 支持 SPI 模式 0 及模式 3.MOSI 和 MISO 信号无论是接收或发送,均遵从从最 高标志位(MSB)到最低标志位(LSB)的传输序列。
前沿采样后沿采样图 6 SPI 模式 0&3
2.1 SPI 工作模式
W5500 与外设主机的通讯受 SPI 数据帧控制(参考第 2.2 章节 SPI 数据帧) 。 W5500 的帧分为 3 段:地址段,控制段,数据段。
地址段为 W5500 寄存器或 TX/RX 内存指定了 16 位的偏移地址。 控制段指定了地址段设定的偏移区域的归属,读/写访问模式以及 SPI 工作模式(可变长度模式/固定长度模式)。
数据段可以设定为任意长度(N-字节,1≤N)或者是固定的长度:1 字节,2 字节 或 4 字节;如果 SPI 工作模式设置为可变数据长度模式(VDM),SPI 的 SCSn 信号需要由外部 主机通过 SPI 帧控制。
在可变数据长度模式下,SCSn 控制 SPI 帧的开始和停止:
SCSn 信号拉低(高电平到低电平),即代表 W5500 的 SPI 帧开始(地址段);
SCSn 信号拉高(低电平到高电平),即代表 W5500 的 SPI 帧结束(数据段的随机 N字节数据结尾);
2.2 SPI 数据帧
W5500 的 SPI 数据帧包括了 16 位地址段的偏移地址,8 位控制段和 N 字节数据段。 如图 7 所示。
8 位控制段可以通过修改区域选择位 (BSB[4:0]),读/写访问模式位(RWB)以及 SPI工作模式位(OM[1:0])来重新定义。 区域选择位选择了归属于偏移地址的区域。
图 7 SPI 数据帧格式
W5500 支持数据的连续读/写。其流程为数据从(2/4/N 字节连续数据的)偏移地址的基址开始传输,偏移地址会(自增寻址)加 1 传输接下来 的数据。 2.2.1 地址段
地址段为 W5500 的寄存器或 TX/RX 缓存区指定了 16 位的偏移地址。 这 16 位偏移地址的值来自于从最高标志位到最低标志位的顺序传输。
SPI 数据帧的数据段(2/4/N 字节)通过偏移地址自增(每传输 1 字节偏移地址加 1) 支持连续数据读/写。 2.2.2 控制段
控制段指定了地址段设定的偏移区域的归属,读/写访问模式以及 SPI 工作模式。
表格 3 SPI 数据帧控制段对应位的说明
2.2.3 数据段
在 SPI 工作模式位 OM[1:0]设定了控制端之后,数据段被设定为 2 种长度类型:1 种为可变的 N 字节长度(可变数据长度模式),另以一种为确定的 1/2/4 字节长度(固定数 据长度模式)。 此时,1 字节数据从最大标志位到最小标志位,通过 MOSI 或者 MISO 信号传输。 2.3 可变数据长度模式
在 VDM 模式下,SPI 数据帧的长度被外设主机控制的 SCSn 所定义。这就意味着数据 段长度根据 SCSn 的控制,可以是一个随机值(从 1 字节到 N 字节任何长度均可)。 在 VDM 模式下,M[1:0]位必须为‘00’。 2.3.1 写访问——VDM 模式
图 8 在 VDM 模式下读 SPI 数据帧
图 8 显示的是在外部主机控制 W5500 读操作时的 SPI 数据帧。
在 VDM 模式下,SPI 数据帧的控制段:读写控制位(RWB)为‘1’,工作模式位为’00’。 此时外设主机在传输 SPI 数据帧之前,须拉低 SCSn 信号引脚。
然后主机通过 MOSI 将 SPI 数据帧的所有位传输给 W5500 ,并在 SCLK 的下降沿同 步。 在完成 SPI 数据帧的传输后,主机拉高 SCSn 信号(低电平到高电平)。 当 SCSn 保持低电平且数据段持续传输,即可实现连续数据写入。
1 字节数据写访问示例
当主机在 VDM 模式下,向通用寄存器区域中的 Socket 中断屏蔽寄存器写入数据‘0xA A’时,SPI 数据帧的写操作如下所示: Offset Address = 0×0018
BSB[4:0] = ‘00000’ RWB = ‘1’ OM[1:0] = ‘00’ 1st Data = 0xAA
在传输 SPI 数据帧之前,外设主机须拉低 SCSn,然后主机在时钟(SCLK)跳变时同步 传输 1 位数据。在 SPI 数据帧传输完毕后,外设主机拉高 SCSn。(参考图 9)
图 9 VDM 模式下,SIMR 寄存器写操作
N 字节写访问示例
当主机在 VDM 模式下,向通用寄存器区域中的 Socket 中断屏蔽寄存器写入 5 字节数 据时(0×11, 0×22, 0×33, 0×44, 0×55),SPI 数据帧的写操作如下所示:
N 字节的写访问如图 10 所示。
5 字节的数据被连续地写入 Socket 1 的写缓存地址:0×0040 – 0×0044。 在 SPI 数据帧传输时,外设主机拉低 SCSn(高电平到低电平)。
在 SPI 数据帧传输完毕时,外设主机拉高 SCSn(低电平到高电平)。
图 10 在 VDM 模式下,向 Socket1 的发送缓存区 0×0040 中写入 5 字节数据
2.3.2 读访问——VDM 模式
图 11 在 VDM 模式下读 SPI 数据帧
图 11 显示的是当外设主机访问 W5500 做读访问时,SPI 的数据帧格式。
在 VDM 模式下,读/写访问位(RWB)为‘0’(读模式),SPI 数据帧控制段的工作 模式位(OM[1:0])为‘00’。
与此同时,在 SPI 数据帧传输之前,外设主机拉低 SCSn(高电平到低电平)。 然后主机通过 MOSI 将地址及控制段的所有位传输给 W5500.所有为将在 SCLK 的下降 沿同步。
之后在同步采样时钟(SCLK)的上升沿,主机通过 MISO 接收到所有数据位。 在接收完所有数据后,主机拉高 SCSn(低电平到高电平)。
当 SCSn 保持低电平且数据段持续传输,即可实现连续数据读取。 1 字节数据读访问示例
在 VDM 模式下,当主机读取 Socket 7 寄存器区的 Socket 状态寄存器(S7_SR),SPI 数据帧的数据读取如下所示。我们让 S7_SR 设置为 Socket 建立模式下(0×17)。
在 SPI 数据帧传输之前,外设主机拉低 SCSn(高电平到低电平)。然后外设主机通过 M OSI 传输地址段和控制段给 W5500.
然后主机通过 MISO 接收到接收完的数据。
在完成数据段的接收后,主机拉高 SCSn(低电平到高电平)。(参考图 12)
图 12 在 VDM 模式下读 S7_SR
N 字节读访问示例
在 VDM 模式下,当从Socket3 的地址为 0×0100 的读取缓存中读取 5 字节的数据(0xAA, 0xBB, 0xCC, 0xDD,0xEE)。这 5 个字节数据的读访问 SPI 数据帧如下所示。
N 字节读访问如图 13 所示。
从 Socket 3 的接收缓存(地址 0×0100 – 0×0104),连续地读取这 5 字节的数据(0xAA, 0xBB, 0xCC, 0xDD, 0xEE)。
在 SPI 传输数据帧之前,外设主机将 SCSn 拉低。(高电平到低电平) 在 SPI 数据段结束时,外设主机将 SCSn 拉高。(低电平到高电平)
图 13 在 VDM 模式下,读取 Socket 3 接收缓存 0×0100 中的 5 字节数据 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 位的偏移地址范围内(从 0×0000 到 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 的寻址范 围(从 0×000 到 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 的寻址范 围(从 0×000 到 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 不等于‘0×00’,INTn 引脚将会被拉低。直到其变为‘0×00’时,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 不等于‘0×00’, 那么意味着 SIR 对应的第 n 位为‘1’。INTn 只有在 SIR 为 ‘0×00’时才能被拉低。
表格 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) 0×0019 0x001A 0x0F 0xA0
RCR (重试计数寄存器) [R/W] [0x001B] [0x08]
该寄存器是设置重新传送的次数。当第‘RCR+1’次重传时,超时中断就会置‘1’。 (中断寄存器(Sn_IR)的 ‘中断’位(‘TIMEOUT’ bit)设置为’1′)。 例) RCR = 0×0007 0x001B 0×07
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(0×0008), 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 = 0×01 0x001D 0×01
LCP Magic number = 0×01010101
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 为 0×1234 0×0024 0025 18 (0×12) 52(0×34)
PMRU (PPPoE 模式下最大接收单元) [R/W] [0x0026-0x0027] [0xFFFF]
PMRU 规定了 PPPoE 模式下的最大接收单元。 例) 例如 PPPoE 模式下最大接收单元为 0×1234
0×0026 0027 18 (0×12) 52 (0×34)
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 的版本寄存器默认为 0×04. 4.2 Socket 端口寄存器
Sn3_MR (Socket n模式寄存器) [R/W] [0x0000] [0x00] 该寄存器用于配置所有 SOCKET 的选项或协议类型
表格 12 Sn_MR 描述
3n 是 Socket 编号(0,1,2,3,4,5,6,7).n 设置了 SNUM[2:0]控制位集 n is Socket number (0, 1, 2, 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,但命令仍在处理中。为了验证该命令是否完成,请检查 Sn_IR 或 Sn_SR 寄存器。
表格 13 Sn_CR 描述
Sn_IR (Socket n 中断寄存器) [R] [0x0002] [0x00]
Sn_IR 寄 存器用于提供给 Socket n 中断类型信息, 如建立(Establishment)、 终止 (Termination)、接收数据(Receiving data)和超时(Timeout)。当触发一个中断即 Sn_IMR
的对应位是’1′的时候,Sn_IR 的对应位也将会变成‘1’。 如果想把 Sn_IR 位清零的话,主机应该将该位置‘1’。
表格 14 Sn_IR 描述
Sn_SR (Socket n 状态寄存器) [R] [0x0003] [0x00]
Sn_SR 指示了 Socket n 的状态,并根据 Sn_CR 或者一些 TCP 模式下的特殊控制包, 如 SYN,FIN 包而改变。
表格 15 Sn_SR 状态描述
下表显示了 Socket n 状态改变时的临时状态。
表格 16 Sn_SR 临时状态描述
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) ,配置应如下,
Sn_MSSR (Socket n-th 最大分段寄存器) [R/W] [0x0012-0x0013] [0x0000] 该寄存器配置或显示了 Socket n 的最大传输单元 MTU(Maximum Transfer Unit)。 在 TCP/UDP 模式下,默认该寄存器设定的最大传输单元生效。
然而,在 PPPoE 模式下(MR[PPPoE] = ‘1’),该寄存器将取决于 PPPoE 的最大传输单元。
表格 17 Sn_MSSR 描述
当 Socket n 处于 MACRAW 模式时,由于 MTU 不在内部处理,默认的 MTU 将会生效, 因此,当传输的数据比默认的 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) , 配置应如下,
Sn_TOS (Socket IP 服务类型寄存器) [R/W] [0x0015] [0x00]
该寄存器设置在 IP 层里 IP header 的 TOS(Type of Service – 服务类型) 字段。它应在执 行 OPEN 命令之前设置。请参考 http://www.iana.org/assignments/ip-parameters.
Sn_TTL (Socket IP 生存时间寄存器) [R/W] [0x0016] [0x80]
该寄存器设置在 IP 层里 IP 头的 TTL(Time-To-Live – 生存时间) 字段。它应在执行
OPEN 命令之前设置。请参考 Uhttp://www.iana.org/assignments/ip-parametersU . Sn_RXBUF_SIZE (Socket n 接收缓存大小寄存器 - Socket n RX Buffer Size Register) [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 配 置 完 成 后 , 就 会 按 照 Socket 0 到 7 的 顺 序 依 次
将
16Kbytes 的接收内存分配给各个 Socket 作为接收缓存使用。
不论 Socket n 的接收缓存配置的大小如何,都可以被 16 位的偏移地址寻址找到。(寻 址范围:0×0000 到 0xFFFF)
例) Socket 0 RX Buffer Size = 8KB
Sn_TXBUF_SIZE (Socket n 发送缓存大小寄存器) [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 = 4KB
Sn_TX_FSR (Socket n 空闲发送缓存寄存器) [R] [0x0020-0x0021] [0x0800]
Sn_TX_FSR 显 示了 Socket n 发送缓 存的 空闲空 间 大小。 该寄存 器初 始化 配 置为
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 接收缓存中已接收和保存的数据大小。
Sn_RX_RSR 不会超过 n_RXBUF_SIZE 大小,且计算的为 Socket n 接收写指针(Sn_RX_WR) 和 Socket n 接收读指针之间的空间大小。 例) 如 2048(0x0800) 在 S0_RX_RSR 时,
Sn_RX_RD (Socket n 接收读指针寄存器) [R/W] [0x0028-0x0029] [0x0000]
Sn_RX_RD 寄存器可以通过 OPEN 配置命令进行初始化。请确保该寄存器按照以下步 骤读取并更新:
1. 读取保存在接收缓存中数据的首地址;
2. 从保存在 Socket n 接收缓存中数据的首地址开始读取数据;
3. 在读取完毕接收数据,将 Sn_RX_RD 的值更新为所读数据大小。如果增加后的值 超过最大值 0xFFFF,即超过 0×10000 并产生进位,将会忽略进位,只取低 16 位 值。 4. 在接收到 RECV 命令后,将更新后的 Sn_RX_RD 值告知 W5500. 例) 如 2048(0x0800) 在 S0_RX_RD 时,
Sn_RX_WR (Socket n 接收写指针寄存器) [R] [0x002A-0x002B] [0x0000]
Sn_RX_WR 寄存器可以通过 OPEN 配置命令进行初始化。并且随着数据接收自动增加。 如果 Sn_RX_WR 的值增长到超过最大值 0xFFFF(即超过 0×10000 并产生进位),那么 将自动忽略进位,并自动更新为低 16 位的值。 例) 如 2048(0×0800) 在 S0_RX_WR 时,
Sn_IMR (Socket n 中断屏蔽寄存器) [R/W] [0x002C] [0xFF]
Sn_IMR 负责屏蔽 Socket n 的中断。每一位都对应了 Sn_IR 寄存器的相应位。Socket n 的中断触发并且 Sn_IMR 的对应位为‘1’时,Sn_IR 的对应位变为‘1’。如果 Sn_IMR 和 Sn_IR 的对应位均为‘1’且 IR 寄存器的相应为‘1’,INTn 引脚便会拉低并使主机 产生中断。
表格 18 Sn_IMR 描述
Sn_FRAG (Socket n 分段寄存器) [R/W] [0x002D-0x002E] [0x4000] 它设置了 IP 层中 IP 报头的分段字段。 例) Sn_FRAG0 = 0×4000 (不要分段)
Sn_KPALVTR (Socket 在线时间寄存器) [R/W] [0x002F] [0x00]
Sn_KPALVTR 配置了 SOCKET n 的‘KEEP ALIVE(KA)’在线验证心跳包传输时间。他只在 TCP 模式下生效,在其他模式下将会被忽略。单位时间为 5 秒。
KA 包会在 Sn_SR 变为 SOCK_ESTABLISHED 且与对方至少进行过一次收或发的通讯后 进行传输。如果‘Sn_KPALVTR > 0’,W5500 在一定时间周期会自动传输 KA 包以检查 TCP 的连接状态(自动在线验证)。如果‘Sn_KPALVTR = 0’,将不会启动自动在线验 证,主机可以通过 SEND_KEEP 配置命令发送 KA 包(手动在线验证)。在‘Sn_KPALVTR > 0’时,将会无视手动在线验证。
例)Sn_KPALVTR = 10(会每 50 秒自动发送一次在线验证包)
5 电气规范 5.1 绝对最大额定值
表格 19 绝对最大额定值
*备注:设备加载超过‘绝对最大额定值’时,可能造成永久性损坏。 5.2 绝对最大额定值 (电气灵敏度) 静电释放
表格 20 ESD
静态锁定
表格 21 静态锁定
5.3 直流特性
表格 22 直流特性
5.4 功耗
(测试环境: VDD=3.3V, AVDD=3.3V, Ta = 25°C)
表格 23 功耗
5.5 交流特性 5.5.1 复位时钟
图 22 复位时钟 表格 24 复位时钟
5.5.2 唤醒时间
整流器的唤醒时间为:10us 5.5.3 晶体特性
表格 25 晶体特性
5.5.4 SPI 时钟
图 23 SPI 时钟 表格 26 SPI 时钟
4 理论值速度
即使理论设定值速率为 80MHz,但是高速信号在受电磁串扰和长信号线的影响下可能会失真。目前实测具
有稳定波形的速率,至少能够保证为 33.3MHz.
详情参考 SPI 应用笔记,里面展示了 WIZnet 的测试环境及结果。
5.5.5 变压器特性
表格 27 变压器特性
图 24 变压器类型
5.5.6 极性变换 MDIX
W5500 不支持自动极性变换功能。 因此,用户需要使用直连线与交换机或路由器连接,使用交叉线与终端设备(如服务器,工作站 或其他 W5500)相连。 然而,用户可以使用任何一种类型的网线与具有自动极性变换的其他设备相连。对应接口会自动 纠正不正确的布线。 6 封装描述
图 25 封装描述
注意:1. 以上尺寸不包括模具突出部分; 2. ( )代表仅供参考; 3. [ ]基于组装质量 4. 单位:mm
因篇幅问题不能全部显示,请点此查看更多更全内容