W5500笔记
来源:互联网 发布:张馨予淘宝店名 编辑:程序博客网 时间:2024/05/29 01:52
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。
注:收发缓冲地址偏移、保存理解起来有些麻烦,实际使用只需参照例程
- W5500笔记
- Microduino-W5500
- W5500使用
- 全硬件TCP/IP协议栈学习笔记(第十一天:FPGA+W5500 PING通)
- 全硬件TCP/IP协议栈学习笔记 W5500+FPGA实现tcp连接
- WIZnet正式发布W5500
- W5500参考电路图
- W5500问题集锦(二)
- W5500参考电路图
- W5500 Ethernet Shield使用指南
- W5500多节点连接
- W5500问题集锦(一)
- W5200-W5500程序移植教程
- W5500 EVB 用户手册 V1.01
- STM32F103VCT6+W5500 UDP通信成功
- W5500 ARM mbed 库发布
- W5500中断寄存器的理解
- 跟W5500学习SMTP协议
- Prompt设置提示符
- jsp页面中Table边框使用总结
- system函数
- 编译aix6.1下的oracle 10g下的bbed
- LINQ体验(5)——LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg
- W5500笔记
- 欢迎使用CSDN-markdown编辑器
- CSV文件 科学计数法
- ALV中的fieldcat常用以及大全
- 什么是抽样分布?
- Java 对象锁
- dataTables-使用详细说明整理
- 【Java每日一题】20161228
- [李景山php]每天TP5-20170125|thinkphp5-Process.php-7