0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用SPI驱动wiznet的网络接口芯片W5xxx

先楫半导体HPMicro 来源: RCSN嵌入式 2023-11-01 10:10 次阅读

一、概述

本文应用主要是使用SPI驱动wiznet网络接口芯片W5xxx,根据wiznet提供的ioLibrary_Driver库支持W5100、W5100S、W5200、W5300、W5500。主要从以下几点进行说明:

使用hpm_sdk的cmake框架对接wiznet的ioLibrary_Driver。

ioLibrary_Driver的底层读写相关操作接口注册对接。

以ioLibrary_Driver库测试wiznet的速率性能。

本文不做wiznet芯片相关寄存器阐述,只简单阐述W5xxx的通信机制。

本文以W5500作为本文测试芯片。

29d6f21e-7859-11ee-939d-92fbcf53809c.png

二、流程

(一)使用hpm_sdk的cmake框架对接wiznet的ioLibrary_Driver

在一些开源项目上,可能并没有使用cmake来进行搭建,而hpm_sdk基于cmake构建,所以在移植的过程中,建议使用cmake框架加入开源项目。本文以对接wiznet的ioLibrary_Driver作为例子供开发者相关参考。

里面包含了w5xxx的驱动程序以及应用程序协议,使用该库基本可以很快能对接好相应的功能实现。

需要关心的是Ethernet文件夹,里面包含了如W5500,W5300,W5200,W5100,W5100S的读写相关中间层,还提供了socket应用层操作接口。

29f442c4-7859-11ee-939d-92fbcf53809c.png

1、芯片读写操作层加入

在此库中,仅支持一款w5xxx,所以添加到工程,也只能是一个芯片读写操作的文件夹。在每个芯片上加入cmakelists文件,把对应的头文件包含以及添加对应的C文件。

如以下:比如W5100文件夹,使用sdk_inc和sdk_src命令,把该文件下的所需的文件进行添加以及包含该文件夹的头文件。

29fa5c54-7859-11ee-939d-92fbcf53809c.png

2、Ethernet文件加入

外层想使用文件夹的时候,可以通过set一个参数来判断对应的芯片操作选择,然后再添加ethernet内部的socket.c和config.c文件。

通过CONFIG_WIZNET参数来进行对不同芯片加入筛选,以及加入两个宏定义,一个是给config表示目前使用的是哪个芯片,一个是让app知道引用的是哪个头文件。

2a1d656e-7859-11ee-939d-92fbcf53809c.png

3、APP加入ioLibrary_Driver相关文件。

在本文中,使用的芯片是W5500,需要用到DHCP和ioLibrary_Driver里面application的loopback的tcp client接口,那么在app的camkelist可以做以下操作:

(1)set(CONFIG_WIZNET "w5500") 设置CONFIG_WIZNET为w5500,这样cmake到ioLibrary_Driver索引时候只添加w5500这个文件夹。

(2)add_subdirectory(ioLibrary_Driver) 加入ioLibrary_Driver文件目录

(3)sdk_app_src sdk_inc 加入ioLibrary_Driver需要的相关文件和头文件

2a3f0d22-7859-11ee-939d-92fbcf53809c.png

4、使用sdk_env的start_gui生成工程或者使用命令行生成都可以。这里使用start_gui

2a5e0f74-7859-11ee-939d-92fbcf53809c.png

可以看到ioLibrary_Drivers对应的目录和文件都已经添加到SES。

2a80c672-7859-11ee-939d-92fbcf53809c.png

如此编译也Ok

2a99d6a8-7859-11ee-939d-92fbcf53809c.png

(二)ioLibrary_Driver的底层读写相关操作接口注册对接

在ioLibrary_Drivers的config上,需要接口注册的主要是临界区、CS片选操作、单字节收发、块收发传输接口。在该库中也有对应的注册接口wizchip_conf.h中。

2aaeaccc-7859-11ee-939d-92fbcf53809c.png

2ac25d76-7859-11ee-939d-92fbcf53809c.png

1、临界区注册

这里临界主要做全局中断的使能和禁止,可根据自身应用添加

2acf8208-7859-11ee-939d-92fbcf53809c.png

2、CS片选信号操作注册

