Hello,
We are using the DP83TD510E and have been reading the 0x0A85 register then converting it to SNR SNLA364A. Here is the code that we are using:
taskENTER_CRITICAL();
HAL_ETH_WritePHYRegister(&heth, 0x0D, 0x001F);
HAL_ETH_WritePHYRegister(&heth, 0x0E, 0x0A85);
HAL_ETH_WritePHYRegister(&heth, 0x0D, 0x401F);
HAL_ETH_ReadPHYRegister(&heth, 0x0E, &mse); // Read the PHY dsp_reg_72 register.
taskEXIT_CRITICAL();
Sig2Noise = -10.0 * log10((float)mse/131072.0) - 1.76;
But the SNR we get seems to high. For example, we get the following results from one test:
From DP83TD510E register read and calculation, SNR = 28.5dB
A scope capture of the signals looks like this:
So we estimate the signal is actually about 1.2V (half of the 2.39V seen in the capture because of full duplex transmission), and noise is about 10mV.
By our estimate, SNR ~ 10 log (1.2/0.01) = 20.8dB
Why is our estimate so different from the SNR reported by the DP83TD510E? The best SNR we expected was for a 2.4V signal = 23.8dB.
Thanks for your help,
Cyrus