一 前言
最近刚完结一个新项目,其中部分功能是用W5500这款硬件TCPIP协议栈芯片实现以太网通信,这里简单坐下介绍。
二 使用
使用的话,建议还是好好看看芯片手册,这里做个摘要:
1.W5500采用SPI作为通信接口,支持SPI模式0及模式3.MOSI和MISO信号无论是接收或发送,均遵从从最高标志位(MSB)到最低标志位(LSB)的传输序列。
2.W5500 spi帧结构
16位地址段 + 8位控制段 + N字节数据
先由控制段确认区域首地址,然后再由16位地址段确定该区域实际偏移地址
控制段里面
0-1 工作模式位 //这里的工作模式不是spi的工作模式,而是指w5500工作在可变数据长度模式还是固定长度模式(1/2/4),详情参考文档—一般不提倡使用固定长度模式,且长度只能是1/2/4
2 RW读写位 //0 读 1 写
3-7 区域选择位,区域选择位选择了归属于偏移地址的区域
//w5500有通用寄存器,8个socket寄存器,以及对应每个socket读写缓存
//这几位则用来选择寄存器地址区域或者相应的发送接收缓存地址区域
//注意,选择的这个地址可以认为是一段空间的首地址,并不是只有一个字节
//高3位 表示socket X 低2位表示保留or寄存器区or Tx_buf or Rx_buf
3.寄存器和内存构成
(1)该芯片有一个16kb的物理发送缓存和一个16kb的物理接收缓存,每一个socket的发送和接收缓存,初始化分配都是2kb;无论给每个socket分配多大的收发缓存,都必须在16位地址偏移范围内0x0000 到0xFFFF
(2)
common register 0x0000~0x0039 存放了基本的一些信息,比如ip,mac地址;0x003A~0xFFFF reserved
socketn register 0x0000~0x0030 包含了socket相关的一些信息:0x0030~0xffff reserved
三 驱动
很遗憾,想贴上来的,大概率因为公司网络安全限制,无法发布,这里就放上官网的驱动地址,改巴改巴也能用
1.野火资料中心:https://doc.embedfire.com/products/link/zh/latest/module/enternet/w5500.html
2.w5500官网:https://www.w5500.com/code.html
ps1:实际使用的时候,如果收发在两个任务里面处理,最好做下收发的同步,不然可能出现收发几次就卡死的问题
PS2:这里记录下网络相关的一点知识
mac:属于链路层,负责生成数据帧,和访问控制
phy: 属于物理层,作用就是物理信号的形式,完成数据的接收和发送
两层紧密配合