在这里为了避免CS拉低后存在较高的间隔,实际的拉低在actual_cs_sel API操作,就是在开启SPI传输的时候调用,具体请详见 玩转先楫SPI外设系列 文章,这里不做阐述说明。

cs操作接口使用sdk对应的board的cs操作API,可自行根据应用更改。

2ada8c84-7859-11ee-939d-92fbcf53809c.png

3、读写单字节操作注册

需要注意的是,这里为了方便快速操作,比如在读接口SPI设置为只读,然后设置传输长度,复位FIFO,开启传输,等待数据接收完成后读取数据。写接口也是如此。具体请详见 玩转先楫SPI外设系列 文章,这里同样不做阐述说明。

2af4acea-7859-11ee-939d-92fbcf53809c.png

4、块读写传输操作注册

DMA相关的操作请详见 玩转先楫SPI外设系列 文章,这里同样不做阐述说明。

5、注册相关操作接口

2b1cd4cc-7859-11ee-939d-92fbcf53809c.png

(三)以ioLibrary_Driver库测试wiznet的速率性能。

W5500官方手册中,虽然可以支持到80M的SPI SCLK,但官方的建议是33.3M推荐频率,再高的频率会出现些许采样问题,在实际测试的过程中也是如此,hpm_sdk的Board.h默认为20M,本文SLCK的频率调整为30M左右测试。

在性能上,wiznet官方也出了W5500对应的MAX速率为15Mbps。如果需要更高的可以选择W5100/s

2b3dc22c-7859-11ee-939d-92fbcf53809c.png

2b59b8e2-7859-11ee-939d-92fbcf53809c.png

2b77d4d0-7859-11ee-939d-92fbcf53809c.png

在本文所实现的例子实现中,可通过cmakelists开启或者关闭DHCP,或者开启和关闭tcp iperf测试。默认都是开启。

2b939e86-7859-11ee-939d-92fbcf53809c.png

如果想静态IP分配,那么直接在main.c中更改load_net_parameters API里面的ip值即可。

2ba1c5e2-7859-11ee-939d-92fbcf53809c.png

iperf测试软件链接:

https://cloud.firebbs.cn/forum/201903/14/141408i20v8ny2i8tckkzy.zip?OSSAccessKeyId=LTAI4GJiLU8j9rPvpTDpqQKC&Expires=1698567700&Signature=JPFda8WE9%2BSZpIcf8JY8xOHd4xo%3D

这里iperf测试主要测试W5500作为Tcp client的发送性能。在SPI SCLK 30M下,可以达到17Mbps速度性能,与wiznet官方提供的15Mbsps速率相当,满足性能需求。

2bb3cf62-7859-11ee-939d-92fbcf53809c.png

2bd02b9e-7859-11ee-939d-92fbcf53809c.png

目前ioLibrary_Driver库性能还能继续提升,比如修改socket的send和recv实现逻辑,减少查询和等待;中间层少数据收发再次封装等等。

在逻辑分析仪下,socket的发送接口send,在实际发送前,会查询以及等待相关网络状态寄存器,占用了不少时间。wiznet提供的15mbps只有理论的一半性能也是这个时间所消耗引起。

2bf287b6-7859-11ee-939d-92fbcf53809c.png

2c19a918-7859-11ee-939d-92fbcf53809c.png

三、总结

在ioLibrary_Driver库下,hpm的SPI驱动W5500的网络性能可以达到17Mbps,与wiznet官方的15Mbps保持一致。

如果需要提高性能,可以选择wetne其他芯片。或者自身优化wiznet的ioLibrary_Driver库。比如socket的发送send逻辑。

对于HPM6200,HPM5300等先楫通用MCU没有以太网接口,但是有实际以太网需求或者方案平替,可以选择SPI驱动相关的芯片网络接口。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620845
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117723
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89600
  • 接口芯片
    +关注

    关注

    0

    文章

    73

    浏览量

    16660

原文标题:开发者分享|[hpm_application]先楫单片机使用SPI驱动网络接口芯片W5xxx(wiznet)

