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

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

3天内不再提示

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

先楫半导体HPMicro 2023-11-01 08:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、概述

本文应用主要是使用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作为本文测试芯片。

本文例子仓库分支地址:

https://github.com/RCSN/hpm_sdk_extra/tree/feature/add_spi_drive_wizchip_w5xxx_sample/spi_drive_wizchip_w5xxx


265194e4-784c-11ee-9788-92fbcf53809c.png

二、流程


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

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

wiznet的ioLibrary_Driver仓库地址:

https://github.com/Wiznet/ioLibrary_Driver

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

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

265bbd0c-784c-11ee-9788-92fbcf53809c.png

1、芯片读写操作层加入

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

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

26663494-784c-11ee-9788-92fbcf53809c.png

2、Ethernet文件加入

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

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

267a5848-784c-11ee-9788-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需要的相关文件和头文件

2689c3f0-784c-11ee-9788-92fbcf53809c.png

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

2695932e-784c-11ee-9788-92fbcf53809c.png

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

26a7236e-784c-11ee-9788-92fbcf53809c.png

如此编译也Ok

26b2a9fa-784c-11ee-9788-92fbcf53809c.png


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

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

26c2e752-784c-11ee-9788-92fbcf53809c.png

26cd3b4e-784c-11ee-9788-92fbcf53809c.png

1、临界区注册

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

26d889e0-784c-11ee-9788-92fbcf53809c.png

2、CS片选信号操作注册

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

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

26e34808-784c-11ee-9788-92fbcf53809c.png

3、读写单字节操作注册

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

26ed7f94-784c-11ee-9788-92fbcf53809c.png

4、块读写传输操作注册

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

5、注册相关操作接口

2703338e-784c-11ee-9788-92fbcf53809c.png


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

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

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

27105ec4-784c-11ee-9788-92fbcf53809c.png

271eaf42-784c-11ee-9788-92fbcf53809c.png

2733fa8c-784c-11ee-9788-92fbcf53809c.png

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

273ee1e0-784c-11ee-9788-92fbcf53809c.png

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

2756005a-784c-11ee-9788-92fbcf53809c.png

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

27620d6e-784c-11ee-9788-92fbcf53809c.png

276d6830-784c-11ee-9788-92fbcf53809c.png

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


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

27852790-784c-11ee-9788-92fbcf53809c.png

27905f70-784c-11ee-9788-92fbcf53809c.png

