STM32H743移植Lwip网络协议栈,实现网络通信功能

ywqaxiwangSTM32 2023-12-07 17:13:24 2554阅读 举报

前段时间,项目中用到 STM32H743 的网络通信功能,一开始遇到不少问题,在网上查找了相关的教程,发现遇到此问题的还不在少数。现总结一下最简单的方法移植Lwip网络协议栈实现 STM32H743 的网络通信功能。

一、开发平台

  • 开发环境:MDK5.30
  • 移植驱动:STM32Cube_FW_H7_V1.9.0
  • 硬件平台:STM32H743VITX + LAN8742

二、开发流程

目前,是在 STM32Cube_FW_H7_V1.9.0 的基础上应用 NUCLEO-H743ZI 的 Lwip 例程,主要有一处修改项,就是网络相关管脚的分配。也就是说如果自己的开发硬件和 NUCLEO-H743ZI 的硬件在网络相关管脚分配不一致时,需要修改成自己的。如下代码所示。

/* Ethernet pins configuration ************************************************/
  /*
        RMII_REF_CLK ----------------------> PA1
        RMII_MDIO -------------------------> PA2
        RMII_MDC --------------------------> PC1
        RMII_MII_CRS_DV -------------------> PA7
        RMII_MII_RXD0 ---------------------> PC4
        RMII_MII_RXD1 ---------------------> PC5
        RMII_MII_RXER ---------------------> PG2
        RMII_MII_TX_EN --------------------> PG11
        RMII_MII_TXD0 ---------------------> PG13
        RMII_MII_TXD1 ---------------------> PB13
  */
  /* Configure PA1, PA2 and PA7 */
  GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
  GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
  GPIO_InitStructure.Pull = GPIO_NOPULL; 
  GPIO_InitStructure.Alternate = GPIO_AF11_ETH;
  GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  /* Configure PB13 */
  GPIO_InitStructure.Pin = GPIO_PIN_11;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
  
  /* Configure PC1, PC4 and PC5 */
  GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
  /* Configure PG2, PG11, PG13 and PG14 */
  GPIO_InitStructure.Pin =  GPIO_PIN_13 | GPIO_PIN_14;
  HAL_GPIO_Init(GPIOG, &GPIO_InitStructure);  

除此之外,也要注意 LAN8742 的复位引脚的设置。例如,正点原子的开发板对 LAN8742 复位引脚的处理就是通过另一个芯片实现的,所以这一点要注意。

三、STM32H743 网络通信验证

修改完上述代码之后,编译下载,插上网线,并确保电脑的 IP 地址与 STM32H743 的 IP 处于同一局域网中,然后在命令窗口中查看局域网中的 IP 地址,可以看到 STM32H743 的 IP,并通过 ping 命令,也可以 ping 通,如下图所示。

STM32H743移植Lwip网络协议栈,实现网络通信功能
图 1 查看 STM32H743 的 IP 地址并发出 ping 命令

另外,在浏览器中打开 STM32H743 的 IP 地址,就可以看到如下界面了。

STM32H743移植Lwip网络协议栈,实现网络通信功能
图 2 查看 STM32H743 的 IP 地址以获取网页信息

可以看出,STM32H743 的网络通信验证成功。

其实这里除了移植 Lwip 外,还移植了 RTOS 嵌入式操作系统,详细的代码分析,后续介绍。

另外,在 STM32CubeMX 中创建网络通信功能的实验,后续再作补充。


版权声明:
作者:ywqaxiwang
链接:https://www.dianziwang.net/p/1193d565cdfb22.html
来源:STM32
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以点击 “举报”


登录 后发表评论
0条评论
还没有人评论过~