STM32H723+Lwip+ETH+CUBE 完整配置(排了巨多坑!)

这篇具有很好参考价值的文章主要介绍了STM32H723+Lwip+ETH+CUBE 完整配置(排了巨多坑!)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

因为H723ZET6是ST目前最新的芯片,对于这个芯片的LWIP配置,官方库极其不友好,而且贼多BUG,踩了好久的坑,历经诸多苦难,终于能够正常PING通和进行TCP/UDP通讯了。而且在国内基本上找不到H723ZET6的LWIP配置教程,所以必须记录一下。
开发环境:
适用CUBE版本:STM32CubeIDE 1.9.0 及以上
stm32芯片型号:H723ZET6

一、配置部分

(一)常规配置,RCC和SYS

RCC启用外部高速时钟

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络
stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

(二)串口

串口的配置和代码实现本文不加以说明

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

(三)ETH配置

MAC随意,不必和图中一样

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

(四)LWIP(重点来了)

首先是LWIP的常规配置,设置IP,其他默认。

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

排坑一:H723系列不同于H7系列,官方库默认配置是0x30044000,我相信有不少朋友试过:代码编译正常,烧录正常,但是代码一执行就进入Handler。这是因为H723的内存不同于其他H7系列。H723的RAM_D2的地址范围是0x30000000~0x30008000,而其他的H7空间比这个大得多。

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

然后注意LWIP_NETIF_LINK_CALLBACK(检测网线插拔的)要使能就行,其他配置默认

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

排坑二:你实际用的PHY不一定是LAN8742,但官方配置就是默认且必须选择LAN8742,恶心死我了,所以到时要去修改它源码的PHY地址,后面会说到在哪里改。

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

然后这里也默认就行

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

(五)PHY的复位引脚配置

我看很多教程都没详细写这一步,经常不知道这个复位是哪来的,实际上是必要的,除非硬件上设置了自动复位。设置一个引脚为输出模式,常态高电平。(具体哪个是复位引脚要看你们自己的硬件设计)

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

并且常态设置为高电平

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

(六)MPU配置(巨坑来了)

排坑三:H7系列的芯片想用LWIP必须配置MPU,而H723的配置与其他H7系列又有些不同,但哪里不同不需要管了,按我下面配置就完事

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

就这两个

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

(七)时钟树配置

这个没啥好说的,常规操作。

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

(八)生成代码

这里可以改大点

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

然后勾选划分模块

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

保存后就可以生成代码了。后面来到代码部分:

二、代码部分

(一)main函数的修改

使能D2SRAM1时钟:

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

后面再加上这几行,清空DVache和PHY复位

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

当然还有MX_LWIP_Process(),加在循环里面

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

(二) 修改phy地址

因为我用的phy地址是0x1,所以需要修改才能用,在这里修改:

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

找到函数LAN8742_Init(lan8742_Object_t *pObj)
在这个位置,强行修改phy的地址为0x1,恶心的官方库,很不好的是如果重新配置了ioc生成代码,又要重新在这里添加修改

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

(三)修改ld文件(巨坑)
很多人都不知道要改这里,少了这里不管怎么样配置都无法正常使用以太网,巨恶心,就是这个文件:

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

拉到最下面的这个位置,添加以下代码(目的是将lwip的内存放进RAM_D2里面):

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络

到这里,所有的配置就完成了,可以编译烧录,尝试ping网络:

stm32h723 iwip +tcpcilent,STM32,stm32,单片机,嵌入式硬件,网络文章来源地址https://www.toymoban.com/news/detail-788761.html

搞定。

