<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: ENET on K70 in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691998#M42635</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you.I've successfully ported FNET stack with a great support of&amp;nbsp; Andrey.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 05 Jul 2017 06:06:53 GMT</pubDate>
    <dc:creator>john71</dc:creator>
    <dc:date>2017-07-05T06:06:53Z</dc:date>
    <item>
      <title>ENET on K70</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691993#M42630</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have TWR-K70F120M + TWR-SER.&amp;nbsp;&lt;/P&gt;&lt;P&gt;The question - how to configure ENET and PHY?&lt;/P&gt;&lt;P&gt;The PHY on TWR-SER board is KSZ8041NL. I did the following settins&lt;/P&gt;&lt;P&gt;void enet_start_mii(int phy_addr)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int periph_clk_mhz = 60;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int data;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*FSL: start MII interface*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_init(0, periph_clk_mhz);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Can we talk to the PHY? */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data = 0xffff;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read( 0, phy_addr, PHY_PHYIDR1, &amp;amp;data);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } while( data == 0xffff );&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Start auto negotiate. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_write( 0, phy_addr, PHY_BMCR, (PHY_BMCR_AN_RESTART | PHY_BMCR_AN_ENABLE) );&amp;nbsp; &lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is it enough for PHY?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For ENET -&amp;nbsp; I'm not sure how to configure the module. I can configure pins&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Enable the ENET clock. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC2 |= SIM_SCGC2_ENET1_MASK;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTB_PCR0&amp;nbsp; = PORT_PCR_MUX(4);//GPIO;//RMII0_MDIO/MII0_MDIO&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTB_PCR1&amp;nbsp; = PORT_PCR_MUX(4);//GPIO;//RMII0_MDC/MII0_MDC&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #if configUSE_MII_MODE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR14 = PORT_PCR_MUX(4);//RMII0_CRS_DV/MII0_RXDV&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PORTA_PCR5&amp;nbsp; = PORT_PCR_MUX(4);//RMII0_RXER/MII0_RXER&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR12 = PORT_PCR_MUX(4);//RMII0_RXD1/MII0_RXD1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR13 = PORT_PCR_MUX(4);//RMII0_RXD0/MII0_RXD0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR15 = PORT_PCR_MUX(4);//RMII0_TXEN/MII0_TXEN&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR16 = PORT_PCR_MUX(4);//RMII0_TXD0/MII0_TXD0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR17 = PORT_PCR_MUX(4);//RMII0_TXD1/MII0_TXD1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR11 = PORT_PCR_MUX(4);//MII0_RXCLK&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR25 = PORT_PCR_MUX(4);//MII0_TXCLK&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR9&amp;nbsp; = PORT_PCR_MUX(4);//MII0_RXD3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR10 = PORT_PCR_MUX(4);//MII0_RXD2 &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR28 = PORT_PCR_MUX(4);//MII0_TXER&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR24 = PORT_PCR_MUX(4);//MII0_TXD2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR26 = PORT_PCR_MUX(4);//MII0_TXD3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR27 = PORT_PCR_MUX(4);//MII0_CRS&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR29 = PORT_PCR_MUX(4);//MII0_COL&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR14 = PORT_PCR_MUX(4);//RMII0_CRS_DV/MII0_RXDV&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PORTA_PCR5&amp;nbsp; = PORT_PCR_MUX(4);//RMII0_RXER/MII0_RXER&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR12 = PORT_PCR_MUX(4);//RMII0_RXD1/MII0_RXD1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR13 = PORT_PCR_MUX(4);//RMII0_RXD0/MII0_RXD0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR15 = PORT_PCR_MUX(4);//RMII0_TXEN/MII0_TXEN&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR16 = PORT_PCR_MUX(4);//RMII0_TXD0/MII0_TXD0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR17 = PORT_PCR_MUX(4);//RMII0_TXD1/MII0_TXD1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endif&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But I don't know how to configure the registers.&lt;BR /&gt;The code provided in enet.c - void enet_init (ENET_CONFIG *config) - seems to be very basic and generic. I'd like to see some good driver for ENET module.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Jun 2017 09:07:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691993#M42630</guid>
      <dc:creator>john71</dc:creator>
      <dc:date>2017-06-20T09:07:53Z</dc:date>
    </item>
    <item>
      <title>Re: ENET on K70</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691994#M42631</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After some research I came wit the following setup function.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void ENET_Init(ENET_InitTypeDef enet_init_struct)&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int usData;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable the ENET clock. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SCGC2 |= SIM_SCGC2_ENET1_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*FSL: allow concurrent access to MPU controller. Example: ENET uDMA to SRAM, otherwise bus error*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MPU_CESR = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_BDInit();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_ECR = ENET_ECR_RESET_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( usData = 0; usData &amp;lt; 10; usData++ )&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm( "NOP" );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_init(0, 60);&amp;nbsp; //bus freq = 60Mhz&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #if USER_IRQs_ENA&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; enable_irq(INT_ENET_Transmit); //ENET_Transmit_IRQn&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; enable_irq(INT_ENET_Receive);&amp;nbsp; //ENET_Receive_IRQn&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; enable_irq(INT_ENET_Error);&amp;nbsp; //ENET_Error_IRQn&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endif &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(enet_init_struct.ENET_TxIsr != NULL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_ISR[ENET_TXF_ISR] = enet_init_struct.ENET_TxIsr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(enet_init_struct.ENET_RxIsr != NULL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_ISR[ENET_RXF_ISR] = enet_init_struct.ENET_RxIsr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(enet_init_struct.ENET_1588Isr != NULL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_ISR[ENET_1588_ISR] = enet_init_struct.ENET_1588Isr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(enet_init_struct.ENET_ErrIsr != NULL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_ISR[ENET_ERR_ISR] = enet_init_struct.ENET_ErrIsr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTB_PCR0&amp;nbsp; = PORT_PCR_MUX(4);//GPIO;//RMII0_MDIO/MII0_MDIO&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTB_PCR1&amp;nbsp; = PORT_PCR_MUX(4);//GPIO;//RMII0_MDC/MII0_MDC&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #if MII_MODE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR14 = PORT_PCR_MUX(4);//RMII0_CRS_DV/MII0_RXDV&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PORTA_PCR5&amp;nbsp; = PORT_PCR_MUX(4);//RMII0_RXER/MII0_RXER&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR12 = PORT_PCR_MUX(4);//RMII0_RXD1/MII0_RXD1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR13 = PORT_PCR_MUX(4);//RMII0_RXD0/MII0_RXD0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR15 = PORT_PCR_MUX(4);//RMII0_TXEN/MII0_TXEN&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR16 = PORT_PCR_MUX(4);//RMII0_TXD0/MII0_TXD0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR17 = PORT_PCR_MUX(4);//RMII0_TXD1/MII0_TXD1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR11 = PORT_PCR_MUX(4);//MII0_RXCLK&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR25 = PORT_PCR_MUX(4);//MII0_TXCLK&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR9&amp;nbsp; = PORT_PCR_MUX(4);//MII0_RXD3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR10 = PORT_PCR_MUX(4);//MII0_RXD2 &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR28 = PORT_PCR_MUX(4);//MII0_TXER&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR24 = PORT_PCR_MUX(4);//MII0_TXD2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR26 = PORT_PCR_MUX(4);//MII0_TXD3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR27 = PORT_PCR_MUX(4);//MII0_CRS&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR29 = PORT_PCR_MUX(4);//MII0_COL&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #else&amp;nbsp; //RMII MODE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR14 = PORT_PCR_MUX(4);//RMII0_CRS_DV/MII0_RXDV&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PORTA_PCR5&amp;nbsp; = PORT_PCR_MUX(4);//RMII0_RXER/MII0_RXER&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR12 = PORT_PCR_MUX(4);//RMII0_RXD1/MII0_RXD1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR13 = PORT_PCR_MUX(4);//RMII0_RXD0/MII0_RXD0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR15 = PORT_PCR_MUX(4);//RMII0_TXEN/MII0_TXEN&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR16 = PORT_PCR_MUX(4);//RMII0_TXD0/MII0_TXD0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR17 = PORT_PCR_MUX(4);//RMII0_TXD1/MII0_TXD1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endif&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_Delay( ENET_LINK_DELAY );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usData = 0xffff;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read(0, CFG_PHY_ADDRESS, PHY_PHYIDR1, &amp;amp;usData );&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } while( usData == 0xffff );&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #ifdef ENET_PRINT_PHY_INFO&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read(0, CFG_PHY_ADDRESS, PHY_PHYIDR2, &amp;amp;usData ); &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read(0, CFG_PHY_ADDRESS, PHY_ANLPAR, &amp;amp;usData );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read(0, CFG_PHY_ADDRESS, PHY_ANLPARNP, &amp;amp;usData );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read(0, CFG_PHY_ADDRESS, PHY_PHYSTS, &amp;amp;usData );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read(0, CFG_PHY_ADDRESS, PHY_MICR, &amp;amp;usData );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read(0, CFG_PHY_ADDRESS, PHY_MISR, &amp;amp;usData );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endif &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Start auto negotiate. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_write( 0, CFG_PHY_ADDRESS, PHY_BMCR, (PHY_BMCR_AN_RESTART | PHY_BMCR_AN_ENABLE) );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //for debug&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read(0, CFG_PHY_ADDRESS, PHY_BMCR, &amp;amp;usData );&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_Delay( ENET_LINK_DELAY );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read(0, CFG_PHY_ADDRESS, PHY_BMSR, &amp;amp;usData );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } while( !( usData &amp;amp; PHY_BMSR_AN_COMPLETE ) );&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //#ifdef ENET_PRINT_PHY_INFO&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read(0, CFG_PHY_ADDRESS, PHY_STATUS, &amp;amp;usData ); &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //#endif&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_IALR = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_IAUR = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_GALR = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_GAUR = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; enet_set_address(0, enet_init_struct.ENET_MacAddress);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_RCR = ENET_RCR_MAX_FL(CFG_ENET_MAX_PACKET_SIZE) | ENET_RCR_MII_MODE_MASK | ENET_RCR_CRCFWD_MASK | ENET_RCR_RMII_MODE_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #if RMII_MODE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_RCR/*(ch)*/ |= ENET_RCR_RMII_MODE_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*only set speed in RMII mode*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( config-&amp;gt;speed == MII_10BASET )&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_RCR/*(ch)*/ |= ENET_RCR_RMII_10T_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endif /*no need to configure MAC MII interface*/ &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_TCR = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( usData &amp;amp; PHY_DUPLEX_STATUS )&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_RCR &amp;amp;= (uint32)~ENET_RCR_DRT_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_TCR |= ENET_TCR_FDEN_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_RCR |= ENET_RCR_DRT_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_TCR &amp;amp;= (uint32)~ENET_TCR_FDEN_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( usData &amp;amp; PHY_SPEED_STATUS )&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //10Mbps&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_RCR |= ENET_RCR_RMII_10T_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_ECR = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_MRBR = (unsigned short) CFG_ENET_RX_BUFFER_SIZE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_RDSR = ( uint32 ) &amp;amp;( xENETRxDescriptors[ 0 ] );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_TDSR = ( uint32 ) xENETTxDescriptors;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_EIR = ( uint32 ) -1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_EIMR = 0 &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | ENET_EIMR_RXF_MASK &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | ENET_EIMR_TXF_MASK &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | ENET_EIMR_UN_MASK | ENET_EIMR_RL_MASK | ENET_EIMR_LC_MASK | ENET_EIMR_BABT_MASK | ENET_EIMR_BABR_MASK | ENET_EIMR_EBERR_MASK&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | ENET_EIMR_RXB_MASK&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_ECR |= ENET_ECR_ETHEREN_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_RDAR = ENET_RDAR_RDAR_MASK;&lt;BR /&gt;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It stuck at&amp;nbsp;&lt;/P&gt;&lt;P&gt;do&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENET_Delay( ENET_LINK_DELAY );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mii_read(0, CFG_PHY_ADDRESS, PHY_BMSR, &amp;amp;usData );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } while( !( usData &amp;amp; PHY_BMSR_AN_COMPLETE ) );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But in the previous line mii_read(0, CFG_PHY_ADDRESS, PHY_BMCR, &amp;amp;usData );&amp;nbsp; I get the correct value.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jun 2017 10:14:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691994#M42631</guid>
      <dc:creator>john71</dc:creator>
      <dc:date>2017-06-21T10:14:42Z</dc:date>
    </item>
    <item>
      <title>Re: ENET on K70</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691995#M42632</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The TWR-SER Ethernet PHY KSZ8041NL supports both RMII and MII interface, while the TWR-K70F120M board doesn't connect MII pins to PCI interface. Please check below TWR-K70F120M board schematics with MII pins "DNP":&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/25329i20AF6FA0646D9B75/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;So, the TWR-K70F120M board doesn't support MII interface with TWR-SER board.&lt;/P&gt;&lt;P&gt;Thank you for the attention.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Ma Hui&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Jul 2017 05:36:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691995#M42632</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2017-07-03T05:36:19Z</dc:date>
    </item>
    <item>
      <title>Re: ENET on K70</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691996#M42633</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I see. Actually I set jumpers for RMII mode.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Jul 2017 06:11:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691996#M42633</guid>
      <dc:creator>john71</dc:creator>
      <dc:date>2017-07-03T06:11:56Z</dc:date>
    </item>
    <item>
      <title>Re: ENET on K70</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691997#M42634</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would recommend customer to refer &lt;A href="http://www.nxp.com/products/software-and-tools/run-time-software/mqx-software-solutions/mqx-real-time-operating-system-rtos/mqx-classic-software-solutions:MQX"&gt;NXP MQX Software&lt;/A&gt; example about TWR-K70F120M RMII Ethernet application.&lt;/P&gt;&lt;P&gt;And the &lt;A href="http://fnet.sourceforge.net/"&gt;FNET TCP/IP stack&lt;/A&gt; also provides TWR-K70F120M RMII example application demo.&lt;/P&gt;&lt;P&gt;Please check those examples about Ethernet PHY initialization code.&lt;/P&gt;&lt;P&gt;Wish it helps.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Ma Hui&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Jul 2017 08:10:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691997#M42634</guid>
      <dc:creator>Hui_Ma</dc:creator>
      <dc:date>2017-07-03T08:10:46Z</dc:date>
    </item>
    <item>
      <title>Re: ENET on K70</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691998#M42635</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you.I've successfully ported FNET stack with a great support of&amp;nbsp; Andrey.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Jul 2017 06:06:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ENET-on-K70/m-p/691998#M42635</guid>
      <dc:creator>john71</dc:creator>
      <dc:date>2017-07-05T06:06:53Z</dc:date>
    </item>
  </channel>
</rss>

