图5是W5100在TCP客户模式的处理流程。
3.2中断处理
在处理W5100的中断时,首先应访问W5100的中断寄存器(IR),可用MCU通过访问IR获得产生中断的来源。任何中断源都可以被中断寄存器(IMR)的相应位所屏蔽,因此,若要使用某个中断源,先要置位该中断源在IMR中的相应位,这样,当IR中对应位置位时,才会产生中断。此后当中断产生时,即进入中断处理程序。对于每个中断事件,处理方式可由用户自己定义。
假如使用的是端口0中断。可在W5100的初始化程序中先将IMR中的IM_IR 0(端口0中断屏蔽位)置位。这样,当端口0中断发生时(IM_IR0=I,S0_INT=1),系统将开始读端口0中断寄存器(S0_IR),在W5100的端口寄存器中,主要设置有建立连接(CON)、终止连接(DISCON)、数据发送完成(SEND_OK)、接收数据(RECV)和超时(TIMEOUT)等中断事件。
3.3 数据接收
当端口产生接收中断时,可调用接收函数S_rx_process(SOCKET s)将端口接收到的数据缓存到Rx_buffer数组中,并返回接收的数据字节数。当读完所有的数据后,可将接收存储器读指针寄存器(S0_RX_RD)的值加上读取的数据长度,然后再写入S0_RX_RD,最后向端口0的命令寄存器(S0_CR)写入RECV命令,以等待下次接收数据。但要注意在计算实际物理偏移量rx_offset时,S_RX_SIZE必须保证和在初始化代码中定义的接收缓存区的大小一致。
3.4 数据发送
通过Socket发送数据时,首先把要发送的数据缓存在Tx_buffer中。此外,在发送数据时,还需先检查发送缓存区的剩余空间的大小,然后控制发送数据的字节数。端口发送缓存区的大小由发送存储器空间寄存器(TMSR)确定。在数据发送处理过程中,剩余空间的大小将因写入数据而减少,发送完成后又自动增加。把Tx_buffer的数据完全写入端口的发送数据缓存区后,可将端口传输写指针寄存器(Sn_TX_WR)中的值加上写入的数据长度,再写入Sn_Tx_WR,以指示发送数据的长度,最后在命令寄存器(Sn_CR)中写入SEND命令,以启动发送。
4结束语
本文对控制终端设计提出了一些新颖的设计思路,利用该思路可实现现场和网络的混合控制。该系统创新处主要包括如下几点:
(1)具有USB\UART等输入输出端口,可用于现场测控;
(2)可通过以太网接口实现网络传输、远程网络测控和信息资源共享等功能;
(3)可通过大容量的存储器来进行大容量的数据采集,并将其存储在片上处理;