亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? etherinit.c

?? MC9S12NE64串口與網絡通信源代碼
?? C
字號:

/*****************************************************************************
 *
 * File Name     : etherinit.c
 *
 * DESCRIPTION   : Low level initialization for EPHY and EMAC
 *
 * Description   : Ethernet Init
 *
 * Got from FREESCALE 
 * Modified by houlei @2004.10.10
 *****************************************************************************/

#include "MOTTYPES.h"
#include "etherinit.h"
#include "ne64api.h"
#include "ethernet.h"
#include "IO_Map.H"

extern eth_HwAddress sed_lclEthAddr;
extern in_HwAddress  sin_lclINAddr;
extern eth_HwAddress sed_ethBcastAddr;
extern tU32 myip;

extern tU16 gotxflowc;			/**<Global Variable For Determination of
                                      * Flow Control Packets are sent in Full Duplex
                                      * defined in "main.c" */

extern tU08	gotlink;            /**<Global Variable For Determination if
                                      * link is active (1=active)
                                      * defined in "main.c" */
                                      
void EtherInit()
{

  tU16 myctr; 								//generic counter variable
  tU16 mymrdata, mymwdata;                  //temp variable for MII read/write data
  tU16 angotduplex, 				    	//Auto negotiation control variable
       etypecontrol, 				        //Ethertype filter control variable
       addressfiltercontrol;	            //address filter control variable


  gotlink = 0;                              //No link present

  //=========================
  //PHY Inits	 - enable EPHY module	and EPHY Interrupt
  //=========================

  //Write PHY address before EPHYEN is set; this will latch EPHY register 14 on reset
  //address PHY 0 (default address of internal PHY); PHYADD0 | PHYADD1 | PHYADD2 | PHYADD3| PHYADD4
  EPHYCTL1 = PHY_ADDRESS;	 //Modify in "etherinit.h"

  //Enable EPHY module with PHY clocks disabled
  //Do not trun on PHY clocks untill both EMAC and EPHY are completely setup (see Below)
  EPHYCTL0 = EPHYCTL0_DIS100_MASK | EPHYCTL0_DIS10_MASK;
#if  AUTO_NEG
  //Enable auto_neg at start-up
  EPHYCTL0 = EPHYCTL0 & (~EPHYCTL0_ANDIS_MASK);
#else				//ELSE AUTO_NEG
  //Disable auto_neg at start-up
  EPHYCTL0 = EPHYCTL0 | EPHYCTL0_ANDIS_MASK;
#endif	    //AUTO_NEG

  //Enable EPHY module
  EPHYCTL0 = EPHYCTL0_EPHYEN_MASK | EPHYCTL0;      //Enable PHY

  //Enable EPHY LEDs and Interrupts
  EPHYCTL0 = EPHYCTL0 | (EPHYCTL0_LEDEN_MASK | EPHYCTL0_EPHYIEN_MASK );
 // while(!EPHYCTL0_LEDEN);                                             
  //DELAY, Delay staret-up
  for (myctr=0x18000; myctr >0; myctr--);                                            


  //=========================
  //EMAC Inits
  //========================

  //We do not duplex yet since auto_neg is not complete so use half as default
  angotduplex = 0; 				 //Auto negotiation control variable

  //Configure RX mode based on EtherInit() define settings
  addressfiltercontrol = 0;		 //address filter control variable
#if (BRODC_REJ)
    addressfiltercontrol = addressfiltercontrol | BCREJ;
#endif
#if (CON_MULTIC)
    addressfiltercontrol = addressfiltercontrol | CONMC;
#endif
#if (PROM_MODE)
    addressfiltercontrol = addressfiltercontrol | PROM;
#endif

  //Configure Ethertype based on EtherInit() define settings
  etypecontrol = 0;				 //Ethertype filter control variable
#if (ETYPE_PET)
    etypecontrol = etypecontrol | T_PET;
#endif
#if (ETYPE_EMW)
    etypecontrol = etypecontrol | T_EMW;
#endif
#if (ETYPE_IPV6)
    etypecontrol = etypecontrol | T_IPV6;
#endif
#if (ETYPE_ARP)
    etypecontrol = etypecontrol | T_ARP;
#endif
#if (ETYPE_IPV4)
    etypecontrol = etypecontrol | T_IPV4;
#endif
#if (ETYPE_IEEE)
    etypecontrol = etypecontrol | T_IEEE;
#endif
#if (ETYPE_ALL)
    etypecontrol = etypecontrol & T_ALL;
#endif

  //Initialize EMAC including MII management Interface
  EtherOpen(MII_MDCSEL(BUS_CLOCK),
            BUFMAP,                   // defined in 'emacfifocfg.h'
            RX_MAX_FL,                // RX max packet lenght
            (void *)sed_lclEthAddr,        // defined in 'address.h'
            etypecontrol,                // program ethertype fixed filter target */
            ETYPE_PRG,                // program prgramable ethertype value related to T_PET */
#if XFLOWC	        //this should be only enabled in auto negotiation if pause resolution confirms this (full duplex only)
            RFCE | addressfiltercontrol,
#else                       //ELSE XFLOWC
            addressfiltercontrol,
#endif						//XFLOWC

#if  AUTO_NEG
                                    //Configure Net Control: Duplex, external PHY, loopback, wait
            angotduplex		        //Half Duplex operation default until auto_neg is complete
#else			                   //ELSE AUTO_NEG (manual speed duplex settings)
#if FULL_DUPLEX
            NETCT_FDX               // full duplex operation */
#else                               //ELSE FULL_DUPLEX
            angotduplex             //Half Duplex operation */
#endif	                            //FULL_DUPLEX
#endif		                        //AUTO_NEG
            );

  //Enable Select EMAC interrrupt: 
  IMASK = IMASK_TXCIE_MASK | IMASK_ECIE_MASK | IMASK_LCIE_MASK;
#if (!RX_POLL_MODE)    //USE RX INTERRUPTS
  IMASK = IMASK | IMASK_RXACIE_MASK |  IMASK_RXBCIE_MASK;
#endif  // RX_POLL_MODE
  IMASK = IMASK | IMASK_RXAOIE_MASK|IMASK_RXBOIE_MASK | IMASK_RXEIE_MASK;				//Buffer Overruns & RX error
  IMASK = IMASK | IMASK_BREIE_MASK;             //Babbling Error		
  IMASK = IMASK | IMASK_RFCIE_MASK;				//RX flow Control								  


  //Transmit pause initialization: set bit and pause time  duration
#if XFLOWC

#if AUTO_NEG
//   EtherPause(1,PAUSE_TIME);			 // PAUSE_TIME defined in "etherinit.h"
#endif	  //AUTO_NEG

#if FULL_DUPLEX
   gotxflowc = 1;
//   EtherPause(1,PAUSE_TIME);
#endif	  //FULL_DUPLEX

#endif		//XFLOWC

//===============================================
// Configure PHY through EMAC MII Serial Management now that MII clock is set (address PHY is 0x00)
//===============================================
   //READ  PHY_REG_IDX: PHY idenfitication which is composed from OUI and make/model/revision of PHY
#if READ_PHY_ID
   //read PHY_REG_ID1
   while ( !(MIIread(PHY_ADDRESS, PHY_REG_ID1 , &mymrdata)) );

   //read PHY_REG_ID2 - should be:
   while ( !(MIIread(PHY_ADDRESS, PHY_REG_ID2 , &mymrdata))  );

   //read PHY_REG_ADDR - should be: 0x00
   while ( !(MIIread(PHY_ADDRESS, PHY_REG_ADDR , &mymrdata)) );
#endif


//Read PHY_REG_ANAR then configure the PHY Link abilities for auto_negoigation
#if AUTO_NEG
   while ( !(MIIread(PHY_ADDRESS, PHY_REG_ANAR, &mymrdata)) );

//Configure Flow Control PHY Link abilities advertisement
    mymwdata = mymrdata;
#if XFLOWC
   mymwdata = mymwdata | PHY_R4_FC;
#endif //#if XFLOWC

//Configure Speed and Duplex PHY Link abilities advertisement
#if (~HALF100 & 1)
    mymwdata = mymwdata & ~PHY_R4_100H;
#endif
#if (~HALF10  & 1)
    mymwdata = mymwdata & ~PHY_R4_10H;
#endif
#if (~FULL100  & 1)
    mymwdata = mymwdata & ~PHY_R4_100F;
#endif
#if (~FULL10  & 1)
    mymwdata = mymwdata & ~PHY_R4_10F;
#endif

   //Write PHY_REG_ANAR to configure PHY Link abilities advertisement
   while ( !(MIIwrite(PHY_ADDRESS, PHY_REG_ANAR, mymwdata  ))    );

#endif //#if AUTO_NEG

   //Enable PHY interrupts in Reg 16 (PHY Interrupt Control Register)
	 //Set PHY Interrupt Control Register
   mymwdata = PHY_R16_ACKIE | PHY_R16_PRIE | PHY_R16_LCIE | PHY_R16_ANIE;
   mymwdata = mymwdata | PHY_R16_PDFIE | PHY_R16_RFIE | PHY_R16_JABIE;

   
   while ( ! (MIIwrite(PHY_ADDRESS, PHY_REG_IR, mymwdata))   );                       

//===============================================
// Start up EPHY clocks (PLLs)
//===============================================

   //Read PHY Control Register 0
   while ( !(MIIread(PHY_ADDRESS, PHY_REG_CR, &mymrdata)) );


//Start up EPHY in auto negotiation
#if  AUTO_NEG

	 //Start PHY PLLs
     EPHYCTL0 = EPHYCTL0  & ~(EPHYCTL0_DIS100_MASK | EPHYCTL0_DIS10_MASK); //Let PHY PLLs be determined by PHY

//Start up EPHY without auto negotiation (CONFIGURE MANUALLY- SPEED AND DUPLEX)
#else	 //NO AUTO_NEG

//Set Duplex MANUALLY
#if FULL_DUPLEX
   mymwdata = mymrdata | PHY_R0_DPLX;		  //Set Full Duplex
#else                   //ELSE FULL_DUPLEX
   mymwdata = mymrdata & ~PHY_R0_DPLX;    //Set Half Duplex
#endif	                //FULL_DUPLEX

//Set Speed MANUALLY
#if SPEED100
   mymwdata = mymwdata | PHY_R0_DR;		//Set SPEED100
#else                   //ELSE SPEED100
   mymwdata = mymwdata & ~PHY_R0_DR;		//Set SPEED10
#endif	                //SPEED100

   //Write Config Register to set manually configure speed and duplex
   while ( !(MIIwrite(PHY_ADDRESS, PHY_REG_CR, mymwdata ))    );

	 //Start EPHY PLLs
   EPHYCTL0 = EPHYCTL0  & ~(EPHYCTL0_DIS100_MASK | EPHYCTL0_DIS10_MASK); //Let PHY PLLs be determined by PHY
    

#endif			      //AUTO_NEG

}

