大家好、
在 DP83822I 上运行10BASE-T 标准的合规性测试时遇到问题、因为0x0027寄存器没有为我执行任何操作。
我可能缺少启用此函数的指令、或者我们为写入扩展寄存器而编写的包装程序无法正常工作。
我将在明天尝试绕过该函数。
首先、我按照 SNLA266进行了测试、因为本手册绕过了0x0027的使用、但对于特定测试、我的 LeCroy 范围要求提供全1代码。
对应 于寄存器0x0027的0x0013值、这不起作用。
/*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);
有人能告诉我0x0027寄存器的秘密吗?
提前感谢