STM32 以太网W5500
W5500简介W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。
特点:
支持硬件 TCP/IP 协议: TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
支持8个独立端口(Socket)同时通讯
支持高速串行外设接口SPI( 80MHz 速率)
内部32K字节收发缓存
LED状态显示
支持掉电模式、网络唤醒
以太网接入方案
1、MAC+PHY方案
MCU内部自带MAC,由于软件协议栈操作需要主控不断响应中断,极大程度上占用了MCU的资源。
优缺点:
软件协议栈需要主控不断地响应中断,占用资源大,会影响通信质量
代码量占用大,内存资源占用多;安全角度,容易收到攻击 2、硬件协议方案
用硬件化的逻辑门电路实现所有的处理TCP/IP协议的工作。MCU只需要处理面向用户的应用层数据即可,传输、网络、链路层以及物理层全部由外围硬件芯片完成。 优缺点:
硬件协议栈,减少了单片机中断次数,通信速度快;
代码量少,比软件协议栈安全;
相比软件协议栈灵活性差,目前只支持8个socket 引脚连接
SPI读写访问
W5500 的 SPI 数据帧包括了 16 位地址段的偏移地址, 8 位控制段和 N 字节数据段。
写访问
在 VDM (可变数据长度模式)模式下, SPI 数据帧的控制段:读写控制位(RWB)为‘1’,如果是读则为‘0’,工作模式位为’00’。
此时外设主机在传输 SPI 数据帧之前,须拉低 SCSn 信号引脚。
然后主机通过 MOSI 将 SPI 数据帧的所有位传输给 W5500 ,并在 SCLK 的下降沿同步。
在完成 SPI 数据帧的传输后,主机拉高 SCSn 信号(低电平到高电平)。
当 SCSn 保持低电平且数据段持续传输,即可实现连续数据写入。 1 字节数据写访问示例
Offset Address = 0x0018
BSB = ‘00000’
RWB = ‘1’
OM = ‘00’
1st Data = 0xAA 在传输 SPI 数据帧之前, 外设主机须拉低 SCSn,然后主机在时钟(SCLK)跳变时同步
传输 1 位数据。在 SPI 数据帧传输完毕后,外设主机拉高 SCSn 寄存器以及地址
W5500 有 1 个通用寄存器,8 个 Socket 寄存器区,以及对应每个 Socket 的收/发缓存区。每个区域均通过 SPI 数据帧的区域选择位(BSB)来选取。 每个 Socket 分配多大的收/发缓存,必须在 16 位的偏移地址范围内(从0x0000 到 0xFFFF)
以下对地址的一些理解
在寄存器偏移计算的宏定义,采用宏定义方便计算socket n所使用的地址
#define WIZCHIP_CREG_BLOCK 0x00 //< Common register block
#define WIZCHIP_SREG_BLOCK(N) (1+4*N) //< Socket N register block
#define WIZCHIP_TXBUF_BLOCK(N) (2+4*N) //< Socket N Tx buffer address block
#define WIZCHIP_RXBUF_BLOCK(N) (3+4*N) //< Socket N Rx buffer address block
硬件设计和软件设计本来就是鱼和熊掌的关系,两者不可兼得
让尽可能多的变量使用直接寻址,提高速度
每个Strategy交由Spring管理,并在构造后注册
做多层板可将做好的两块双面板用特制的粘合剂“压合”起来
页:
[1]