文章出处:【微信号:HPMicro,微信公众号:先楫半导体HPMicro】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    2014 深圳Maker Faire — WIZnet展出预告

    allows 可使Arduino板连接网络.基于WIZ550io 网络模块,使用 WIZnet W5500 以太网芯片 (
    发表于 04-03 11:06

    第一轮 WIZnet - W5500EVB/模块免费试用测评活动

    格式回复。活动2:WIZ550io (WIZnet官方W5500模块)免费试用申领,3个名额 WIZ550io是一个自动配置网络参数的以太网模块,包含一个W5500以太网
    发表于 04-29 11:20

    WIZnet网络产品如何选型

    的处理器系统要求较高。小编补充:W5500是继W5100、W5200&W5300后,W5***系列新一款全硬件TCP/IP以太网
    发表于 07-09 17:18

    新华龙电子推出最新网络开发板(W5100&W5500方案)

    方案。  软件方面深圳新华龙电子有限公司提供了丰富的代码资源供用户评估。  网络开发板布局:芯片特性:1、W5500全硬件TCP/IP协议栈网络芯片
    发表于 12-17 17:22

    转帖:ArduinoCN-WIZnet网络专区开版有奖征稿活动

    的Arduino联网了吗?Arduino 官方以太网板 网络部分采用了WIZnet 全硬件TCP/IP协议栈芯片W5100,自推出后,得到了众多用户的肯定与支持。而后,众多开源厂商纷纷
    发表于 12-22 16:30

    wiznet芯片客户常见问题的技术问题

    子网中使用,应具备唯一的MAC地址,唯一的IP地址,因为不在同一块网络芯片,IP地址、MAC地址不一样,因此可以设置成一样的端口号。 WIZnet网络
    发表于 03-06 13:55

    野火推出W5500网络扩展模块【例程+教程+视频】

    `` 本帖最后由 Katrina_WIZnet 于 2015-7-28 14:28 编辑 1、W5500 网络扩展模块,SPI接口,ST
    发表于 03-30 11:46

    WIZnet W5500的特点和应用介绍

    低功耗,支持网络唤醒,支持自动协商· 快速SPI接口· 3.3V工作电压,I/O信号口5V耐压;48引脚LQFP无铅封装 目标应用W5500
    发表于 05-05 13:28

    WIZnet相关产品介绍

    ` 本帖最后由 Katrina_WIZnet 于 2015-7-10 15:39 编辑 WIZnet自1998年在韩国创立以来,一致专注研发全硬件TCP/IP协议栈芯片,同时开发设计相关
    发表于 07-10 15:29

    W5100 单片网络接口芯片

    W5100 是一款多功能的单片网络接口芯片,内部集成有 10/100Mbps 以太网控制器,主要应用于高集成、高稳定、高性能和低成本的嵌入式系统中。使用
    发表于 06-20 09:51

    WIZnet软件包对接RT-Thread SAL套接字抽象层实现对BSD Socket APIs的支持

    Apache-2.0 许可,详见 LICENSE 文件。1.3 依赖RT-Thread 4.0.1+SAL 组件netdev 组件SPI 驱动WIZnet 设备使用 SPI 进行数
    发表于 05-17 17:00

    在RT -Thread下怎样去驱动W5500网络芯片

    RT -Thread Studio V2.0.0芯片STM32F407VGT6网络芯片W5500硬件连接第一步,打开SPI设备
    发表于 05-17 17:23

    添加w5500找不到Wiznet chip是什么原因呢?

    添加以太网,spi成功挂载,w5500也挂载上了,自动初始化.c文件也添加了,然后下载显示找不到网络芯片。[E/wiz] Wiznet ch
    发表于 01-10 17:06

    基于SPI总线的医疗仪器网络接口设计

    本文给出了一种基于SPI 总线的医疗仪器网络接口的设计方法。网络接口由PIC 单片机和W5100 网络
    发表于 12-23 17:09 39次下载

    先楫单片机使用SPI驱动网络接口芯片W5xxx(wiznet)

    一、概述本文应用主要是使用SPI驱动wiznet网络接口芯片
    的头像 发表于 11-01 08:18 833次阅读
    先楫单片机使用<b class='flag-5'>SPI</b><b class='flag-5'>驱动</b><b class='flag-5'>网络</b><b class='flag-5'>接口</b><b class='flag-5'>芯片</b><b class='flag-5'>W5xxx</b>(<b class='flag-5'>wiznet</b>)