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

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

3天内不再提示

如何利用HAL库去驱动W5500芯片呢

工程师邓生 ? 来源:嵌入式技术开发 ? 作者:Mr张工 ? 2022-09-16 18:04 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

W5500 芯片是一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控制器,为单片机提供了更加简单、快速、稳定、安全的以太网接入方案。采用标准4线SPI接口,理论速率上可以达到 80MHz。

硬件设计

原理图如下,需要注意的是R12~R17几个电阻是模式选择,根据实际需求选择焊接哪些。

58ffed06-3571-11ed-ba43-dac502259ad0.png

芯片采样SPI接口与单片机连接,再加上INT和RST引脚,共占用6个IO,其中INT引脚可以不用,RST一般需要连接。

网口可以使用带网络变压器的接口,或者网络变压器和接口独立的,都可以,这里使用的HR911105A是带网络变压器的。、

软件设计

W5500官方提供了一个完整的驱动库,可以使用户不必太关心底层寄存器的配置,使用起来非常方便。

接下来,使用STM32CubeMx软件初始化配置,主要是SPI配置如下:

594fbde0-3571-11ed-ba43-dac502259ad0.png

配置完成后,生成代码。然后将官方的驱动库添加到工程中。

下载完成后,可以看到,驱动库中包含了W5100、W5200等多个芯片的驱动:

596fccfc-3571-11ed-ba43-dac502259ad0.png

我们只需将W5500文件夹下的.c文件以及socket.c和wizchip_conf.c文件添加到工程中即可。如下:

598ef370-3571-11ed-ba43-dac502259ad0.png

打开wizchip_conf.c文件,可以看到,里面定义了一些SPI片选及读写的函数,但内容都是空的,这些是需要我们自己实现的。我们直接添加如下程序到文件中,实现芯片的复位和参数初始化功能。


pYYBAGMkSwWAH191AAEBFxs1WNg372.jpgpYYBAGMkSw-AS9zgAAFwKgEA0e8246.jpg

其中,W5500_ChipInit初始化函数中注册的SPI相关函数定义如下:

pYYBAGMkSxyAbDkYAADTME3RNII985.jpgpYYBAGMkSzOAVMR6AAAeWD6ULqM888.jpg

添加完成后,直接在主函数中调用W5500_ChipInit();即可完成初始化。初始化完成后,可以实现TCP、UDP等的通讯,以TCP客户端程序为例,程序如下。程序比较简单,就不做详细分析了。

poYBAGMkS1OASYYyAAELPk3YZI8281.jpgpYYBAGMkS1qAeg_DAAAsu5R9GLc523.jpg

另外,官网还有很多其它应用的例程可供参考,非常实用:

59a45300-3571-11ed-ba43-dac502259ad0.png

总结

对于大多数内部没有以太网控制器的单片机来说,W5500是个很不错的选择。即使是带有以太网控制器的单片机,如STM32F407系列,也需要外部的PHY芯片才行,而且占用IO多,还需要移植软件协议栈,软件上更复杂一些。

审核编辑:刘清

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

    关注

    41

    文章

    3686

    浏览量

    131599
  • 以太网控制器

    关注

    0

    文章

    41

    浏览量

    12992
  • W5500
    +关注

    关注

    5

    文章

    45

    浏览量

    18119

原文标题:STM32使用HAL库驱动W5500

