Ethernet link status for the K64F
Dependents: JRO_CR2 K64F_EthLink_HelloWorld frdm_test JRO_DDSv2
k64f_EthLink.cpp
00001 #if defined(TARGET_K64F) 00002 #include "k64f_EthLink.h" 00003 00004 //--------------------------------------------------------------------------------------------------------------------------------------// 00005 // Constructor 00006 00007 k64fEthLink::k64fEthLink() { 00008 } 00009 00010 //--------------------------------------------------------------------------------------------------------------------------------------// 00011 // Get Ethernet link status on the K64F 00012 /* 00013 int k64fEthLink::GetELink() { 00014 int mdio_timer = 0; 00015 uint32_t k64f_mdio_reg = ENET_EIR; 00016 00017 //wait for MDIO interface to be ready 00018 do { 00019 k64f_mdio_reg = ENET_EIR; 00020 #ifdef RTOS_H 00021 Thread::wait(1); 00022 #else 00023 wait_ms(1); 00024 #endif 00025 mdio_timer++; 00026 } while(((k64f_mdio_reg & MDIO_MII_READY_BIT) == 0) && (mdio_timer < 300)); 00027 if(mdio_timer > 298) { //average is about 122mS 00028 return(MDIO_TIMEOUT); //timeout error 00029 } 00030 00031 //get Basic Status Register 00032 ENET_MMFR = MDIO_GET_LINK_REG; 00033 wait_us(35); //20 is absolute minimum!! 00034 k64f_mdio_reg = ENET_MMFR; //get the phy result 00035 if(k64f_mdio_reg & MDIO_MII_LINK_BITS) return(PHY_UP); 00036 return(PHY_DOWN); 00037 } 00038 */ 00039 //--------------------------------------------------------------------------------------------------------------------------------------// 00040 // Get Ethernet link status on the K64F 00041 /* 00042 ENET_Type miiSTR = {}; 00043 00044 int k64fEthLink::GetELink() { 00045 int mdio_timer = 0; 00046 uint32_t k64f_mdio_reg = miiSTR.EIR; 00047 00048 //wait for MDIO interface to be ready 00049 do { 00050 k64f_mdio_reg = miiSTR.EIR; 00051 #ifdef RTOS_H 00052 Thread::wait(1); 00053 #else 00054 wait_ms(1); 00055 #endif 00056 mdio_timer++; 00057 } while(((k64f_mdio_reg & MDIO_MII_READY_BIT) == 0) && (mdio_timer < 300)); 00058 if(mdio_timer > 298) { //average is about 122mS 00059 return(MDIO_TIMEOUT); //timeout error 00060 } 00061 00062 //get Basic Status Register 00063 miiSTR.MMFR = MDIO_GET_LINK_REG; 00064 wait_us(35); //20 is absolute minimum!! 00065 k64f_mdio_reg = miiSTR.MMFR; //get the phy result 00066 if(k64f_mdio_reg & MDIO_MII_LINK_BITS) return(PHY_UP); 00067 return(PHY_DOWN); 00068 } 00069 */ 00070 //--------------------------------------------------------------------------------------------------------------------------------------// 00071 // Get Ethernet link status on the K64F 00072 00073 //see: mbed-dev/targets/cmsis/TARGET_K64F/MK64F12.h 00074 00075 int k64fEthLink::GetELink() { 00076 int mdio_timer = 0; 00077 uint32_t k64f_mdio_reg = ENET->EIR; 00078 00079 //wait for MDIO interface to be ready 00080 do { 00081 k64f_mdio_reg = ENET->EIR; 00082 #ifdef RTOS_H 00083 Thread::wait(1); 00084 #else 00085 wait_ms(1); 00086 #endif 00087 mdio_timer++; 00088 } while(((k64f_mdio_reg & MDIO_MII_READY_BIT) == 0) && (mdio_timer < 300)); 00089 if(mdio_timer > 298) { //average is about 122mS 00090 return(MDIO_TIMEOUT); //timeout error 00091 } 00092 00093 //get Basic Status Register 00094 ENET->MMFR = MDIO_GET_LINK_REG; 00095 wait_us(35); //20 is absolute minimum!! 00096 k64f_mdio_reg = ENET->MMFR; //get the phy result 00097 if(k64f_mdio_reg & MDIO_MII_LINK_BITS) return(PHY_UP); 00098 return(PHY_DOWN); 00099 } 00100 00101 #endif 00102 00103 00104
Generated on Mon Jul 25 2022 05:26:34 by 1.7.2