STM32CubeMx + LWIP(实现TCP/UDP组播/MQTT/热插拔)系列 一 ----- CubeMx配置

时间:2024-03-14 15:33:25

本配置是我在实际项目中的配置。具体:MCU是STM32F107,PHY为DP83848,接口为RMII。若使用其他芯片,只可作为参考。

时钟配置

DP83848使用的时钟来源为MCU提供。DP83848可支持10M/100M的线速。由于RMII为双线,所以MCO应输出50MHZ。

STM32CubeMx + LWIP(实现TCP/UDP组播/MQTT/热插拔)系列 一 ----- CubeMx配置

STM32F107对外输出时钟引脚为PA8,

STM32CubeMx + LWIP(实现TCP/UDP组播/MQTT/热插拔)系列 一 ----- CubeMx配置

在RCC中需要选择Master Clock Output输出时钟频率,然后将PA8的引脚输出速度为High,默认的low不足以支撑PHY所需要的频率。

外部晶振使用的为25MHZ,时钟树如下图:

STM32CubeMx + LWIP(实现TCP/UDP组播/MQTT/热插拔)系列 一 ----- CubeMx配置

设置MCO为50MHZ,SYSCLK为72MHZ。

ETH设置

直接使能的默认设置即可,PHY需要选择DP83848_PHY_ADDRESS,地址一般为1。若不确定,请参考本文章。ETH中断我没有使用,如果你想使用的话,请自行勾选。

STM32CubeMx + LWIP(实现TCP/UDP组播/MQTT/热插拔)系列 一 ----- CubeMx配置

LWIP配置

这里的lwip配置实际上是没有改变lwip源文件的,只是cube生成lwipopts.h和ethernetif.c等时的文件有所不同。可根据你的需求进行更改。只是lwip的版本较老,没有支持到lwip2.1.0以后的版本,但是自己可以去官网下载,或者直接点该链接进行下载(如果 积分较多或者可以免费下载的话)。

这里主要说以下配置:

STM32CubeMx + LWIP(实现TCP/UDP组播/MQTT/热插拔)系列 一 ----- CubeMx配置

这里对组播进行使能,这里勾选之后,才能勾选下面这个配置:

STM32CubeMx + LWIP(实现TCP/UDP组播/MQTT/热插拔)系列 一 ----- CubeMx配置

热插拔实现函数ethernetif_set_link()需要选择以下Cube才会生成:

STM32CubeMx + LWIP(实现TCP/UDP组播/MQTT/热插拔)系列 一 ----- CubeMx配置

这里基本上在cubemx上的配置已经差不多写完了。其他的可以根据自己的需求自己进行定义。需要注意的是市面上广泛使用 的F103系列芯片并没有ETH接口,自然也不能使用lwip了。