cancel
Showing results for 
Search instead for 
Did you mean: 

stm32F407VG BB MDIO not working

HHanu
Associate

We have purchased stm32f407vg discovery board plus Base board from element 14 with ethernet and other peripherals. We observe ethernet works but mdio communication is not working as expected. We are not seeing MDC and MDIO signals and Ref clk clock has an offset of 1.45 volts with 200 mV 50 Mhz signal

3 REPLIES 3
Imen.D
ST Employee

Hello,

Maybe you should check pins configuration.

Is this issue faced when used the Cube example?

Kind Regards,

Imen.

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen
HHanu
Associate

/* Ethernet pins configuration ************************************************/

  /*

    ETH_MDIO --------------> PA2

    ETH_MDC ---------------> PC1

   

    ETH_RMII_REF_CLK-------> PA1

    ETH_RMII_CRS_DV -------> PA7

ETH_MII_RX_ER  -------> PB10

    ETH_RMII_RXD0  -------> PC4

    ETH_RMII_RXD1  -------> PC5

    ETH_RMII_TX_EN -------> PB11

    ETH_RMII_TXD0  -------> PB12

    ETH_RMII_TXD1  -------> PB13

    ETH_RST_PIN   -------> PE2

  */

 /* Configure the PHY RST pin */

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

 GPIO_Init(GPIOE, &GPIO_InitStructure);

 GPIO_ResetBits(GPIOE, GPIO_Pin_2);

 for (i = 0; i < 20000; i++);

 /* Configure PA1,PA2 and PA7 */

 GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_7;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;

 GPIO_Init(GPIOA, &GPIO_InitStructure);

 GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_ETH);

 GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_ETH);

 GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_ETH);

 /* Configure PB10,PB11,PB12 and PB13 */

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;

 GPIO_Init(GPIOB, &GPIO_InitStructure);

 GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_ETH);

 GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_ETH);

 GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_ETH);

 GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_ETH);

 /* Configure PC1, PC4 and PC5 */

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5;

 GPIO_Init(GPIOC, &GPIO_InitStructure);

 GPIO_PinAFConfig(GPIOC, GPIO_PinSource1, GPIO_AF_ETH);

 GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_ETH);

 GPIO_PinAFConfig(GPIOC, GPIO_PinSource5, GPIO_AF_ETH);

 GPIO_SetBits(GPIOE, GPIO_Pin_2);

 for (i = 0; i < 20000; i++);

The above code is used for initialization of the ethernet module. We are using

the ethernet BSP driver which may along with Base board (Element 14).

The ethernet communication is working with default setting, but registers

are always reading 0xffff. We do not see any activity on the mdio/mdc pins.

Imen.D
ST Employee

Hi,

What is the PHY address ? Is your ethernet PHY enabled and how is PHY clocked, exactly?

Regards

Imen

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen