Пример #1
0
u32 mdio_read(u32 PhyRegAddr, u32 PhyAddr)
{
    u32 val =0;

    /* 32 Consecutive ones on MDO to establish sync */
    output_MDIO(0xFFFFFFFF, 32);

    /* start code 01, read command (10) */
    output_MDIO(0x06, 4);

    /* write PHY address */
    output_MDIO(PhyAddr, 5);

    output_MDIO(PhyRegAddr, 5);

    /* turnaround MDO is tristated */
    turnaround_MDIO();

    /* Read the data value */
    val = input_MDIO();

    /* turnaround MDO is tristated */
    idle_MDIO();

    return val;
}
Пример #2
0
uint32_t mdio_read(GPIO_TypeDef* GPIOx, uint32_t PhyRegAddr)
{
    uint32_t val =0;

    /* 32 Consecutive ones on MDO to establish sync */
    //printf("mdio read - sync \r\n");
    output_MDIO(GPIOx, 0xFFFFFFFF, 32);

    /* start code 01, read command (10) */
    //printf("mdio read - start \r\n");
    output_MDIO(GPIOx, 0x06, 4);

    /* write PHY address */
    //printf("mdio read - PHY address \r\n");
    output_MDIO(GPIOx, PHY_ADDR, 5);

    //printf("mdio read - PHY REG address \r\n");
    output_MDIO(GPIOx, PhyRegAddr, 5);

    /* turnaround MDO is tristated */
    //printf("mdio read - turnaround \r\n");
    turnaround_MDIO(GPIOx);

    /* Read the data value */
    //printf("mdio read - read the data value \r\n");
    val = input_MDIO(GPIOx );
    //printf("mdio read - val : %X\r\n", val );

    /* turnaround MDO is tristated */
    //printf("mdio read - idle \r\n");
    idle_MDIO(GPIOx);

    return val;
}