attach_34137" sizcache="3" sizset="4" style="display: none; position: absolute"> attachments/day_110325/11032523157bf5871c40ac0c8f.jpg" status="2" style="width: 300px" onload="return imgresize(this);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>
端口初始化主要是对端口进行初始化,包括设置UDP模式、设置端口号,设置OPEN命令;通过Sn_RX_RSR寄存器的值可检测是否收到数据,若非零,即进入数据接收处理;接收处理时,首先读取Sn_RX_RSR寄存器的值,即接收数据字节数,然后计算偏址和实际物理地址,再根据物理地址读取数据。在读取数据过程中,如果物理地址到达该端口设定的高限地址,则先读高限地址的数据,然后将物理地址改为基地址,然后再从基地址继续读取剩余的数据。读完所有的数据后,可将Sn_RX_RR的值加上读取的数据长度,然后写入sn_RX_BASE,最后再向端口n的指令寄存器写入RECV命令。
发送数据?/发送处理的实现过程是首先读取S_TX_FSR寄存器的值以便能使用发送数据空间的大小来计算偏址和实际物理地址,然后再从物理地址写入要发送的数据。在发送数据过程中,如果物理地址已到达该端口设定的高限地址,则先将数据写入高限地址,然后再将物理地址改为基地址,接着从基地址继续写入数据。写完所有的数据后,再将Sn_TX_WR的值加上发送的数据长度,然后写入Sn_TX_BASE,最后向端口n的指令寄存器写入SEND命令。发送完成的确定可在发送(SEND)命令后,通过检测Sn_CR的值来判断数据是否全部发送完成。
当远程对端不存在或数据传输不正常时,将产生超时错误。此次可以通过对Sn_IR(TIMEOUT bit)检测来判断是否超时。当操作全部完成时,应关闭窗口,即将Sn_CR寄存器置为CLOSE。
4 结束语
本文介绍了以太网接口的设计及其数据传输的实现过程。利用本文的方法可以使以太网接口正常运行,故可为后续的虚拟仪器开发奠定基础。事实上,本方法已经过多次试验证明:完全满足工程需要。
attach_34135" sizcache="3" sizset="6" style="display: none; position: absolute"> attachments/day_110325/1103252315d1f89d5fb01f0d9f.jpg" status="2" style="width: 400px" onload="return imgresize(this);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>