Hello together,
I have a problem running the compliance test on the DP83822I for the 10BASE-T Standard, since the 0x0027 register isn't doing anything for me.
I'm probably missing a instruction to enable this function, or the wrapper we wrote to write to the extended register isn't working correctly.
I'll try bypassing the function tomorrow.
First I followed the SNLA266 for the tests since this manual sneaks around the use of 0x0027, but for a specific test my LeCroy Scope asks for a all Ones code.
Which should correspond to a value of 0x0013 for register 0x0027, this doesn't work.
/*Start of Test modes*/ // snla266 A.3 10BASE-Te Standsard Test Script MDI works but only with the 0x0016 not with 0x0027 HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x001F, 0x8000); // software reset (clears register HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x0000, 0x0100); // programs DUT to 10BASE-T mode HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x0019, 0x0021); // programs DUT to Forced MDI mode HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x0016, 0x7108); //programs DUT to generate data and enables analog loopback mode //HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x0027, 0x0019); // this should never work since 0x0027 is bigger than the biggest standard register (0x001F) //HalEthInitStatus = writeExtRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x0027, 0x0019); // this doesn't work I don't know why HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x001F, 0x4000); // digital reset (doesn’t clear reg // end HAL_Delay(1000); // snla266 A.3 10BASE-Te Standard Link Pulse works HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x001F, 0x8000); // software reset (clears register HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x0000, 0x0100); // programs DUT to 10BASE-T mode HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x0019, 0x0021); // programs DUT to Forced MDI mode HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x001F, 0x4000); // digital reset (doesn’t clear reg // end HAL_Delay(1000); // snla266 A.3 10BASE-Te All Ones doesn't work HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x001F, 0x8000); // software reset (clears register HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x0000, 0x0100); // programs DUT to 10BASE-T mode HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x0019, 0x0021); // programs DUT to Forced MDI mode HalEthInitStatus = writeExtRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x0027, 0x0013); HalEthInitStatus = HAL_ETH_WritePHYRegister(&LWIP_MOD_ETHIF_EtherHandle, ETH_PHY_ADDRESS, 0x001F, 0x4000); // digital reset (doesn’t clear reg HAL_Delay(1000);
Can anybody tell me the secret to the 0x0027 register ?
Thanks in advance