打印
[应用相关]

STM32 以太网W5500

[复制链接]
695|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
略略u|  楼主 | 2022-4-30 17:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
W5500简介

W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。

特点:

    支持硬件 TCP/IP 协议: TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
    支持8个独立端口(Socket)同时通讯
    支持高速串行外设接口SPI( 80MHz 速率)
    内部32K字节收发缓存
    LED状态显示
    支持掉电模式、网络唤醒

使用特权

评论回复
沙发
略略u|  楼主 | 2022-4-30 17:41 | 只看该作者
以太网接入方案

1、MAC+PHY方案
MCU内部自带MAC,由于软件协议栈操作需要主控不断响应中断,极大程度上占用了MCU的资源。

使用特权

评论回复
板凳
略略u|  楼主 | 2022-4-30 17:55 | 只看该作者
优缺点:
软件协议栈需要主控不断地响应中断,占用资源大,会影响通信质量
代码量占用大,内存资源占用多;安全角度,容易收到攻击

使用特权

评论回复
地板
略略u|  楼主 | 2022-4-30 17:56 | 只看该作者
2、硬件协议方案
用硬件化的逻辑门电路实现所有的处理TCP/IP协议的工作。MCU只需要处理面向用户的应用层数据即可,传输、网络、链路层以及物理层全部由外围硬件芯片完成。

使用特权

评论回复
5
略略u|  楼主 | 2022-4-30 18:01 | 只看该作者

使用特权

评论回复
6
略略u|  楼主 | 2022-4-30 18:02 | 只看该作者
优缺点:
硬件协议栈,减少了单片机中断次数,通信速度快;
代码量少,比软件协议栈安全;
相比软件协议栈灵活性差,目前只支持8个socket

使用特权

评论回复
7
略略u|  楼主 | 2022-4-30 18:03 | 只看该作者
引脚连接

使用特权

评论回复
8
略略u|  楼主 | 2022-4-30 18:03 | 只看该作者
SPI读写访问

W5500 的 SPI 数据帧包括了 16 位地址段的偏移地址, 8 位控制段和 N 字节数据段。

使用特权

评论回复
9
略略u|  楼主 | 2022-4-30 18:04 | 只看该作者
写访问

使用特权

评论回复
10
略略u|  楼主 | 2022-4-30 18:05 | 只看该作者
在 VDM (可变数据长度模式)模式下, SPI 数据帧的控制段:读写控制位(RWB)为‘1’,如果是读则为‘0’,工作模式位为’00’。
此时外设主机在传输 SPI 数据帧之前,须拉低 SCSn 信号引脚。
然后主机通过 MOSI 将 SPI 数据帧的所有位传输给 W5500 ,并在 SCLK 的下降沿同步。
在完成 SPI 数据帧的传输后,主机拉高 SCSn 信号(低电平到高电平)。
当 SCSn 保持低电平且数据段持续传输,即可实现连续数据写入。

使用特权

评论回复
11
略略u|  楼主 | 2022-4-30 18:06 | 只看该作者
1 字节数据写访问示例
Offset Address = 0x0018
BSB[4:0] = ‘00000’
RWB = ‘1’
OM[1:0] = ‘00’
1st Data = 0xAA

使用特权

评论回复
12
略略u|  楼主 | 2022-4-30 18:06 | 只看该作者

使用特权

评论回复
13
略略u|  楼主 | 2022-4-30 18:07 | 只看该作者
在传输 SPI 数据帧之前, 外设主机须拉低 SCSn,然后主机在时钟(SCLK)跳变时同步
传输 1 位数据。在 SPI 数据帧传输完毕后,外设主机拉高 SCSn

使用特权

评论回复
14
略略u|  楼主 | 2022-4-30 18:07 | 只看该作者
寄存器以及地址

W5500 有 1 个通用寄存器,8 个 Socket 寄存器区,以及对应每个 Socket 的收/发缓存区。每个区域均通过 SPI 数据帧的区域选择位(BSB[4:0])来选取。

使用特权

评论回复
15
略略u|  楼主 | 2022-4-30 18:08 | 只看该作者
每个 Socket 分配多大的收/发缓存,必须在 16 位的偏移地址范围内(从0x0000 到 0xFFFF)

使用特权

评论回复
16
略略u|  楼主 | 2022-4-30 18:09 | 只看该作者
以下对地址的一些理解
在寄存器偏移计算的宏定义,采用宏定义方便计算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

使用特权

评论回复
17
Pulitzer| | 2022-10-6 07:29 | 只看该作者

硬件设计和软件设计本来就是鱼和熊掌的关系,两者不可兼得

使用特权

评论回复
18
Uriah| | 2022-10-6 14:30 | 只看该作者

让尽可能多的变量使用直接寻址,提高速度

使用特权

评论回复
19
Bblythe| | 2022-10-6 17:29 | 只看该作者

每个Strategy交由Spring管理,并在构造后注册

使用特权

评论回复
20
Pulitzer| | 2023-5-1 07:29 | 只看该作者

做多层板可将做好的两块双面板用特制的粘合剂“压合”起来

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

603

帖子

0

粉丝