美文网首页
W5500嵌入式以太网控制器

W5500嵌入式以太网控制器

作者: 无知的talent | 来源:发表于2020-08-29 16:24 被阅读0次

一. W5500介绍

W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)以及物理层(PHY),使得用户使用单芯片就能够在他们的应用中扩展网络连接。

Features:

  • 支持硬件TCP/IP协议栈:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE

  • 支持8个独立端口(socket)同时通讯

  • 支持掉电模式

  • 支持网络唤醒

  • 支持高速串行外设接口(SPI模式0,3)

  • 内部32k字节收发缓存,内嵌10BaseT/100BaseTX以太网物理层

  • 支持自动协商(10/100-Base全双工/半双工)

  • 不支持IP分片

  • 3.3V工作电压,I/O信号口5V耐压

  • LED状态显示(全双工/半双工, 网络连接, 网络速度, 活动状态)

W5500芯片系统结构框图

Screen Shot 2020-08-29 at 1.26.23 PM.png

从上图可以看出W5500作为一款以太网通信芯片,它可以方便的扩展出主控芯片的以太网通信接口。W5500提供了SPI接口用于与主控芯片进行数据通讯,W5500的内部主要可以分为以下模块:

  1. SPI接口控制器

  2. 寄存器管理器

  3. TCP/IP协议栈核(从上到下包括传输层,网络层和数据链路层)

  4. MII(介质无关接口)管理器

  5. 以太网物理层

  6. 内存管理器

  7. 32k的发送和接收缓存

二. W5500与主控芯片的数据交互

W5500提供了SPI接口用于实现与主控芯片的数据交互。

W5500与主机的连接方式及SPI工作模式

  1. SPI协议根据时钟信号空闲电平定义(高电平or低电平)以及数据锁存边沿方向(上升沿or下降沿)定义了SPI的4种工作模式(工作模式0,1,2,3)。在W5500中只支持工作模式0和3,在这两种模式下数据总是在SCLK信号的上升沿被锁存,在SCLK信号的下降沿被输出。

    Screen Shot 2020-08-29 at 4.11.16 PM.png
  2. 根据W5500与主控芯片的连接方式不同,W5500的SPI可以工作在两种模式下:

  • 变数据长度模式(VDM)

    Screen Shot 2020-08-29 at 4.10.28 PM.png
  • 定数据长度模式(FDM)

    Screen Shot 2020-08-29 at 4.10.50 PM.png

W5500的SPI数据帧格式

Screen Shot 2020-08-29 at 4.11.37 PM.png
  1. 偏移地址域(16bits):MSB到LSB传输,支持连续读写模式,该模式下偏移地址自动加1。

  2. 控制字域(8bits):

    1. 包括块选择位(4bits):选择W5500内存中的不同块,包括普通寄存器和8个socket寄存器及相应的发送/接收寄存器。

    2. 读写控制位:0为读, 1 为写。

    3. 模式选择位:配置W5500的SPI工作模式,配置定义如下表

      OM[0:1]值 模式
      00 可变数据长度模式,Nbytes数据域
      01 固定数据长度模式,N=1
      10 固定数据长度模式,N=2
      11 固定数据长度模式,N=4
  3. 数据域(N*8bits):MSB到LSB传输的数据

W5500的内存分布结构

Screen Shot 2020-08-29 at 4.12.48 PM.png

W5500的内部存储包括:

  1. 1个普通寄存器block:这里配置了W5500的一些基本信息,如网络配置(IP,MAC地址,Socket中断配置等等)

  2. 8个Socket寄存器block:这里配置了每个Socket对应的信息,如Socket的模式,命令,状态,中断信息等。

  3. 8个Socket对应的接收缓冲寄存器block(共16k):初始时每个Socket分配为2k的缓存,用户可以自己重新通过修改相应的配置寄存器进行修改,但是要保证分配给8个Socket的缓冲大小之和不能超过16k,否则会报错。

  4. 8个Socket对应的发送缓冲寄存器block(共16k):同3

三. W5500官方库移植

W5500官方库介绍:

wiznet公司为了方便芯片使用者进行软件开发,提供了相应的芯片底层驱动库,在这个库中实现了:

  1. 对W5500的硬件抽象,用户只需要将主控芯片的SPI驱动函数注册到W5500中即可以实现主控芯片和W5500之间的数据交互。

  2. 实现了TCP/IP协议的接口,官方库中实现了BSD风格的Socket接口可供用户直接调用。

  3. 提供了一些应用层协议开发的接口实现,如FTP, HTTP,MQTT等。

