在网上搜索了STM32H745I-DISCO的LWIP例程,一直没有搜到,听说使用CubeMx可以生成LWIP,虽说对这种自动生成代码的工具,有一种抵触情绪,没有什么更好办法找到网络方面的例程,自动生成不妨一试。满怀期待,安装好CubeMx后,新建工程,没想到可以直接选择STM32H745I-DISCO生成驱动,这样省了很多配置引脚、外设等功能的时间。
经过从网上搜索CubeMx生成LWIP的教程,配置ETH、LWIP、MPU、LAN8742等,按照步骤生成代码,最后下载到开发板中,程序能够运行,但是不知为什么无法ping通,通过抓取网络上的报文,程序初始化运行后,仅发送了一帧ARP请求帧。网络上报文,就是无法接收到。
尝试读取LAN8742的驱动寄存器,识别和设置没有发现问题,开发板使用的是LAN8740,寄存器基本是一样的,配置也一样,问题不应在这里。通过使用LAN8740芯片内部的LOOPBACK模式,发现还是无法接收数据。
到这里,开始怀疑是生成的代码驱动配置有可能不太对,不能怀疑CubeMx不行,再智能的软件,也需要软件配置项填写正确。这已经耗费了几个晚上的时间了,不能再这样调下去了,必须加快进度。
转变思路,在STM32Cube_FW_H7_V1.10.0中找到和开发板STM32H745I-DISCO最接近的LWIP例程进行移植,STM32H743I-EVAL中有LWIP的例子。
将STM32H743I-EVAL开发板下的LWIP例程文件夹,拷贝到STM32H745I-DISCO目录的类似位置,选择一个工程,这里需要用到的,可能就是LwIP_TCP_Echo_Server,IAR打开工程,然后更改器件、工程包含的stm32h745xx.h文件、供电方式PWR_DIRECT_SMPS_SUPPLY等,把RMII接口更改为MII,并把CubeMx生成工程中对ETH引脚配置替换到例程中。
准备就绪后,工程编译通过,下载后,ping通,PC建立TCP客户端,连接成功,发送数据,接收到同样的数据,LWIP运行成功。
这基本是对LWIP一个调试过程,记录下来。更重要的是把代码上传。
引用: Jacktang 发表于 2022-7-12 07:13 有时网上随便搜到的都是碎片不系统,容易走到坑里 谢谢把STM32H743I-EVAL开发板下的LWIP,调试过程,记 ...
坑走多了,对自己也是一个提升