EtherCAT Slave  1.06.01
PHY Configuration

The SDK provides an API to configure the PHYs.

Function Description
EC_API_SLV_cbRegisterPhyReset Register PHY reset function
EC_API_SLV_registerPhy Register PHY index, MII address, link polarity and use of RxLink
EC_API_SLV_cbRegisterPhyLibDetect Register a PHY not covered by the SDK
EC_API_SLV_phyRegRead Read PHY Register
EC_API_SLV_phyRegWrite Write PHY Register

PHY Examples

Register a PHY to SDK

PHYs not covered by the SDK must be registered as described below. Be aware if the new PHY supports EtherCAT network. For more information refer to the Application Note –PHY Selection Guide on the EtherCAT home page.

#define PHY_TLK110_ID 0x2000A211
int16_t EC_SLV_APP_TLK110_phyLibDetect(void* pPhyLibCtxt_p, uint8_t phyIdx_p, uint32_t phyId_p
,uint8_t phyAddr_p, EC_API_SLV_SPhyDescriptor_t* pPhyLibDesc_p)
{
int16_t retVal = -6; /* uknown phy */
/* exact TLK110, uper word is TLK105 also */
if (phyId_p == PHY_TLK110_ID)
{
OSAL_printf("TLK110 detected\r\n");
pPhyLibDesc_p->softwareReset = EC_SLV_APP_TLK110_softwareReset;
pPhyLibDesc_p->softwareRestart = NULL;
pPhyLibDesc_p->enablePhyAutoMDIX = EC_SLV_APP_TLK110_enablePhyAutoMDIX;
pPhyLibDesc_p->setMiiMode = EC_SLV_APP_TLK110_setMIIMode;
pPhyLibDesc_p->setPowerMode = EC_SLV_APP_TLK110_powerMode;
pPhyLibDesc_p->getPowerMode = NULL;
pPhyLibDesc_p->mLEDConfig = EC_SLV_APP_TLK110_mLEDConfig;
pPhyLibDesc_p->extFDEnable = EC_SLV_APP_TLK110_extFDEnable;
pPhyLibDesc_p->oDDNibbleDetEnable = EC_SLV_APP_TLK110_oDDNibbleDetEnable;
pPhyLibDesc_p->rxErrIdleEnable = EC_SLV_APP_TLK110_rxErrIdleEnable;
pPhyLibDesc_p->ledConfig = EC_SLV_APP_TLK110_ledConfig;
pPhyLibDesc_p->ledBlinkConfig = EC_SLV_APP_TLK110_ledBlinkConfig;
pPhyLibDesc_p->fastLinkDownDetEnable = EC_SLV_APP_TLK110_fastLinkDownDetEnable;
pPhyLibDesc_p->fastRXDVDetEnable = EC_SLV_APP_TLK110_fastRXDVDetEnable;
pPhyLibDesc_p->swStrapConfigDone = EC_SLV_APP_TLK110_swStrapConfigDone;
pPhyLibDesc_p->setLinkConfig = NULL;
pPhyLibDesc_p->getAutonegotiation = NULL;
pPhyLibDesc_p->setMdixMode = NULL;
pPhyLibDesc_p->getMdixMode = NULL;
pPhyLibDesc_p->disable1GbAdver = NULL;
pPhyLibDesc_p->rgmiiLowLatencyEnable = NULL;
pPhyLibDesc_p->rgmiiTxHalfFullThreshold = NULL;
pPhyLibDesc_p->rgmiiRxHalfFullThreshold = NULL;
retVal = 0;
}
return retVal;
}
EC_API_SLV_cbRegisterPhyLibDetect(EC_SLV_APP_TLK110_phyLibDetect, pAppInstance_p);
EC_API_SLV_SPhyDescriptor::setLinkConfig
EC_API_SLV_CBPhySpecific_setLinkConfig_t setLinkConfig
Definition: ecSlvApi.h:1334
EC_API_SLV_SPhyDescriptor::getPowerMode
EC_API_SLV_CBPhySpecific_GetPowerMode_t getPowerMode
Definition: ecSlvApi.h:1324
EC_API_SLV_SPhyDescriptor::setPowerMode
EC_API_SLV_CBPhySpecific_SetPowerModeT setPowerMode
Definition: ecSlvApi.h:1323
EC_API_SLV_SPhyDescriptor::fastLinkDownDetEnable
EC_API_SLV_CBPhySpecific_FastLinkDownDetEnable_t fastLinkDownDetEnable
Definition: ecSlvApi.h:1331
EC_API_SLV_SPhyDescriptor::ledConfig
EC_API_SLV_CBPhySpecific_LedConfig_t ledConfig
Definition: ecSlvApi.h:1329
EC_API_SLV_cbRegisterPhyLibDetect
void EC_API_SLV_cbRegisterPhyLibDetect(EC_API_SLV_CBExtPhyLibDetect_t cbFunc_p, void *pContext_p)
Register an application specific Phy Library.
Definition: ecSlvApi_BoardStub.c:162
EC_API_SLV_SPhyDescriptor::enablePhyAutoMDIX
EC_API_SLV_CBPhySpecific_EnableAutoMDIX_t enablePhyAutoMDIX
Definition: ecSlvApi.h:1321
EC_API_SLV_SPhyDescriptor::setMiiMode
EC_API_SLV_CBPhySpecific_SetMIIMode_t setMiiMode
Definition: ecSlvApi.h:1322
EC_API_SLV_SPhyDescriptor::oDDNibbleDetEnable
EC_API_SLV_CBPhySpecific_ODDNibbleDetEnable_t oDDNibbleDetEnable
Definition: ecSlvApi.h:1327
EC_API_SLV_SPhyDescriptor::ledBlinkConfig
EC_API_SLV_CBPhySpecific_LedBlinkConfig_t ledBlinkConfig
Definition: ecSlvApi.h:1330
EC_API_SLV_SPhyDescriptor::disable1GbAdver
EC_API_SLV_CBPhySpecific_disable1GbAdver_t disable1GbAdver
Definition: ecSlvApi.h:1338
EC_API_SLV_SPhyDescriptor::getAutonegotiation
EC_API_SLV_CBPhySpecific_getAutoNegotiation_t getAutonegotiation
Definition: ecSlvApi.h:1335
EC_API_SLV_SPhyDescriptor
Definition: ecSlvApi.h:1317
EC_API_SLV_SPhyDescriptor::rgmiiTxHalfFullThreshold
EC_API_SLV_CBPhySpecific_rgmiiTxHalfFullThreshold_t rgmiiTxHalfFullThreshold
Definition: ecSlvApi.h:1340
EC_API_SLV_SPhyDescriptor::getMdixMode
EC_API_SLV_CBPhySpecific_getMdixMode_t getMdixMode
Definition: ecSlvApi.h:1337
EC_API_SLV_SPhyDescriptor::rgmiiRxHalfFullThreshold
EC_API_SLV_CBPhySpecific_rgmiiRxHalfFullThreshold_t rgmiiRxHalfFullThreshold
Definition: ecSlvApi.h:1341
EC_API_SLV_SPhyDescriptor::extFDEnable
EC_API_SLV_CBPhySpecific_ExtFDEnable_t extFDEnable
Definition: ecSlvApi.h:1326
EC_API_SLV_SPhyDescriptor::rxErrIdleEnable
EC_API_SLV_CBPhySpecific_RxErrIdleEnable_t rxErrIdleEnable
Definition: ecSlvApi.h:1328
EC_API_SLV_SPhyDescriptor::mLEDConfig
EC_API_SLV_CBPhySpecific_MLEDConfig_t mLEDConfig
Definition: ecSlvApi.h:1325
EC_API_SLV_SPhyDescriptor::softwareRestart
EC_API_SLV_CBPhySpecific_softRestart_t softwareRestart
Definition: ecSlvApi.h:1320
EC_API_SLV_SPhyDescriptor::rgmiiLowLatencyEnable
EC_API_SLV_CBPhySpecific_rgmiiLowLatencyEnable_t rgmiiLowLatencyEnable
Definition: ecSlvApi.h:1339
EC_API_SLV_SPhyDescriptor::swStrapConfigDone
EC_API_SLV_CBPhySpecific_SwStrapConfigDone_t swStrapConfigDone
Definition: ecSlvApi.h:1333
EC_API_SLV_SPhyDescriptor::softwareReset
EC_API_SLV_CBPhySpecific_SoftReset_t softwareReset
Definition: ecSlvApi.h:1319
EC_API_SLV_SPhyDescriptor::setMdixMode
EC_API_SLV_CBPhySpecific_setMdixMode_t setMdixMode
Definition: ecSlvApi.h:1336
EC_API_SLV_SPhyDescriptor::fastRXDVDetEnable
EC_API_SLV_CBPhySpecific_FastRXDVDetEnable_t fastRXDVDetEnable
Definition: ecSlvApi.h:1332