w5500以太网控制器,集成TCP/IP协议栈、10/100M以太网数据链路层(MAC)、物理层(PHY),因而实现了TCP/IP4层协议中的3层,用户只需要实现最上层的应用层就行。
接口:
w5500使用SPI与主机通讯,本身作为SPI从机工作;
w5500仅支持SPI协议中的模式0和3(数据都是在时钟上升沿锁存,下降沿输出),两者唯一区别是非活动状态下,时钟信号的极性;
w5500的MOSI和MISO均遵从又高到低的传输序列。
w5500与外设主机SPI通讯帧格式:
地址段 16位寄存器或TX/RX偏移地址
控制段 8位 BSB[7:4]:区域选择位(1个通用寄存器、8个socket寄存器、每个socket对应2个TX/RX缓存)
RWB[3]:读/写访问设置位
OM[1:0]:数据长度模式选择位(跟片选线结合配置,仅讨论实际采用的可变数据长度模式)
数据段长度可变 n字节(1<=n)
寄存器和内存:
中断默认处于开启状态,中断分为2类:
普通中断(IR):产生这类中断时INTn引脚拉低,实际INTn引脚未用,即不考虑普通中断
socket中断(Sn_IR):INTn引脚只有在socket中断全部结束后才能被拉低
超时时间定义:
RTR配置重传超时时间,单位值是100us,缺省值是200ms(100us*0x07D0),在该时间内,w5500等待Sn_CR(CONNECT、DISCON、CLOSE、SEND、SEND_MAC、SEND_KEEP)传输后,来自对方的回应,如果没有回应,进行包重传或触发超时中断
RCR设置重传次数,缺省值8,当RCR+1次重传时,超时中断触发(Sn_IR[TIMEOUT]置1)
w5500超时包含2种:
ARP(地址解析协议)重传超时:ARP_timeout=(RTR×0.1ms)*(RCR+1)
TCP重传超时:TCP_timeout=
N-重传次数
M-满足
& 0<M<RCR的最小值
-
W5500的socket可以使用3种协议:
TCP:
TCPserver流程-配置socket为TCP模式(Sn_MR,MR_TCP)
打开socket(Sn_CR,OPEN)
开启监听,等待client连接请求(Sn_CR,LISTEN)
一旦建立连接(Sn_SR,ESTABLISHED),server和client就可以相互通讯
TCPclient流程-配置socket为TCP模式(Sn_MR,MR_TCP)
打开socket(Sn_CR,OPEN)
发出连接请求,等待server接收连接(Sn_CR,CONNET)
一旦建立连接(Sn_SR,ESTABLISHED),server和client就可以相互通讯
TCP下关闭socket流程:
主动关闭-发出断开请求(FIN数据包)到所连接的对方(Sn_CR,DISCON),当断开请求没有收到对方的ACK时,TCP_timeout触发,Sn_SR变为SOCK_CLOSED,socket关闭
被动关闭-当从对方接收到断开连接请求(FIN数据包)时,回复一个FIN到对方(Sn_CR,DISCON),Sn_SR变为SOCK_CLOSED,socket关闭
直接关闭-(Sn_CR,CLOSE),Sn_SR变为SOCK_CLOSED,socket关闭
UCP:
流程-配置socket为UDP模式(Sn_MR,MR_UDP)
打开socket(Sn_CR,OPEN)
MACRAR:略
收发缓冲内存:
W5500分别有16KB内存用于作收发缓冲,缺省每个socket分配2KB,该值可以通过Sn_TXBUF_SIZE/Sn_RXBUF_SIZE重新分配,但不论大小如何,收发缓冲的寻址范围都是0x0000~0xffff。
注:收发缓冲地址偏移、保存理解起来有些麻烦,实际使用只需参照例程