embox

Форк
0
/
stm32f4cube_eth_msp.c 
107 строк · 3.0 Кб
1
/**
2
 * @file
3
 * @brief
4
 *
5
 * @author  Anton Kozlov
6
 * @date    07.08.2014
7
 */
8

9
#include <util/log.h>
10

11
#include <drivers/net/stm32cube_eth.h>
12

13
void HAL_ETH_MspInit(ETH_HandleTypeDef *heth) {
14
	GPIO_InitTypeDef GPIO_InitStructure;
15

16
	/* Enable GPIOs clocks */
17
	__HAL_RCC_GPIOA_CLK_ENABLE();
18
	__HAL_RCC_GPIOB_CLK_ENABLE();
19
	__HAL_RCC_GPIOC_CLK_ENABLE();
20

21
#if defined(STM32F407xx)
22
	__HAL_RCC_GPIOE_CLK_ENABLE();
23

24
	/* Ethernet pins configuration ************************************************/
25
	/*
26
	 ETH_MDIO --------------> PA2
27
	 ETH_MDC ---------------> PC1
28

29
	 ETH_RMII_REF_CLK-------> PA1
30

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
38

39
	 ETH_RST_PIN     -------> PE2
40
	 */
41
#elif defined(STM32F429xx)
42
	__HAL_RCC_GPIOG_CLK_ENABLE();
43

44
/* Ethernet pins configuration ************************************************/
45
	/*
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
56
	 */
57
#else
58
#error "don't support platform"
59
#endif
60

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);
68

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)
73
	/* Configure PB13 */
74
	GPIO_InitStructure.Pin = GPIO_PIN_13;
75
#endif
76
	HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
77

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);
81

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);
86
	}
87

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);
94

95
	HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2, GPIO_PIN_RESET);
96
	HAL_Delay(1);
97
	HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2, GPIO_PIN_SET);
98
	HAL_Delay(1);
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);
103
#endif
104

105
	/* Enable ETHERNET clock  */
106
	__HAL_RCC_ETH_CLK_ENABLE();
107
}
108

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.