cancel
Showing results for 
Search instead for 
Did you mean: 

RMII GPIO state after HAL_ETH_Init()

DWeb_2
Associate III

Hi,

we have a PHY with several bootstraps. Some of them are shared with the RMII from a STM32H753 (see image below, controller is on the left).

0693W00000Hred2QAB.pngA FreeRTOS+TCP network stack is used, which, when rebooted, first does some low level inits with HAL_ETH_Init(), an then resets the PHY (to do some other configs).

My concern is the following: What happens to the RMII responsible GPIOs (like RMII_CRS_DV) after HAL_ETH_MspInit()? I fear that there might be some undefined logic level, which interfere with the pullups/bootstraps, thus putting the PHY into a wrong config. The problematic pin PA7 (=RMII_CRS_DV) is configured like this in HAL_ETH_MspInit():

GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

I only read in the Contoller Overview for the STM32H753, that

"After reset, all GPIOs (except debug pins) are in Analog mode to reduce power consumption". Has anyone a similar document or reference, which clears things up?

Thanks in advance for your help!

This discussion is locked. Please start a new topic to ask your question.
3 REPLIES 3
waclawek.jan
Super User

You don't necessarily have to use the problematic code. Simply write your own, where pins' initialization happens only after the PHY has been reset.

JW

Piranha
Chief II

CRS_DV is a receive pin and an input on MAC side. Therefore it will not overpower the level set by R6 pull-up resistor.

Thanks for your reply. I'm just kind of confused, since the GPIOs are configured as push-pull. But according to the datasheet of the H7, you are right:

0693W00000JMP4SQAX.png