我的网口设计与开发板的设计一样,采用的是88E1111芯片,C6678的端口1与88E1111相连,与DEMO设计的唯一一点不同是DEMO用的SGMII参考时钟为312.5MHZ,我这里用的时钟为156.25MHz。
(1)当我把我的板子设置为EMAC引导模式,然后用网口1与PC相连,PC机能够收到DSP发送上来的BOOTP包,然后我将应用程序从该网口发送下去,能够运行。这个过程能够实现是不是说明硬件设计没有问题?88E1111的初始化也没有问题?
(2)当我在应用程序对该SGMII口进行初始化时,一直不能通过。我对该端口的初始化过参数如下,与开发板提供的一致,参数如下:
#define SGMII_SERDES_CFGPLL_VAL 0x00000041
#define SGMII_SERDES_CFGRX_VAL 0x00700621
#define SGMII_SERDES_CFGTX_VAL 0x000108A1
但是程序会一直执行下面的死循环:
do
{
CSL_SGMII_getStatus(macPortNum, &sgmiiStatus);
if (sgmiiStatus.bIsAutoNegError != 0)
return; /* This is an error condition */
} while (sgmiiStatus.bIsAutoNegComplete != 1);
说明SGMII口的自适应一直不通过??
(3) 当我根据E2E论坛的提示,因为时钟不同,修改配置,参数如下
#define SGMII_SERDES_CFGPLL_VAL 0x00000081 (由原来的0x00000041修改)
#define SGMII_SERDES_CFGRX_VAL 0x00700621
#define SGMII_SERDES_CFGTX_VAL 0x000108A1
等程序运行到获取SGMII的状态时,就会出现如下提示:
这是什么原因呢?
(4)是不是我没有配置正确SGMII SERDES,我该如何根据不同的时钟进行修改配置的值?
