目录
W5500 两种工作模式-可变数据长度模式和固定数据长度模式
W5500 具体的初始化过程
1、首先基本设置,W5500的操作需要设置以下寄存器的参数:
- 模式寄存器(MR)
- 中断屏蔽寄存器(IMR)
- 重发时间寄存器(RTR)
- 重发计数寄存器(RCR)
2、设置网络信息,下面的寄存器是关于网络的基本配置,需要根据网络环境来进行设置。
- 网关地址寄存器(GAR)
- 本机物理地址寄存器(SHAR)- MAC 层的硬件地址
- 子网掩码寄存器(SUBR)
- 本机 IP 地址寄存器(SIPR)
3、设置端口 TX/RX 存储信息,每个端口的基地址和屏蔽地址在这里确定并保存。
W5500 有 1 个通用寄存器,8 个 Socket 寄存器区,以及对应每个 Socket 的收/发缓存区。
SPI 数据帧
W5500 的 SPI 数据帧包括了 16 位地址段的偏移地址, 8 位控制段和 N 字节数据段。
控制段
控制段指定了地址段设定的偏移区域归属,读/写访问模式及 SPI 工作模式。
符号 |
说明 |
BSB [4:0] |
区域选择位-Block Select Bits W5500 有 1 个通用寄存器, 8 个 Socket 寄存器,以及对应每个 Socket 的读/写缓存。 |
RWB |
读/写访问模式位 - Read/Write Access Mode Bit 该位设置读/写访问模式: ‘0’:读 ;‘1’:写 |
OM [1:0] |
SPI 工作模式位 - SPI Operation Mode Bits 该位设置 SPI 工作模式。SPI 模式支持 2 种模式:可变数据长度模式和固定长度模式 |
数据段
在 SPI 工作模式位 OM[1:0]设定了控制端之后,数据段被设定为 2 种长度类型: 1 种为可变的 N 字节长度(可变数据长度模式),另以一种为确定的 1/2/4字节长度(固定数据长度模式)。
此时, 1 字节数据从最大标志位到最小标志位,通过 MOSI 或者 MISO 信号传输。
寄存器和内存构成
W5500 有 1 个通用寄存器, 8 个 Socket 寄存器区,以及对应每个 Socket 的收发缓存区。每个区域均通过 SPI 数据帧的区域选择位(BSB[4:0])来选取。
下图 显示了区域选择位(BSB[4:0])选择的区域以及收/发缓存区的可用偏移地址范围。每一个 Socket 的发送缓存区都在一个 16KB 的物理发送内存中,初始化分配为 2KB。每一个 Socket 的接收缓存区都在一个 16KB 的物理接收内存中,初始化分配为 2KB。
无论给每个 Socket 分配多大的收/发缓存,都必须在 16 位的偏移地址范围内(从 0x0000 到 0xFFFF)。
通用寄存器区
通用寄存器区配置了 W5500 的基本信息,例如: IP 及 MAC 地址。该该区域可以通过 SPI 数据帧的区域选择位(BSB[4:0])选定。下表描述了通用寄存器的偏移地址。
Socket 寄存器区
W5500 支持 8 个 Socket 。每个 Socket 通过 Socket n 寄存器区控制。 Socket n 寄存器可以通过 SPI 数据帧中的区域选择寄存器(BSB[4:0])来选定对应的寄存器 n。 下表定义了 Socket n 寄存器区对应的 16 位偏移地址。
内存 Memory
W5500 有一个 16KB 的发送内存用于 Socket n 的发送缓存区,以及一个 16KB的接收内存用于 Socket n 的接收缓存区。
- 有一个 16KB 的发送内存用于 Socket n 的发送缓存区。16KB 的发送内存初始化被分配为每个 Socket 2KB ,可以通过使用发送缓存大小寄存器(Sn_TXBUF_SIZE)重新分配。一旦所有的 Socket 发送缓存大小寄存器(Sn_TXBUF_SIZE)配置完成,16KB 的发送内存就会按照从 Socket 0 到 7 顺序分配给每个 Socket。 但 是 , 为 了 避 免 数 据 传 输 错 误 , 要 避 免 发 送 缓 存 大 小 寄 存 器(Sn_TXBUF_SIZE)的和超过 16。
- 有一个 16KB 的接收内存用于 Socket n 的接收缓存区。16KB 的接收内存初始化被分配为每个 Socket 2KB 。可以通过使用接收缓存大小寄存器(Sn_XBUF_SIZE)重新分配。一旦所有的 Socket 发缓存大小寄存器(Sn_TXBUF_SIZE)配置完成,16KB 的发送内存就会按照从 Socket 0到 7 顺序分配给每个 Socket 的发送缓存但是,为了避免数据传输错误,需要避免发送缓存大小寄存器(Sn_TXBUF_SIZE)的和超过 16。
- 无论给每个 Socket 分配多大的收/发缓存,都必须在 16 位的偏移地址范围内(从 0x0000 到 0xFFFF)。
W5500 两种工作模式-可变数据长度模式和固定数据长度模式
在可变数据长度模式中,W5500 可以与其他 SPI 设备共用 SPI 接口。但是一旦将 SPI接口指定给 W5500 之后,也就是 CS 片选信号选中 W5500,则不能再与其他 SPI 设备共用。
在固定数据长度模式,SPI 将指定给 W5500,不能与其他 SPI 设备共享。因为CS 片选信号将直接接地为低电平。
可变数据长度模式
在 VDM 模式下, SPI 数据帧的长度被外设主机控制的 SCSn 所定义。这就意味着数据段长度根据 SCSn 的控制,可以是一个随机值(从 1 字节到 N 字节任何长度均可)。在 VDM 模式下, M[1:0]位必须为‘00’。
写访问—VDM 模式
在 VDM 模式下, SPI 数据帧的控制段:读写控制位(RWB)为‘1’,工作模式位为’ 00’。
外设主机在传输 SPI 数据帧之前,须拉低 SCSn 信号引脚。然后主机通过 MOSI 将 SPI 数据帧的所有位传输给 W5500,并在 SCLK 的下降沿同步。
在完成 SPI 数据帧的传输后,主机拉高 SCSn 信号(低电平到高电平)。当 SCSn 保持低电平且数据段持续传输,即可实现连续数据写入。
读访问—VDM 模式
在 VDM 模式下,读/写访问位(RWB)为‘0’, 工作模式位(OM[1:0])为‘00’。
在 SPI 数据帧传输之前,外设主机拉低 SCSn(高电平到低电平)。然后主机通过 MOSI 将地址及控制段的所有位传输给 W5500。 所有为将在SCLK 的下降沿同步。之后在同步采样时钟(SCLK)的上升沿,主机通过 MISO 接收到所有数据位。
在接收完所有数据后,主机拉高 SCSn(低电平到高电平)。当 SCSn 保持低电平且数据段持续传输,即可实现连续数据读取。