//LAN8720初始化
//返回值:0,成功;
// 其他,失败
u8 LAN8720_Init(void)
{
u8 macaddress[6];
INTX_DISABLE(); //关闭所有中断,复位过程不能被打断!
PCF8574_WriteBit(ETH_RESET_IO,1); //硬件复位
//HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_RESET); //PB1置1
delay_ms(100);
PCF8574_WriteBit(ETH_RESET_IO,0); //复位结束
//HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_SET); //PB1置1
delay_ms(100);
INTX_ENABLE(); //开启所有中断
macaddress[0]=lwipdev.mac[0];
macaddress[1]=lwipdev.mac[1];
macaddress[2]=lwipdev.mac[2];
macaddress[3]=lwipdev.mac[3];
macaddress[4]=lwipdev.mac[4];
macaddress[5]=lwipdev.mac[5];
ETH_Handler.Instance=ETH;
ETH_Handler.Init.AutoNegotiation=ETH_AUTONEGOTIATION_ENABLE;//使能自协商模式
ETH_Handler.Init.Speed=ETH_SPEED_100M;//速度100M,如果开启了自协商模式,此配置就无效
ETH_Handler.Init.DuplexMode=ETH_MODE_FULLDUPLEX;//全双工模式,如果开启了自协商模式,此配置就无效
ETH_Handler.Init.PhyAddress=LAN8720_PHY_ADDRESS;//LAN8720地址
ETH_Handler.Init.MACAddr=macaddress; //MAC地址
ETH_Handler.Init.RxMode=ETH_RXINTERRUPT_MODE; //中断接收模式
ETH_Handler.Init.ChecksumMode=ETH_CHECKSUM_BY_HARDWARE;//硬件帧校验
ETH_Handler.Init.MediaInterface=ETH_MEDIA_INTERFACE_RMII;//RMII接口
if(HAL_ETH_Init(Ð_Handler)==HAL_OK) return 0; //成功
else return 1; //失败
}
老是初始化失败
|