每一个中断屏蔽位相应中断寄存器(SIR)中的一个位. 假设SIMR某位写0,即使IR中相应位为‘1’了,也不会引发中断,INTn引脚不会被拉低。 2.5 Sn_IR (Socket n 中断寄存器) [R] [0x0002] [0x00] Sn_IR 寄存器用于提供给Socket n 中断类型信息,如建立(Establishment)、终止(Termination)、接收
Sn_IR 寄存器用于提供给Socket n 中断类型信息,如建立(Establishment)、终止(Termination)、接收数据(Receiving data)和超时(Timeout)。当触发一个中断即Sn_IMR的相应位是’1′的时候,Sn_IR的相应位也将会变成‘1’。 假设想把Sn_IR位清零的话,主机应该将该位置‘1’ 这里的[R],而不是[R/W] 表示不能由...
Sn_MR(Socket n 模式寄存器):该寄存器用于配置所有 Socket 的选项或协议类型; Sn_IR (Socket n 中断寄存器):该寄存器用于提供给 Socket n 中断类型信息; Sn_RXBUF_SIZE (Socket n 接收缓存大小寄存器):该寄存器配置了 Socket n 的接收缓存大小。Socket n 接收缓存区大小可以配置为 1,2,4,8 和 16Kbytes。
TCP服务器设计如下:/*TCP服务器数据通讯*/int32_tW5500TCPServer(W5500ObjectType *w5500,W5500SocketType sn,uint16_t lPort) { int32_tret; switch(getSn_SR(sn)) { case SOCK_ESTABLISHED: {if(getSn_IR(sn) & Sn_IR_CON) { setSn_IR(sn,Sn_IR_CON); } uint16_t size=0;if((size = ...
//设置重试时间,默认为2000(200ms)//每一单位数值为100微秒,初始化时值设为2000(0x07D0),等于200毫秒Write_W5500_2Byte(RTR,0x07d0);//设置重试次数,默认为8次//如果重发的次数超过设定值,则产生超时中断(相关的端口中断寄存器中的Sn_IR 超时位(TIMEOUT)置“1”)Write_W5500_1Byte(RCR,8);}...
int tcp_server(uint8_t sn, uint16_t port) { int8_t ret; uint8_t dest_ip[4]; uint16_t dest_port; uint16_t size = 0; switch (getSn_SR(sn)) { case SOCK_CLOSED: /* open socket */ printf("TCP server start\r\n"); ...
2 int32_t W5500TCPServer(W5500ObjectType *w5500,W5500SocketType sn,uint16_t lPort) 3 { 4 int32_t ret; 5 6 switch(getSn_SR(sn)) 7 { 8 case SOCK_ESTABLISHED: 9 { 10 if(getSn_IR(sn) & Sn_IR_CON) 11 { 12 setSn_IR(sn,Sn_IR_CON); ...
Sn_IR 寄存器用于提供给Socket n 中断类型信息,如建立(Establishment)、终止(Termination)、接收数据(...
sn_SR寄存器改为SOCK_ESTABLIESHED。Sn_IR(0)会变为‘1’。 以下三种情况意味着连接请求失败: 1.ARPto发生超时(Sn_IR(s)=‘1')。因为目的地的MAC地址不能通过ARP过程中获取。 2.当没有收到SYN/ACK数据包,而引起TCPTO(Sn_IR(3))被设置为‘1’时。 3.当RST数据包而不是SYN/ACK数据包被接收时。以...
每个中断屏蔽位对应中断寄存器(SIR)中的一个位. 如果SIMR某位写0,即使IR中对应位为‘1’了,也不会引发中断,INTn引脚不会被拉低。 2.5 Sn_IR (Socket n 中断寄存器) [R] [0x0002] [0x00] Sn_IR 寄存器用于提供给Socket n 中断类型信息,如建立(Establishment)、终止(Termination)、接收数据(Receiving data...