Part Number: AM2432
Other Parts Discussed in Thread: SYSCONFIG
-
Background
We are migrating an EtherCAT CiA402 subdevice from SDK 11 (
ind_comms_sdk_am243x_11_00_00_13) to SDK 2025 (ind_comms_sdk_am243x_2025_00_00_08) on a custom PCB with DP83822 PHY on AM243x (ICSSG1).In SDK 11, we successfully resolved an RXLINK pin glitch issue on our custom PCB by switching from MLINK Based to PHY Polling Based link detection (
ECAT_PHYUSERXLINK_IN = false, LINKSEL=0). This configuration reaches OP stably.We attempted to apply the same approach in SDK 2025 but it fails consistently.
please refer: testResult01.zip
Original SDK Example ComparisonSDK 11 original (
ind_comms_sdk_am243x_11_00_00_13/.../ESL_BOARD_config.h):// No ti_drivers_config.h include, no ENHANCED_LINK_ENABLED #define ECAT_PHYUSERXLINK_IN (true) // MLINK Based (hardware MDIO normal mode) #define ECAT_PHYPOLINVERT_IN (true) // ACTIVE_HIGHSDK 2025 original (
ind_comms_sdk_am243x_2025_00_00_08/.../ESL_BOARD_config.h):#include "ti_drivers_config.h" // Contains ENHANCED_LINK_ENABLED #ifdef ENHANCED_LINK_ENABLED #define ECAT_PHYUSERXLINK_IN (true) // MLINK Based (MDIO manual mode, errata i2329) // Polarity from SysConfig (PHY0_LINK_POLARITY_ACTIVE_HIGH)Key difference: SDK 11 does not use MDIO manual mode (
ENHANCED_LINK_ENABLEDabsent). SDK 2025 always uses MDIO manual mode.
Working Reference: SDK 11 Custom Project
Our working SDK 11 custom project (
ethercat_subdevice_cia402_clang_IND11_shyu3test) uses LINKSEL=0 as a workaround for RXLINK pin glitch sensitivity:#define ECAT_PHYUSERXLINK_IN (false) // LINKSEL=0, PHY Polling Based #define ECAT_PHYPOLINVERT_IN (true) // ACTIVE_HIGHUART boot output (stable, OP reached):
Configure Phy bits: PhyAddr:3, LinPol:HIGH, PhyAddr:1, LinPol:HIGH, (0x0) ... PDO size In:0x27/0xd PDO size Out:0x27/0xd, In:0x27/0xd ← OP reached, stableMDIO_LINK (0x300B240C) = 0x00000800— stable, no oscillation.
SDK 2025 Test Results — LINKSEL=0 Always Fails
Test A: Manual
ESL_BOARD_config.hedit (LINKSEL=0 + ACTIVE_HIGH)#define ECAT_PHYUSERXLINK_IN (false) #define ECAT_PHYPOLINVERT_IN PHY_LINK_POL_ACTIVE_HIGHResult: TwinCAT SCAN fails completely — slave device not detected.
Test B: SysConfig — "Enable Enhanced Link" unchecked → PHY Polling Based
ti_drivers_config.hafter SysConfig change:ENHANCED_LINK_ENABLEDremoved.UART boot output:
Configure Phy bits: PhyAddr:3, LinPol:LOW, PhyAddr:1, LinPol:LOW, (0xa) ... SSC_checkTimer:MaxET:25 ← No PDO size output, OP never reachedTwinCAT result:
- SCAN: device detected (Box 1 visible) OK
- INIT → PREOP: failed — Communication Error
0x71f (1823)not OK
Note: FW config still shows
(0xa)even with PHY Polling Based, unlike SDK 11 which shows(0x0).
Summary Table
Configuration SCAN PREOP OP Notes SDK 2025, LINKSEL=1, ACTIVE_HIGH (original) Fail — — Device not detected SDK 2025, LINKSEL=1, ACTIVE_LOW Pass Pass Pass ~1 sec Port A oscillation SDK 2025, LINKSEL=0, ACTIVE_HIGH (manual) Fail — — Device not detected SDK 2025, LINKSEL=0, PHY Polling Based (SysConfig) Pass Fail 0x71f — Consistent failure SDK 11, LINKSEL=0, PHY Polling Based Pass Pass Pass Stable reference
Questions
-
Why does PHY Polling Based link detection (
ECAT_PHYUSERXLINK = false, Enhanced Link disabled) fail at INIT→PREOP with error0x71fin SDK 2025, while the identical LINKSEL=0 configuration works correctly in SDK 11? -
In SDK 2025 with PHY Polling Based selected via SysConfig, the UART still prints FW config
(0xa)— the same value as MLINK Based mode. In SDK 11, PHY Polling Based produces(0x0). Does SDK 2025's PHY Polling Based mode use a different internal implementation than SDK 11? Is there an additional configuration step required? -
Is PHY Polling Based link detection (
ECAT_PHYUSERXLINK = false) officially supported in SDK 2025 with MDIO manual mode (errata i2329)? If not, what is the recommended approach for customers whose custom PCB has RXLINK pin glitch sensitivity?
if you need more informaion, please request it to me.