We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi there,
I have faced a problem with the NGX/NXP LPC1837 LPCXpresso board. The board is supplied with LPC1837 microcontroller connected to the LAN8720 PHY. I am using Keil uVision5 with the CMSIS drivers. I was following the example code from the CMSIS website:
www.keil.com/.../group__eth__interface__gr.html
so my Initialization code looks as follows:
static __inline void InitializeOnChipEthernetMAC(void) { MAC = &Driver_ETH_MAC0; PHY = &Driver_ETH_PHY0; capabilities = MAC->GetCapabilities(); MAC->Initialize(ARM_ETH_MAC_SignalEvent); MAC->PowerControl(ARM_POWER_FULL); if (capabilities.mac_address == 0) { MAC->SetMacAddress(&own_mac_address); } else { MAC->GetMacAddress(&own_mac_address); } if (PHY->Initialize (MAC->PHY_Read, MAC->PHY_Write) == ARM_DRIVER_OK) { PHY->PowerControl (ARM_POWER_FULL); PHY->SetInterface (capabilities.media_interface); PHY->SetMode (ARM_ETH_PHY_AUTO_NEGOTIATE); } while (true) { if (PHY->GetLinkState() == ARM_ETH_LINK_UP) { break; } } }
Unfortunately, I am getting timeouts inside the PHY->PowerControl function. Mainly inside the PHY_LAN8720.c file (v6.2) at line 139 the function call
PHY.reg_rd(ETH_PHY_ADDR, REG_PHYIDR1, &val);
always returns ARM_DRIVER_ERROR_TIMEOUT. I have enabled the systick timer in the RTOS v1 which I am using. Has anyone had a similar issue and could tell me what I am missing?