三、总结

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


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


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

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

    关注

    462

    文章

    53550

    浏览量

    459264
  • 单片机
    +关注

    关注

    6074

    文章

    45341

    浏览量

    663690
  • 网络
    +关注

    关注

    14

    文章

    8134

    浏览量

    93099
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1866

    浏览量

    99844
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    国产芯片赋能机器人创新 | 半导体亮相ROSCon China 2025

    机器人技术前沿趋势与实践突破。上海半导体科技有限公司(半导体,HPMicro)作为机器人领域国产核心芯片及嵌入式解决方案提供商,携其
    的头像 发表于 11-03 12:07 637次阅读
    国产<b class='flag-5'>芯片</b>赋能机器人创新 | <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体亮相ROSCon China 2025

    半导体完成B+轮融资,中移和创投资加持

    创投集团与张江科投、张科垚坤、元禾控股和雷赛智能等知名机构和上市公司。企业表示本轮融资将重点投向机器人应用领域的芯片研发及解决方案的规模化应用,积极投入机器人
    的头像 发表于 09-11 08:32 1177次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体完成B+轮融资,中移和创投资加持

    半导体获浦东产业基金战略投资,深入布局机器人赛道创“芯”领域

    2025年9月5日,上海浦东新区|国产高性能微控制器产品及嵌入式解决方案提供商“上海半导体科技有限公司”(半导体,HPMicro)宣
    的头像 发表于 09-05 08:33 1815次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体获浦东产业基金战略投资,深入布局机器人赛道创“芯”领域

    单片机怎么驱动电机?

    在各类自动化设备和智能装置中,电机是重要的执行部件,而单片机作为控制核心,需要通过特定的方式驱动电机运转。单片机驱动电机并非直接连接即可,而是要根据电机类型和功率,搭配合适的
    的头像 发表于 07-25 09:31 444次阅读

    国产“HPM芯”赋能机器人关节,半导体亮相松山湖IC创新论坛

    。高性能微控制器产品及嵌入式解决方案提供商“上海半导体科技有限公司”(半导体,HPMicro)受邀参会,设立专题展台并进行了主题为《
    的头像 发表于 05-14 15:53 1154次阅读
    国产“HPM芯”赋能机器人关节,<b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体亮相松山湖IC创新论坛

    半导体HPM6E8Y:实时控制芯片驱动的机器人关节“芯”时代

    及产品总监费振东带来了一款实时控制芯片驱动——HPM6E8Y。     据费振东介绍,半导体HPM6E8Y系列高性能MCU芯片为机器人关
    发表于 05-13 11:50 1602次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体HPM6E8Y:<b class='flag-5'>先</b><b class='flag-5'>楫</b>实时控制<b class='flag-5'>芯片</b><b class='flag-5'>驱动</b>的机器人关节“芯”时代

    即刻启程,踏上W55MH32高性能以太网单片机学习之路!

    即刻启程,踏上W55MH32高性能以太网单片机学习之路!即刻开启W55MH32学习之旅!本教系列程配套官方手册与W55MH32L开发板,从外设功能框图解析到代码实操,助你掌握高性能以太
    的头像 发表于 05-07 18:51 838次阅读
    即刻启程,踏上<b class='flag-5'>W</b>55MH32高性能以太网<b class='flag-5'>单片机</b>学习之路!

    WIZnet高性能以太网单片机W55MH32重磅发布!

    WIZnet高性能以太网单片机W55MH32重磅发布!本文详细解析了W55MH32芯片的高性能网络
    的头像 发表于 05-07 16:17 1220次阅读
    <b class='flag-5'>WIZnet</b>高性能以太网<b class='flag-5'>单片机</b><b class='flag-5'>W</b>55MH32重磅发布!

    【强势上新】HPM5E00:EtherCAT运动控制MCU,半导体再拓工业总线产品新版图

    2025年5月6日上海|高性能微控制器及嵌入式解决方案提供商“上海半导体科技有限公司”(半导体,HPMicro)正式发布新一代Eth
    的头像 发表于 05-06 11:09 981次阅读
    【强势上新】HPM<b class='flag-5'>5</b>E00:EtherCAT运动控制MCU,<b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体再拓工业总线产品新版图

    STM32F10xxx单片机编程手册

    电子发烧友网站提供《STM32F10xxx单片机编程手册.pdf》资料免费下载
    发表于 04-14 14:56 17次下载

    用msp430f247单片机SPI接口驱动ADS1298芯片,读出的寄存器值不正确,是哪里的问题?

    我用msp430f247单片机SPI接口驱动ADS1298芯片,CLK选择内部2.048MHZ晶振,SCLK选择16MHZ的
    发表于 02-14 06:12

    请问ADS1247和单片机接口最少可以用几根线完成?

    我最近要使用到AD1247,通过SPI接口单片机接口,由于单片机IO数量的限制以及隔离芯片
    发表于 02-13 07:22

    半导体HPM_SDK v1.8.0 发布

    半导体HPM_SDK v1.8.0 发布
    的头像 发表于 02-08 13:39 1019次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体HPM_SDK v1.8.0 发布

    什么是单片机的ADC接口

    ,简称ADC)接口单片机中不可或缺的一部分,它负责将模拟信号转换为数字信号,使得单片机能够处理来自传感器、仪表等模拟世界的信号。本文将深入探讨单片机的ADC
    的头像 发表于 02-03 11:27 3743次阅读

    单片机I/O接口的传输方式

    单片机(Microcontroller Unit,MCU)作为嵌入式系统的核心部件,其输入输出(Input/Output,I/O)接口是实现与外部设备数据交换的关键。I/O接口不仅承担
    的头像 发表于 02-02 15:56 1656次阅读