微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > iEthernet W5200数据手册(版本1.2.4)之:寄存器说明

iEthernet W5200数据手册(版本1.2.4)之:寄存器说明

时间:09-18 来源:3721RD 点击:

转到gSn_TX_BASE,然后再编写其余部分的传输数据。) 之后,切记要把Sn_TX_WR的数值增加到跟编写数据的大小相同。最后,提供一个SEND命令给Sn_CR (Socket n-th 命令寄存器)。 如果有需要,请参考TCP服务器模式下传输部分的 psedo代码 。

Sn_RX_RSR (已接收大小寄存器) [R] [0x4026+0x0n00-0x4027+0x0n00] [0x0000]

该寄存器向用户提供在Socket n-th接收内存里已接收数据的字节大小。由于这是以Sn_RX_RD和Sn_RX_WR的数值进行内部计算,它会因Sn_CR (Socket n-th 命令寄存器)中的RECV命令和从远程节点接收数据而自动改变。

当检查该寄存器时,用户应先阅读高字节(0x4026, 0x4126, 0x4226, 0x4326, 0x4426, 0x4526, 0x4626, 0x4726),然后阅读低字节(0x4027, 0x4127, 0x4227, 0x4327, 0x4427, 0x4527, 0x4627, 0x4727)才会得到正确的数值。

例) 如2048(0x0800) 在S0_RX_RSR时,

这个数值的总大小可以根据接收内存大小寄存器的数值来决定。

Sn_RX_RD (Socket n-th 接收读指针寄器)[R/W][0x4028+0x0n00-0x4028+0x0n00]

[0x0000]

该寄存器提供的位置信息读取接收数据。当检查该寄存器时,用户应先阅读高字节 (0x4028, 0x4128, 0x4228, 0x4328, 0x4428, 0x4528, 0x4628, 0x4728),然后阅读低字节(0x4029, 0x4129, 0x4229, 0x4329, 0x4429, 0x4529, 0x4629, 0x4729) 才会得到正确的数值。

注意:此寄存器的数值会在成功执行SEND命令到Sn_CR后被改变。

例) 如2048(0x0800) 在S0_RX_RD时,

但阅读这数值本身并不是物理地址。因此,物理地址的计算方法如下。

1. Socket n-th接收基址地址(此后会称为gSn_RX_BASE) 和Socket n-th接收掩码地址

(此后会称为gSn_RX_MASK)将会以RMSR数值计算。如有需要,请参考 psedo的5.1

初始化代码。

2. 将Sn_RX_WR和gSn_RX_MASK进行位与运算(bitwise-AND operation),将得到的结

果赋予Socket的传输内存中的偏移地址(此后会称为 get_offset)。

3. 把get_offset和gSn_RX_BASE的数值相加起来,然后将结果赋予物理地址(此后会称为get_start_address)。

Sn_RX_WR (Socket n-th 接收写指针寄存器)[R/W][(0xFE402A + 0xn00) – (0xFE402B + 0xn00)][0x0000]

该寄存器提供位置信息以供编写接收数据。当检查该寄存器时,用户应先阅读高字节(0x402A, 0x412A, 0x422A, 0x432A, 0x442A, 0x452A, 0x462A, 0x472A),然后阅读低字节(0x402B, 0x412B,0x422B, 0x432B, 0x442B, 0x452B, 0x462B, 0x472B)才会得到正确的数值。

例) 如2048(0x0800) 在S0_RX_WR时,

Sn_IMR (Socket n-th 中断掩码寄存器)[R/W][0x402C+0x0n00][0xFF]

该寄存器配置Socket n-th的中断,以及通知到主机。Sn_IMR的中断掩码位跟Sn_IR的中断位是对应的。如果中断发生在任何Socket时,该位会设置为‘1’,而与其对应的Sn_IR位也会设置为‘1’。当Sn_IMR和Sn_IR的位同时是‘1’'时,IR(n)将成为‘1’。在这个时候,如果IMR(n) 是‘1’,中断将会被发送到主机。 (‘nINT'’信号为低电平)

Sn_FRAG (Socket n-th分段器)[R/W][0x402D+0x0n00-0x402E+0x0n100][0x4000]

它设置了IP 层中IP 报头的分段字段。W5200并不支持在IP层的分段数据包。尽管Sn_FRAG已配置,但IP数据并没有分段,同时也不建议在此分段。它应该在执行OPEN命令之前被配置。

例) Sn_FRAG0 = 0x4000 (不要分段)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top