STM32F407ZE+LAN8720A硬件初步验证

2019-08-16 23:50发布

硬件参考探索者F4如图所示
u8 LAN8720_Init(void)
{
        u8 rval=0;
        u16 m;
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_GPIOD,ENABLE);       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);     
        SYSCFG_ETH_MediaInterfaceConfig(SYSCFG_ETH_MediaInterface_RMII);

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

        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_InitStructure.GPIO_Pin =  GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_14;
        GPIO_Init(GPIOG, &GPIO_InitStructure);
        GPIO_PinAFConfig(GPIOG, GPIO_PinSource11, GPIO_AF_ETH);
        GPIO_PinAFConfig(GPIOG, GPIO_PinSource13, GPIO_AF_ETH);
        GPIO_PinAFConfig(GPIOG, GPIO_PinSource14, GPIO_AF_ETH);
       
        GPIO_InitStructure.GPIO_Pin                 = GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Speed      = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_Mode         = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType     = GPIO_OType_PP;       
        GPIO_InitStructure.GPIO_PuPd         = GPIO_PuPd_NOPULL ;  
        GPIO_Init(GPIOD, &GPIO_InitStructure);
       
        LAN8720_RST=0;                                       
        for(m=0;m<10000;m++);
        LAN8720_RST=1;                               
        return !rval;                               
}


int main(void)
{       
        Hardware_Configuration();       
        devAddr_dau                = readDeviceAddr();                        //read device address
        devTypeAddr_dau        = readDeviceTypeAddr();                //read device type address
       
        LAN8720_Init();
        ETH_WritePHYRegister(0, 0, 0x5555);
        lan8720a_bcr        = ETH_ReadPHYRegister(0, 0);

        while(1)
        {
                if(devAddr_dau==0)
                {
                        debugeHardware();
                }
                else
                {

                }
                scanTimeValue();
                GPIO_ScanOutputCtr();               
        }
}

调试目的:LAN8720a写入读出寄存器能够正常操作
测试结果:BCR寄存器写入0x1234读出为0x0000
问题排查:测试LAN8720A晶振25MHZ起振
问题请教:1.根据原理图nINTSEL引脚(PIN2)=0, nINT/REFCLKO引脚(PIN14)是否应该测试到50MHZ波形?(目前测试不到)
               2.nINT/REFCLKO引脚(PIN14)如果没有50MHZ信号输入,MDIO/MDC引脚是否能够测试到信号?(目前测试不到)
               3.使用该程序实现LAN8720a寄存器写入读出,是否存在问题?
补充说明:板子IO输入输出、串口其它功能运行正常。
请熟悉的朋友发表意见,多多指教,谢谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。