EmbeddedRelated.com
Forums

Configuring DP83848H in MII mode for LPC2478

Started by sayali August 18, 2011
Hello all,

I already have a code ready for Ethernet configuration in RMII mode.
It is working fine.

What i need to do is use the Ethernet in MII mode.

Following are the changes which i have made. but it doesnt seem to work.
--------------------------
Original for RMII:
/* Initialize MAC control registers. */
MAC_MAC1 = MAC1_PASS_ALL;
MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
MAC_MAXF = ETH_MAX_FLEN;
MAC_CLRT = CLRT_DEF;
MAC_IPGR = IPGR_DEF;

/* Enable Reduced MII interface. */
MAC_COMMAND = CR_RMII | CR_PASS_RUNT_FRM;

For MII :

/* Initialize MAC control registers. */
MAC_MAC1 = MAC1_PASS_ALL;
MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
MAC_MAXF = ETH_MAX_FLEN;
MAC_CLRT = CLRT_DEF;
MAC_IPGR = IPGR_DEF;

/* Enable and Reset MII interface. */
MAC_MCFG = MCFG_RES_MII; //Reset MII
for (tout = 100; tout; tout--); //delay after reset
MAC_MCFG = MCFG_DIV10_MII; //Div clk by 10
MAC_COMMAND &= ~0x00000200; //MII mode selected
-------------------------------

can some one let me know if my changes are correct?

-Sayali

An Engineer's Guide to the LPC2100 Series

--- In l..., "sayali" wrote:
>
> Hello all,
>
> I already have a code ready for Ethernet configuration in RMII mode.
> It is working fine.
>
> What i need to do is use the Ethernet in MII mode.
>
> Following are the changes which i have made. but it doesnt seem to work.
> --------------------------
> Original for RMII:
> /* Initialize MAC control registers. */
> MAC_MAC1 = MAC1_PASS_ALL;
> MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
> MAC_MAXF = ETH_MAX_FLEN;
> MAC_CLRT = CLRT_DEF;
> MAC_IPGR = IPGR_DEF;
>
> /* Enable Reduced MII interface. */
> MAC_COMMAND = CR_RMII | CR_PASS_RUNT_FRM;
> For MII :
>
> /* Initialize MAC control registers. */
> MAC_MAC1 = MAC1_PASS_ALL;
> MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
> MAC_MAXF = ETH_MAX_FLEN;
> MAC_CLRT = CLRT_DEF;
> MAC_IPGR = IPGR_DEF;
>
> /* Enable and Reset MII interface. */
> MAC_MCFG = MCFG_RES_MII; //Reset MII
> for (tout = 100; tout; tout--); //delay after reset
> MAC_MCFG = MCFG_DIV10_MII; //Div clk by 10
> MAC_COMMAND = MII_MODE //i.e. 0x00000000 - MII mode selected
> -------------------------------
>
> can some one let me know if my changes are correct?
>
> -Sayali
>

What's the setting in PINSELx for MII?
PINSEL2 = 0x55555555; /* selects P1[15:0] */
PINSEL3 = 0x00000005; /* selects P1[17:16] */

best,
Tom
--- In l..., "sayali" wrote:
>
> --- In l..., "sayali" wrote:
> >
> > Hello all,
> >
> > I already have a code ready for Ethernet configuration in RMII mode.
> > It is working fine.
> >
> > What i need to do is use the Ethernet in MII mode.
> >
> > Following are the changes which i have made. but it doesnt seem to work.
> > --------------------------
> > Original for RMII:
> > /* Initialize MAC control registers. */
> > MAC_MAC1 = MAC1_PASS_ALL;
> > MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
> > MAC_MAXF = ETH_MAX_FLEN;
> > MAC_CLRT = CLRT_DEF;
> > MAC_IPGR = IPGR_DEF;
> >
> > /* Enable Reduced MII interface. */
> > MAC_COMMAND = CR_RMII | CR_PASS_RUNT_FRM;
> >
> >
> >
> >
> > For MII :
> >
> > /* Initialize MAC control registers. */
> > MAC_MAC1 = MAC1_PASS_ALL;
> > MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
> > MAC_MAXF = ETH_MAX_FLEN;
> > MAC_CLRT = CLRT_DEF;
> > MAC_IPGR = IPGR_DEF;
> >
> > /* Enable and Reset MII interface. */
> > MAC_MCFG = MCFG_RES_MII; //Reset MII
> > for (tout = 100; tout; tout--); //delay after reset
> > MAC_MCFG = MCFG_DIV10_MII; //Div clk by 10
> > MAC_COMMAND = MII_MODE //i.e. 0x00000000 - MII mode selected
> > -------------------------------
> >
> > can some one let me know if my changes are correct?
> >
> > -Sayali
>

hi Tom,

Yes thats the setting in PINSELx for MII.

what else needs to be done apart from these settings?

thanks in advance.

-Sayali

_________________________________________

