11
#include <drivers/net/stm32cube_eth.h>
13
void HAL_ETH_MspInit(ETH_HandleTypeDef *heth) {
14
GPIO_InitTypeDef GPIO_InitStructure;
16
/* Enable GPIOs clocks */
17
__HAL_RCC_GPIOA_CLK_ENABLE();
18
__HAL_RCC_GPIOB_CLK_ENABLE();
19
__HAL_RCC_GPIOC_CLK_ENABLE();
21
#if defined(STM32F407xx)
22
__HAL_RCC_GPIOE_CLK_ENABLE();
24
/* Ethernet pins configuration ************************************************/
26
ETH_MDIO --------------> PA2
27
ETH_MDC ---------------> PC1
29
ETH_RMII_REF_CLK-------> PA1
31
ETH_RMII_CRS_DV -------> PA7
32
ETH_MII_RX_ER -------> PB10
33
ETH_RMII_RXD0 -------> PC4
34
ETH_RMII_RXD1 -------> PC5
35
ETH_RMII_TX_EN -------> PB11
36
ETH_RMII_TXD0 -------> PB12
37
ETH_RMII_TXD1 -------> PB13
39
ETH_RST_PIN -------> PE2
41
#elif defined(STM32F429xx)
42
__HAL_RCC_GPIOG_CLK_ENABLE();
44
/* Ethernet pins configuration ************************************************/
46
RMII_REF_CLK ----------------------> PA1
47
RMII_MDIO -------------------------> PA2
48
RMII_MDC --------------------------> PC1
49
RMII_MII_CRS_DV -------------------> PA7
50
RMII_MII_RXD0 ---------------------> PC4
51
RMII_MII_RXD1 ---------------------> PC5
52
RMII_MII_RXER ---------------------> PG2
53
RMII_MII_TX_EN --------------------> PG11
54
RMII_MII_TXD0 ---------------------> PG13
55
RMII_MII_TXD1 ---------------------> PB13
58
#error "don't support platform"
61
/* Configure PA1,PA2 and PA7 */
62
GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7;
63
GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
64
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
65
GPIO_InitStructure.Pull = GPIO_NOPULL;
66
GPIO_InitStructure.Alternate = GPIO_AF11_ETH;
67
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
69
#if defined(STM32F407xx)
70
/* Configure PB10,PB11,PB12 and PB13 */
71
GPIO_InitStructure.Pin = GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13;
72
#elif defined(STM32F429xx)
74
GPIO_InitStructure.Pin = GPIO_PIN_13;
76
HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
78
/* Configure PC1, PC4 and PC5 */
79
GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
80
HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
82
#if defined(STM32F407xx)
83
if (heth->Init.MediaInterface == ETH_MEDIA_INTERFACE_MII) {
84
/* Output HSE clock (25MHz) on MCO pin (PA8) to clock the PHY */
85
HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1);
88
/* Configure the PHY RST pin */
89
GPIO_InitStructure.Pin = GPIO_PIN_2;
90
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
91
GPIO_InitStructure.Pull = GPIO_PULLUP;
92
GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
93
HAL_GPIO_Init(GPIOE, &GPIO_InitStructure);
95
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2, GPIO_PIN_RESET);
97
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2, GPIO_PIN_SET);
99
#elif defined(STM32F429xx)
100
/* Configure PG2, PG11, PG13 and PG14 */
101
GPIO_InitStructure.Pin = GPIO_PIN_2 | GPIO_PIN_11 | GPIO_PIN_13;
102
HAL_GPIO_Init(GPIOG, &GPIO_InitStructure);
105
/* Enable ETHERNET clock */
106
__HAL_RCC_ETH_CLK_ENABLE();