//***when used as a ethernet interface ,you have to config these****
//********
//******************************************************************
void init_addr(void){    

    sed_lclEthAddr[0]=0x12;
    sed_lclEthAddr[1]=0x34;
    sed_lclEthAddr[2]=0x56;
    sed_lclEthAddr[3]=0x78;
    sed_lclEthAddr[4]=0x9A;
    sed_lclEthAddr[5]=0xCC;
    
    sed_ethBcastAddr[0]=0xFF;
    sed_ethBcastAddr[1]=0xFF;
    sed_ethBcastAddr[2]=0xFF;
    sed_ethBcastAddr[3]=0xFF;
    sed_ethBcastAddr[4]=0xFF;
    sed_ethBcastAddr[5]=0xFF;
	
    sin_lclINAddr = myip;      //active when use changeip()

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲自拍偷拍av| 中文字幕一区三区| 欧美日韩一区二区三区四区| 成人av影视在线观看| 国产精品123区| 国产精品亚洲专一区二区三区 | 亚洲人吸女人奶水| 亚洲欧洲精品天堂一级| 亚洲视频精选在线| 一区二区欧美国产| 肉丝袜脚交视频一区二区| 视频精品一区二区| 国内精品久久久久影院一蜜桃| 美女一区二区久久| 国产麻豆视频精品| 国产69精品久久777的优势| 成人精品视频一区二区三区 | 91麻豆精品国产| 日韩一区二区三区精品视频| 精品1区2区在线观看| 国产色产综合色产在线视频| 亚洲欧洲日韩一区二区三区| 一区二区久久久久| 美女一区二区在线观看| 粉嫩av一区二区三区粉嫩 | 欧美日韩久久久久久| 日韩一卡二卡三卡国产欧美| 久久久久久久精| 一区二区三区在线不卡| 蜜臀久久99精品久久久画质超高清| 国产乱一区二区| 色就色 综合激情| 精品国产人成亚洲区| 亚洲欧洲在线观看av| 日精品一区二区三区| 成人免费黄色在线| 日韩欧美一区二区三区在线| 中文字幕一区二区三区精华液 | 三级成人在线视频| 成人黄色小视频| 欧美精品一二三| 中文一区二区完整视频在线观看| 性欧美大战久久久久久久久| 国产精品99久久久久久久女警 | 久久成人综合网| 色女孩综合影院| 久久久美女毛片| 亚洲第一二三四区| eeuss鲁片一区二区三区在线观看| 51久久夜色精品国产麻豆| 国产精品欧美久久久久一区二区| 天堂一区二区在线| 99国产精品国产精品毛片| 欧美成人a∨高清免费观看| 亚洲精品国产成人久久av盗摄| 国产一二三精品| 日韩午夜小视频| 午夜精品影院在线观看| 色综合中文字幕国产 | 欧美男生操女生| 亚洲天堂精品在线观看| 国产91对白在线观看九色| 日韩三级电影网址| 日韩二区三区四区| 欧美亚洲综合另类| 艳妇臀荡乳欲伦亚洲一区| 99久久综合狠狠综合久久| 中文字幕欧美国产| 高清不卡在线观看| 中文字幕不卡一区| 丁香啪啪综合成人亚洲小说 | 色综合久久中文综合久久97| 国产欧美日韩另类一区| 国产在线麻豆精品观看| 精品少妇一区二区三区| 捆绑变态av一区二区三区| 日韩欧美一级片| 麻豆成人久久精品二区三区红 | 国产综合久久久久久鬼色| 欧美一区二区在线视频| 男女性色大片免费观看一区二区| 欧美日韩国产首页| 日韩精品免费专区| 国产精品久久久久久久久免费丝袜 | 国产精品亚洲专一区二区三区| 欧美v国产在线一区二区三区| 免费观看在线综合| 亚洲精品一区在线观看| 久久爱另类一区二区小说| 日韩一区二区免费在线观看| 日本视频免费一区| 日韩欧美视频在线| 国产尤物一区二区在线| 久久久久99精品一区| 成人av综合一区| 亚洲一区欧美一区| 91精品国产综合久久国产大片| 蜜桃视频在线观看一区| 国产视频在线观看一区二区三区 | 亚洲成人av一区| 日韩欧美黄色影院| 国产精品资源在线看| 国产精品久久久久久久久快鸭 | 欧美老肥妇做.爰bbww| 青青草一区二区三区| 久久久精品影视| 色诱亚洲精品久久久久久| 日韩福利电影在线| 亚洲欧美综合网| 欧美一区日韩一区| 99麻豆久久久国产精品免费优播| 亚洲va中文字幕| 中文字幕电影一区| 91精品国模一区二区三区| 成人开心网精品视频| 天堂av在线一区| 中文字幕在线播放不卡一区| 日韩一区二区三区在线| 99久久综合99久久综合网站| 久久激情五月婷婷| 一区二区三区四区不卡在线| 精品国产精品网麻豆系列| 在线观看视频一区二区| 国产成人精品免费网站| 免费精品视频最新在线| 国产一区二区三区在线观看免费| 亚洲欧美另类久久久精品| 精品久久五月天| 欧美精品一二三四| 在线视频中文字幕一区二区| 国产一区二区三区观看| 三级亚洲高清视频| 亚洲国产精品久久人人爱| 欧美激情一二三区| 精品日韩99亚洲| 欧美一级欧美三级在线观看| 91福利资源站| 色拍拍在线精品视频8848| 成人一区二区视频| 国产资源在线一区| 麻豆国产精品777777在线| 天堂va蜜桃一区二区三区漫画版| 中文字幕一区二区三区视频| 国产精品丝袜在线| 久久美女高清视频| 久久久久国产一区二区三区四区| 日韩欧美一二三区| 精品三级在线看| 欧美电影免费观看完整版| 日韩一级完整毛片| 欧美zozo另类异族| 日韩色在线观看| 欧美变态凌虐bdsm| 欧美精品一区二区三区很污很色的 | 国产精品911| 国产在线精品国自产拍免费| 国产乱对白刺激视频不卡| 国产麻豆精品在线| 国产福利不卡视频| 91日韩精品一区| 欧美最新大片在线看| 色av综合在线| 欧美日韩小视频| 日韩精品一区二| 国产精品人人做人人爽人人添| 国产精品久久久久永久免费观看 | 亚洲成a人在线观看| 亚洲一区二区三区免费视频| 亚洲1区2区3区视频| 日本va欧美va精品发布| 国产精品影视在线| 99re这里只有精品视频首页| 色综合咪咪久久| 欧美一级久久久| 日本一区二区三区四区| 亚洲精选视频免费看| 日韩电影在线免费| 粉嫩av亚洲一区二区图片| 91福利精品视频| 欧美tickling网站挠脚心| 国产精品人成在线观看免费| 亚洲国产精品久久不卡毛片| 精品一二三四区| 色综合久久综合中文综合网| 日韩三区在线观看| 自拍偷拍欧美激情| 久久精品二区亚洲w码| 99热这里都是精品| 欧美大胆一级视频| 亚洲色图一区二区三区| 久久精品国产99国产| www.久久精品| 亚洲精品在线免费观看视频| 水野朝阳av一区二区三区| 国产乱码精品1区2区3区| 欧美午夜精品久久久久久超碰| 精品久久国产字幕高潮| 一区二区三区产品免费精品久久75| 天堂一区二区在线| 日本精品一级二级|