--- In l..., "Tom Tang" wrote:
>
> What's the setting in PINSELx for MII?
> PINSEL2 = 0x55555555; /* selects P1[15:0] */
> PINSEL3 = 0x00000005; /* selects P1[17:16] */
>
> best,
> Tom
> --- In l..., "sayali" wrote:
> >
> >
> >
> > --- In l..., "sayali" wrote:
> > >
> > > Hello all,
> > >
> > > I already have a code ready for Ethernet configuration in RMII mode.
> > > It is working fine.
> > >
> > > What i need to do is use the Ethernet in MII mode.
> > >
> > > Following are the changes which i have made. but it doesnt seem to work.
> > > --------------------------
> > > Original for RMII:
> > > /* Initialize MAC control registers. */
> > > MAC_MAC1 = MAC1_PASS_ALL;
> > > MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
> > > MAC_MAXF = ETH_MAX_FLEN;
> > > MAC_CLRT = CLRT_DEF;
> > > MAC_IPGR = IPGR_DEF;
> > >
> > > /* Enable Reduced MII interface. */
> > > MAC_COMMAND = CR_RMII | CR_PASS_RUNT_FRM;
> > >
> > >
> > >
> > >
> > > For MII :
> > >
> > > /* Initialize MAC control registers. */
> > > MAC_MAC1 = MAC1_PASS_ALL;
> > > MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
> > > MAC_MAXF = ETH_MAX_FLEN;
> > > MAC_CLRT = CLRT_DEF;
> > > MAC_IPGR = IPGR_DEF;
> > >
> > > /* Enable and Reset MII interface. */
> > > MAC_MCFG = MCFG_RES_MII; //Reset MII
> > > for (tout = 100; tout; tout--); //delay after reset
> > > MAC_MCFG = MCFG_DIV10_MII; //Div clk by 10
> > > MAC_COMMAND = MII_MODE //i.e. 0x00000000 - MII mode selected
> > > -------------------------------
> > >
> > > can some one let me know if my changes are correct?
> > >
> > > -Sayali
> > >
>

Hi Sayali,

I am also working with Ethernet at the Moment but i'm using RMII
interface.

did you do the modify of tcp/ip Stack or (uIP-Stack) in your programm?
And if yes, can you get any packets?

Unfortunately i always have a problem with this :/

Best,

Tedy
--- In l..., "sayali" wrote:
>
> Hello all,
>
> I already have a code ready for Ethernet configuration in RMII mode.
> It is working fine.
>
> What i need to do is use the Ethernet in MII mode.
>
> Following are the changes which i have made. but it doesnt seem to
work.
> --------------------------
> Original for RMII:
> /* Initialize MAC control registers. */
> MAC_MAC1 = MAC1_PASS_ALL;
> MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
> MAC_MAXF = ETH_MAX_FLEN;
> MAC_CLRT = CLRT_DEF;
> MAC_IPGR = IPGR_DEF;
>
> /* Enable Reduced MII interface. */
> MAC_COMMAND = CR_RMII | CR_PASS_RUNT_FRM;
> For MII :
>
> /* Initialize MAC control registers. */
> MAC_MAC1 = MAC1_PASS_ALL;
> MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
> MAC_MAXF = ETH_MAX_FLEN;
> MAC_CLRT = CLRT_DEF;
> MAC_IPGR = IPGR_DEF;
>
> /* Enable and Reset MII interface. */
> MAC_MCFG = MCFG_RES_MII; //Reset MII
> for (tout = 100; tout; tout--); //delay after reset
> MAC_MCFG = MCFG_DIV10_MII; //Div clk by 10
> MAC_COMMAND &= ~0x00000200; //MII mode selected
> -------------------------------
>
> can some one let me know if my changes are correct?
>
> -Sayali
>

Do you have the jumpers on your board to support both RMII and MII? The H/W needs to be modified slightly as well. What's the frequency on X1 and RXCLK? For RMII, it's 50Mhz, for MII, it's cut by half. There are many ref. design and schematics for DP83848H.

best,
Tom
--- In l..., "sayali" wrote:
>
> hi Tom,
>
> Yes thats the setting in PINSELx for MII.
>
> what else needs to be done apart from these settings?
>
> thanks in advance.
>
> -Sayali
>
> _________________________________________
>
> --- In l..., "Tom Tang" wrote:
> >
> > What's the setting in PINSELx for MII?
> > PINSEL2 = 0x55555555; /* selects P1[15:0] */
> > PINSEL3 = 0x00000005; /* selects P1[17:16] */
> >
> > best,
> > Tom
> >
> >
> > --- In l..., "sayali" wrote:
> > >
> > >
> > >
> > > --- In l..., "sayali" wrote:
> > > >
> > > > Hello all,
> > > >
> > > > I already have a code ready for Ethernet configuration in RMII mode.
> > > > It is working fine.
> > > >
> > > > What i need to do is use the Ethernet in MII mode.
> > > >
> > > > Following are the changes which i have made. but it doesnt seem to work.
> > > > --------------------------
> > > > Original for RMII:
> > > > /* Initialize MAC control registers. */
> > > > MAC_MAC1 = MAC1_PASS_ALL;
> > > > MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
> > > > MAC_MAXF = ETH_MAX_FLEN;
> > > > MAC_CLRT = CLRT_DEF;
> > > > MAC_IPGR = IPGR_DEF;
> > > >
> > > > /* Enable Reduced MII interface. */
> > > > MAC_COMMAND = CR_RMII | CR_PASS_RUNT_FRM;
> > > >
> > > >
> > > >
> > > >
> > > > For MII :
> > > >
> > > > /* Initialize MAC control registers. */
> > > > MAC_MAC1 = MAC1_PASS_ALL;
> > > > MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
> > > > MAC_MAXF = ETH_MAX_FLEN;
> > > > MAC_CLRT = CLRT_DEF;
> > > > MAC_IPGR = IPGR_DEF;
> > > >
> > > > /* Enable and Reset MII interface. */
> > > > MAC_MCFG = MCFG_RES_MII; //Reset MII
> > > > for (tout = 100; tout; tout--); //delay after reset
> > > > MAC_MCFG = MCFG_DIV10_MII; //Div clk by 10
> > > > MAC_COMMAND = MII_MODE //i.e. 0x00000000 - MII mode selected
> > > > -------------------------------
> > > >
> > > > can some one let me know if my changes are correct?
> > > >
> > > > -Sayali
> > > >
> > >
>