文章出处:【微信号:嵌入式技术开发,微信公众号:嵌入式技术开发】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于STM32 HAL与标准的esp8266接入机智云方案(二)

    在《基于STM32HAL与标准的esp8266接入机智云方案(一)》中,我们详细介绍了硬件连接和机智云客户端的创建。本篇将重点讲解如何下载代码、分析下载的代码,并直接使用这些代码连接机智云。同时
    的头像 发表于 05-28 18:02 ?583次阅读
    基于STM32 <b class='flag-5'>HAL</b><b class='flag-5'>库</b>与标准<b class='flag-5'>库</b>的esp8266接入机智云方案(二)

    w5500随机出现接收问题

    我现在用STM32F103CBT6与W5500作为TCP Server,多台PC与服务器连接上后,服务器会实时传输数据到PC上,并且PC随时能通过控制软件发送数据至服务器。但是运行一段时间后,PC上
    发表于 05-15 09:45

    通过注册表和Technitium MAC Address Changer修改MAC地址(支持W5500模块及通用网卡)

    Changer工具(适合小白用户),以W5500以太网模块为例,同时适用于普通网卡。 二、通过注册表修改MAC地址 1. 硬件准备 W5500模块:通过USB转以太网适配器或开发板连接PC。 PC
    的头像 发表于 03-28 09:27 ?2938次阅读
    通过注册表和Technitium MAC Address Changer修改MAC地址(支持<b class='flag-5'>W5500</b>模块及通用网卡)

    通过注册表和Technitium MAC Address Changer修改MAC地址(支持W5500模块及通用网卡)

    Changer工具(适合小白用户),以W5500以太网模块为例,同时适用于普通网卡。 二、通过注册表修改MAC地址 1. 硬件准备 W5500模块:通过USB转以太网适配器或开发板连接PC。 PC
    发表于 03-28 09:18

    使用STM32F103驱动W5500,多台设备接入交换机时,偶发出现有两台设备只要同时都接入后就会互相影响,怎么解决?

    使用STM32F103驱动W5500,单台设备连接电脑网络助手通讯没有问题,多台设备接入交换机的时候,偶发出现有两台设备只要同时都接入后就会互相影响,导致网络数据交互堵塞,丢帧等问题。这两台设备只要
    发表于 03-13 07:05

    W5500+DSP28335通信问题

    我采用W5500芯片+DSP于上位机进行UDP通信 前29次可以正常进行通信,但是当到达30次的时候,W5500开始崩了,其getSn_RX_RSR(0)开始返回60000并且开始无序跳变,才是把
    发表于 01-08 21:53

    HAL在Arduino平台上的使用

    HAL在Arduino平台上的使用 Arduino平台是一个开源的电子原型平台,它包括硬件(基于微控制器的电路板)和软件(Arduino IDE)。Arduino平台因其简单易用而受到广泛欢迎
    的头像 发表于 12-02 14:04 ?1720次阅读

    HAL和标准的区别 HAL与CMSIS的关系

    在嵌入式系统开发中,HAL(硬件抽象层)和标准是两种常用的软件,它们在功能和使用场景上有所不同。 1. 标准 标准
    的头像 发表于 12-02 14:02 ?3390次阅读

    HAL的函数调用示例

    HAL(Hardware Abstraction Layer,硬件抽象层)是STM32等微控制器中常用的,它为开发者提供了访问和控制硬件设备的接口。以下是一些常用的HAL库函数及其
    的头像 发表于 12-02 14:01 ?1700次阅读

    HAL在STM32开发中的重要性

    HAL(Hardware Abstraction Layer Library,硬件抽象层)在STM32开发中扮演着至关重要的角色。以下是HAL
    的头像 发表于 12-02 13:35 ?1401次阅读

    如何快速入门HAL编程 HAL与裸机编程的比较

    如何快速入门HAL编程 要快速入门HAL编程,可以遵循以下步骤: 了解基础知识 : 掌握C语言编程基础,包括变量、数据类型、函数、指针等。 了解嵌入式系统的基本概念,如微控制器、中
    的头像 发表于 12-02 11:39 ?1215次阅读

    HAL在嵌入式系统中的应用

    HAL(Hardware Abstraction Layer Library,硬件抽象层)在嵌入式系统中扮演着至关重要的角色。以下是HAL
    的头像 发表于 12-02 11:32 ?2260次阅读

    w5500 作为tcp server,客户端异常发送【RST,ACK】断开连接问题

    测试1 w5500 作为tcp server,上位机labveiw程序作为clinet,正常第二次交互结束后,客户端发送一个【RST,ACK】报文断开了连接; (1)使用wireshark抓取
    发表于 10-14 14:01

    使用wiznet+w5500,打印显示spi与5500通讯成功,但是shell无法输入,为什么?

    使用wiznet+w5500,打印显示spi与5500通讯成功,但是shell无法输入,插拔网线能显示link up或者down, main函数的循环打印也可以显示,请问会是什么原因~~
    发表于 09-26 07:09

    第12章-ADC采集电压和显示 基于STM32的ADC—电压采集(详细讲解+HAL

    第12章-ADC采集电压和显示 基于STM32的ADC—电压采集(详细讲解+HAL
    的头像 发表于 08-21 16:31 ?5441次阅读
    第12章-ADC采集电压和显示 基于STM32的ADC—电压采集(详细讲解+<b class='flag-5'>HAL</b><b class='flag-5'>库</b>)