到了这里,关于STM32H723+Lwip+ETH+CUBE 完整配置(排了巨多坑!)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32H743使用CubeMX配置Lwip、Freertos

    硬件:野火挑战者开发板STM32H743IIT6 软件版本: CubeMX 6.7.0 STM32CubeH7 Firmware Package V1.11.0 / 04-Nov-2022 原理图: 时钟树参数仅供参考 MPU配置需要查相关资料,一知半解 修改GPIO与硬件原理图对应,串口参数默认 参数配置与硬件对应 此处网络收发地址非常重要!!! 使能中断 串口

    2024年02月07日
    浏览(53)
  • CubeMX配置ETH+LWIP+FreeRTOS+AC6编译新手详细教程

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 最近在做的项目需要用到TCP通信,在使用cubemx配置lwip这一块也踩了不少坑,折腾了不少的时间才ping通并通信上了,故写下这篇新手教程,希望对各位嵌入式的同学们有所帮助!! 我是用的cubemx版本 6

    2024年02月12日
    浏览(37)
  • 【LWIP】stm32用CubeMX(6.4版)配置LwIP+Ping+TCPclient+TCPserver发送信息到PC(操作部分)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 这是我写的第一篇博客,欢迎大家给点鼓励和提出建议! 本人由于理想和爱好,辞去土木工作,于不到一个月前入职某科技公司开始从事嵌入式,专业能力和刚毕业的大学生一样都是很薄弱的。然后被

    2024年02月03日
    浏览(30)
  • 【物联网学习笔记】CubeMx+STM32F407ZGT6+LWIP最最最基础配置

    使用正点原子探索者开发板 板载芯片:STM32F407ZGT6 PHY芯片:LAN8720 LWIP版本:2.1.2 本次目标:先ping通开发板再说! 修订: · 2024.4.23经评论区反馈又重新下载6.10版本CubeMX,发现确实没有Advanced Parameters,目前使用6.6.1存在,如有需要可以改成这个版本。 更改引脚 在ethernetif.c中找

    2024年04月27日
    浏览(70)
  • 【通过STM32CubeMx配置LWIP+FreeRTOS并通过Socket实现TCP_Client/Sever】

    测试平台 → Nucleo_F429ZI 软件工具 → STM32CubeMx 6.6.1 MDK 5.3.0 网络调试助手V1.2 在CubeMx上面选择NUCLEO-F429ZI开发板,并采用默认配置 使能FreeRTOS 修改defaultTask的栈大小 由于使用了FreeRTOS,因此系统的TimeBase Source修改成TIM1 使能LWIP,并且先禁用DHCP,设置好静态IP Platform选择LAN8742 修改

    2024年02月08日
    浏览(43)
  • STM32FreeRTOS任务通知(STM32cube高效开发)

    1、任务通知可模拟队列和信号量 任务通知是FreeRTOS另外一种进程间通信技术。不需要创建任何中间对象,可以直接从任务向任务或ISR向任务发送通知,传递一个通知值任务通知可以模拟二值信号量、计数信号量、或长度为1的消息队列,使用任务通知,一般效率更高,消耗内

    2024年03月13日
    浏览(47)
  • 【STM32Cube开发记录】1-下载和安装STM32CubeIDE

    【STM32Cube开发记录】1-下载和安装STM32CubeIDE 【STM32Cube开发记录】2-STM32CubeProgrammer的使用 【STM32Cube开发记录】3-STM32CubeMX的使用 【STM32Cube开发记录】4-标准库 HAL库 LL库 【STM32Cube开发记录】5-寄存器和存储器映射 【STM32Cube开发记录】6-STM32核心功能 【STM32Cube开发记录】7-Debug调试功

    2024年01月17日
    浏览(43)
  • 1、STM32CubeMX和STM32Cube库(HAL)详细介绍

    目录 前言 STM32Cube生态 STM32Cube 是什么?         STM32Cube 软件工具套件 STM32Cube Embedded 软件 STM32CubeMX ​编辑         也许大家在学习正点原子或者其他32视频和代码的时候都听过HAL库,是的这是ST官方最新的函数库,而以前的标准库已不再更新与发展。而跟随而来的就是

    2024年02月03日
    浏览(59)
  • STM32Cube HW-493激光发射

    文章代码使用 HAL 库。 HW-493激光模块 是一种小型化的激光发射模块,其主要特点是体积小、功耗低、精度高、可靠性强。它采用了半导体激光器作为光源,搭配高精度光学透镜,可以发射出稳定、准确、高亮度的激光光束。 VCC : +5 V 电压。(电源电压范围为 3.5V-5.5V,过高或

    2024年02月12日
    浏览(39)
  • STM32CubeIDE开发(三十一), stm32人工智能开发应用实践(Cube.AI).篇一

    目录 一、cube.AI简介及cubeIDE集成        1.1 cube.AI介绍        1.2 cube.AI与cubeIDE集成与安装         1.3 cube.AI支持硬件平台         1.4 cube.AI应用的好处  二、FP-AI-SENSING1        2.1 FP-AI-SENSING1简介           2.2 FP-AI-SENSING1软件包支持硬件平台 三、FP-AI-SENSING1部署        

    2024年01月22日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包