基本信息
文件名称:STMicroelectronics 系列:STM32F4 系列 (高性能)_(11).STM32F4系列的以太网通信.docx
文件大小:24.71 KB
总页数:26 页
更新时间:2025-06-24
总字数:约1.93万字
文档摘要

PAGE1

PAGE1

STM32F4系列的以太网通信

以太网控制器概述

STM32F4系列微控制器集成了一个以太网控制器,该控制器支持10/100Mbps的以太网通信。以太网控制器通过硬件实现以太网协议栈的低层功能,包括MAC(媒体访问控制)层和PHY(物理层)接口。此外,STM32F4还提供了一个DMA(直接内存访问)控制器,用于高效地传输数据。

以太网控制器的主要功能

MAC层:实现以太网协议的媒体访问控制功能,包括帧的接收和发送、地址过滤、CRC生成和校验等。

PHY接口:通过MII(介质独立接口)或RMII(简化介质独立接口)与外部PHY芯片通信,实现物理层的数据传输。

DMA控制器:通过DMA传输数据,减轻CPU的负担,提高数据传输效率。

硬件过滤:支持单播、多播和广播地址的过滤,减少不必要的数据处理。

时间戳功能:支持精确的时间戳功能,用于网络时间协议(NTP)等应用。

唤醒功能:支持通过以太网唤醒MCU,适用于低功耗应用。

以太网通信的硬件配置

外部PHY芯片的连接

STM32F4系列微控制器通常通过RMII接口与外部PHY芯片连接。RMII接口使用较少的引脚,适合成本敏感的应用。以下是RMII接口的引脚配置:

STM32F4引脚|功能|连接到PHY芯片引脚|

|————–|——————|——————|

PA1|RMII_REF_CLK|RMII_REF_CLK|

PA2|RMII_MDIO|RMII_MDIO|

PA3|RMII_MDC|RMII_MDC|

PA7|RMII_CRS|RMII_CRS|

PB11|RMII_TXD1|RMII_TXD1|

PG11|RMII_TXD0|RMII_TXD0|

PG13|RMII_TXEN|RMII_TXEN|

PG14|RMII_RXD0|RMII_RXD0|

PG15|RMII_RXD1|RMII_RXD1|

PD8|RMII_RXER|RMII_RXER|

电源和时钟配置

电源:确保STM32F4和外部PHY芯片的电源供应稳定,通常需要5V和3.3V电源。

时钟:以太网控制器需要一个50MHz的时钟信号,通常通过外部晶振或内部时钟源提供。

初始化步骤

启用以太网控制器的时钟:通过RCC(复位和时钟控制)模块启用以太网控制器的时钟。

配置以太网引脚:使用GPIO(通用输入输出)模块配置RMII接口的引脚。

初始化以太网控制器:配置MAC和DMA控制器的参数,初始化以太网控制器。

配置外部PHY芯片:通过MDIO接口配置外部PHY芯片,确保其正常工作。

以太网通信的软件配置

配置以太网控制器

启用时钟

在初始化以太网控制器之前,需要先启用其时钟。以下代码示例展示了如何通过RCC模块启用以太网控制器的时钟:

//启用以太网控制器的时钟

voidETH_InitClock(void){

//使能以太网和以太网MAC时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_ETH_MAC,ENABLE);

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_ETH_MAC|RCC_AHB1Periph_ETH_TX|RCC_AHB1Periph_ETH_RX,ENABLE);

}

配置引脚

使用GPIO模块配置RMII接口的引脚。以下代码示例展示了如何配置RMII接口的引脚:

//配置RMII接口的引脚

voidETH_InitGPIO(void){

GPIO_InitTypeDefGPIO_InitStructure;

//配置PA1(RMII_REF_CLK)

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;

GPIO_Init(GPIOA,GPIO_InitStructure);

GPIO_PinA