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.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/dianqi/article-40499-4.html
杨洋好可爱哈哈
你是怎么算出来这结果的
反正从来不用小米的东西
惹