官方库使用github托管,链接地址为:

[wiznet/ioLibrary] Https://github.com/Wiznet/ioLibrary_Driver

W5500官方库移植方法

  1. 下载或clone官方库到本地,选择需要的文件添加到自己的工程当中,官方库的文件架构如下:

    w5500_ioLibrary.jpeg

    Ethernet文件夹下包含的是以太网相关协议的实现,一般都是必须的(选择相应的芯片类型添加),而internet文件夹下则是一些应用层协议的实现,可以根据自己的需要进行添加。

  2. 根据实际使用的芯片和硬件架构修改wizchip_conf.h头文件中的定义,如:

    1. 根据实际使用的芯片修改芯片型号定义(WIZCHIP宏),默认为W5100S,使用W5500芯片时只需要改为:

           #define _WIZCHIP_              W5500
      
    2. 找到W5500对应的宏定义配置处,修改W5500与主控芯片的通信配置信息,对于W5500来说只有SPI这一种接口,这里只需要根据自己的需求选择SPI的两种工作模式:VDM和FDM,例如治理选择VDM模式:

          #define   _WIZCHIP_IO_MODE_       _WIZCHIP_IO_MODE_SPI_VDM
      
    3. 在wizchip_conf.h文件中有对W5500芯片的封装,该文件中提供了很多函数注册的接口,用于实现用户定义的SPI驱动函数接口和W5500官方库的硬件抽象接口之间的连接。因此只需要按照官方库中的定义实现相关的SPI驱动函数,然后再调用官方库中提供的注册函数将这些驱动函数进行注册,就能够打通主控芯片与W5500芯片之间的数据交互,实现驱动移植。

    4. 新建两个SPI驱动的接口文件,例如:w5500_interface.h和w5500_interface.c。然后在文件中实现以下底层的驱动函数:

        void CS_Select(void); //片选使能
        void CS_deSelect(void);   //片选清使能
        void SPI_Write_Byte(uint8_t byte);    //写单子节
        uint8_t SPI_Read_Byte(void);      //读单子节
        /* 丛发模式读数据 */
        void SPI_Read_Burst(uint8_t *buff, uint16_t len);
        /* 丛发模式写数据 */
        void SPI_Write_Burst(uint8_t *buff, uint16_t len);
      
    5. 编写W5500的初始化函数:

          void w5500_init(void);              
      

      在该函数中调用官方库提供的注册函数,将步骤4中实现的底层SPI驱动函数进行注册。

相关文章

  • W5500嵌入式以太网控制器

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

  • 以太网控制器类型

    以太网控制器(DM9161AEP)的实现主要有两种方式: 一、PHY控制器+MCU(集成MAC控制器)+以太网变压...

  • w5500问题集锦1

    在”WIZnet杯”以太网技术竞赛中,有很多参赛者在使用中对W5500有各种各样的疑问,对于这款WIZnet新推出...

  • sailsjs - 学习笔记

    控制器 嵌入式策略 定制路由 api 服务 数据库连接(mongoDB) 部署 监视 控制器 嵌入式策略 定制路由...

  • STM32CubeMX学习笔记(41)——ETH接口+LwIP协

    一、ETH简介 STM32F4xx 系列控制器内部集成了一个以太网外设,它实际是一个通过 DMA 控制器进行介质访...

  • STM32CubeMX学习笔记(42)——ETH接口+LwIP协

    一、ETH简介 STM32F4xx 系列控制器内部集成了一个以太网外设,它实际是一个通过 DMA 控制器进行介质访...

  • 嵌入式知识总汇

    欢迎提供意见和建议 嵌入式工程师硬件核心(Hardware Core)Controller(控制器)CPUAMD ...

  • STM32CubeMX HAL库控制 W5500 - Part

    初始化 W5500,配置网络连接基本设置

  • W5500问题集锦2

    W5500自去年9月推出,已经有一年的时间。一年间,不乏很多客户纷纷将目光投向了W5500这颗性价比很高的全新硬件...

  • 网络分层模型与ARP协议

    一、链路层 链路层包含以太网卡,光纤,电缆,驱动,以太网驱动 链路层:以太网协议,以太网帧,光纤电缆 链路层的数据...

网友评论

      本文标题:W5500嵌入式以太网控制器

      本文链接:https://www.haomeiwen.com/subject/bmkjsktx.html