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多,还需要移植软件协议栈,软件上更复杂一些。

审核编辑:刘清

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

    关注

    40

    文章

    3436

    浏览量

    128229
  • 以太网控制器

    关注

    0

    文章

    37

    浏览量

    12560
  • W5500
    +关注

    关注

    5

    文章

    45

    浏览量

    17254

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

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

收藏 人收藏

    评论

    相关推荐

    fpga控制w5500,发不了广播怎么回事

    请问我现在用fpga控制w5500,能ping通,socket也打开了,能往我电脑发udp包,但是把目标IP地址改成255.255.255.255时想发广播就发不出来,请问怎么排查
    发表于 04-25 10:06

    w5500双网口方案如何实现

    (不想单独在外面增加一个交换机),所以我考虑内置IP175G芯片,但很疑惑W5500和IP175G之间怎么连接,是W5500----网络变压器----IP175G,还是
    发表于 03-12 21:08

    请教W5500故障问题

    W5500工作一段时间(有可能是几分钟,也可能是几个小时)后,会出现如下问题。1.不能接收数据。接收状态位不能置1;2.可以接收数据,但是不能发送数据(网络调试助手没有接收到数据). W5500工作于UDP模式,与PC直接连接。 请问有哪些原因导致这种问题产生?
    发表于 12-13 11:47

    W5500通讯口掉线是什么原因造成的?

    用单片机驱动w5500跟继电器 继电器控制交流电磁阀在继电器吸合的时候发现w5500会掉线 不控制时不会掉线 起初以为是继电器干扰的 后来把继电器控制部分去掉后 还是会掉线 现在找不到原因了
    发表于 11-08 06:40

    请问W5500芯片是否支持IEEE1588?

    请问W5500芯片是否支持IEEE1588,如果支持的话是否可以提供一段代码参考。显示全部
    发表于 11-03 06:04

    2个w5500以太网接口互联无法获取MAC地址怎么解决?

    目前项目中用到两个W5500通过以太网接口直接互联,或通过交换机互联,在采用TCP或UDP数据发送前,W5500需要通过ARP协议询问对方W5500的MAC地址,询问的ARP协议两个W5500
    发表于 10-30 07:20

    LAN8720和W5500应用上的区别是什么?

    LAN8720代表一种以太网芯片,配合带MAC的单片机完成网络通信需求,需要移植个LWIP W5500是都有,单片机只要通过SPI驱动就行了。应用上,两者速度有区别吗。 看到很多核心板都说支持一路
    发表于 10-27 06:52

    有用过W5500做标准Socket接口函数的吗?

    有用过W5500做标准Socket接口函数的吗?官方历程中没有bind()shutdown()selece()等函数
    发表于 10-26 07:17

    W5500初始化与读写控制流程图分享

    包括必备的W5500流程图。
    发表于 10-09 08:48

    GD32与W5500的区别

    GD32与W5500的区别 GD32和W5500是两款不同的产品,分别属于不同领域的芯片。GD32是一款32位微处理器,而W5500则是一款完整的以太网控制器,它们在用途上有着明显的区
    的头像 发表于 08-16 11:33 678次阅读

    硬件SPI驱动W5500网口

    我有一块STM32F303板子,用它驱动SPI接口W5500网口,硬件SPI. 现在TCP服务器,UDP都好了,就差TCP客户端了。以前用其他单片机写这个程序 服务器搞好了: S0_Mode
    发表于 06-12 20:21

    STM32L4R5硬件SPI驱动W5500网口的问题

    我用STM32F303硬件SPI驱动W5500网口好了,TCP服务器好了,UDP好了,只有TCP客户端不行。 这次我用STM32L4R5硬件SPI驱动W5500网口,TCP服务器模式。
    发表于 06-07 16:46

    W5500可以拼通·但读写·寄存器不对

    SPI接口的网口W5500可以拼通,但是读写寄存器不对。 请问高手,可能是什么原因?谢谢!
    发表于 05-25 22:28

    如何使用便宜的W5500以太网板作为MQTT网关?

    的 ESP-Now 演示,ESP8266 驱动 W5500通过 SPI 板(加上一个额外的引脚来控制 W5500 复位)。多个(电池供电)传感器节点定期连接到网关,传输数据包。然后,ESP8266 通过有线以太网接口
    发表于 05-22 07:32

    硬件SPI驱动W5500的问题

    搞了好长时间,一直没搞好。 这个SPI接口的W5500模块有例程,STM32F103C8T6,可以正常通信。 我现在用STM32F303ZET6搞。 用的SPI1,PA4,PA5,PA6
    发表于 05-19 17:26