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

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

?? dm9000a.c

?? nios ii sopc關于ISP1362和DM9000A的工程
?? C
字號:
#include <stdio.h>
#include "DM9000A.H"
#include "basic_io.h"
//-------------------------------------------------------------------------
void iow(unsigned int reg, unsigned int data)
{
  IOWR(DM9000A_BASE,IO_addr,reg);
  usleep(STD_DELAY);
  IOWR(DM9000A_BASE,IO_data,data);
}
//-------------------------------------------------------------------------
unsigned int ior(unsigned int reg)
{
  IOWR(DM9000A_BASE,IO_addr,reg);
  usleep(STD_DELAY);
  return IORD(DM9000A_BASE,IO_data);
}
//-------------------------------------------------------------------------
void phy_write (unsigned int reg, unsigned int value)
{ 
  /* set PHY register address into EPAR REG. 0CH */
  iow(0x0C, reg | 0x40);              /* PHY register address setting, and DM9000_PHY offset = 0x40 */
  
  /* fill PHY WRITE data into EPDR REG. 0EH & REG. 0DH */
  iow(0x0E, ((value >> 8) & 0xFF));   /* PHY data high_byte */
  iow(0x0D, value & 0xFF);            /* PHY data low_byte */

  /* issue PHY + WRITE command = 0xa into EPCR REG. 0BH */
  iow(0x0B, 0x8);                     /* clear PHY command first */
  IOWR(DM9000A_BASE, IO_data, 0x0A);  /* issue PHY + WRITE command */
  usleep(STD_DELAY);
  IOWR(DM9000A_BASE, IO_data, 0x08);  /* clear PHY command again */
  usleep(50);  /* wait 1~30 us (>20 us) for PHY + WRITE completion */
}
//-------------------------------------------------------------------------
/* DM9000_init I/O routine */
unsigned int DM9000_init (void)  /* initialize DM9000 LAN chip */
{
  unsigned int  i;

  /* set the internal PHY power-on (GPIOs normal settings) */
  iow(0x1E, 0x01);  /* GPCR REG. 1EH = 1 selected GPIO0 "output" port for internal PHY */
  iow(0x1F, 0x00);  /* GPR  REG. 1FH GEPIO0 Bit [0] = 0 to activate internal PHY */
  msleep(5);        /* wait > 2 ms for PHY power-up ready */

  /* software-RESET NIC */
  iow(NCR, 0x03);   /* NCR REG. 00 RST Bit [0] = 1 reset on, and LBK Bit [2:1] = 01b MAC loopback on */
  usleep(20);       /* wait > 10us for a software-RESET ok */
  iow(NCR, 0x00);   /* normalize */
  iow(NCR, 0x03);
  usleep(20);
  iow(NCR, 0x00);
  
  /* set GPIO0=1 then GPIO0=0 to turn off and on the internal PHY */
  iow(0x1F, 0x01);  /* GPR PHYPD Bit [0] = 1 turn-off PHY */
  iow(0x1F, 0x00);  /* PHYPD Bit [0] = 0 activate phyxcer */
  msleep(10);       /* wait >4 ms for PHY power-up */
  
  /* set PHY operation mode */
  phy_write(0,PHY_reset);   /* reset PHY: registers back to the default states */
  usleep(50);               /* wait >30 us for PHY software-RESET ok */
  phy_write(16, 0x404);     /* turn off PHY reduce-power-down mode only */
  phy_write(4, PHY_txab);   /* set PHY TX advertised ability: ALL + Flow_control */
  phy_write(0, 0x1200);     /* PHY auto-NEGO re-start enable (RESTART_AUTO_NEGOTIATION + AUTO_NEGOTIATION_ENABLE) to auto sense and recovery PHY registers */
  msleep(5);               /* wait >2 ms for PHY auto-sense linking to partner */

  /* store MAC address into NIC */
  for (i = 0; i < 6; i++) 
  iow(16 + i, ether_addr[i]);
  
  /* clear any pending interrupt */
  iow(ISR, 0x3F);     /* clear the ISR status: PRS, PTS, ROS, ROOS 4 bits, by RW/C1 */
  iow(NSR, 0x2C);     /* clear the TX status: TX1END, TX2END, WAKEUP 3 bits, by RW/C1 */

  /* program operating registers~ */
  iow(NCR,  NCR_set);   /* NCR REG. 00 enable the chip functions (and disable this MAC loopback mode back to normal) */
  iow(0x08, BPTR_set);  /* BPTR  REG.08  (if necessary) RX Back Pressure Threshold in Half duplex moe only: High Water 3KB, 600 us */
  iow(0x09, FCTR_set);  /* FCTR  REG.09  (if necessary) Flow Control Threshold setting High/ Low Water Overflow 5KB/ 10KB */
  iow(0x0A, RTFCR_set); /* RTFCR REG.0AH (if necessary) RX/TX Flow Control Register enable TXPEN, BKPM (TX_Half), FLCE (RX) */
  iow(0x0F, 0x00);      /* Clear the all Event */
  iow(0x2D, 0x80);      /* Switch LED to mode 1 */

  /* set other registers depending on applications */
  iow(ETXCSR, ETXCSR_set); /* Early Transmit 75% */
  
  /* enable interrupts to activate DM9000 ~on */
  iow(IMR, INTR_set);   /* IMR REG. FFH PAR=1 only, or + PTM=1& PRM=1 enable RxTx interrupts */

  /* enable RX (Broadcast/ ALL_MULTICAST) ~go */
  iow(RCR , RCR_set | RX_ENABLE | PASS_MULTICAST);  /* RCR REG. 05 RXEN Bit [0] = 1 to enable the RX machine/ filter */

  /* RETURN "DEVICE_SUCCESS" back to upper layer */
  return  (ior(0x2D)==0x80) ? DMFE_SUCCESS : DMFE_FAIL;
}
//-------------------------------------------------------------------------
/*  Transmit one Packet TX I/O routine  */
unsigned int  TransmitPacket(unsigned char *data_ptr,unsigned int tx_len)
{
  unsigned int  i;
  
   /* mask NIC interrupts IMR: PAR only */
  iow(IMR, PAR_set);
  
  /* issue TX packet's length into TXPLH REG. FDH & TXPLL REG. FCH */
  iow(0xFD, (tx_len >> 8) & 0xFF);  /* TXPLH High_byte length */
  iow(0xFC, tx_len & 0xFF);         /* TXPLL Low_byte  length */

  /* wirte transmit data to chip SRAM */
  IOWR(DM9000A_BASE, IO_addr, MWCMD);   /* set MWCMD REG. F8H TX I/O port ready */
  for (i = 0; i < tx_len; i += 2)
  {
    usleep(STD_DELAY);
    IOWR(DM9000A_BASE, IO_data, (data_ptr[i+1]<<8)|data_ptr[i] );
  }

  /* issue TX polling command activated */
  iow(TCR , TCR_set | TX_REQUEST);  /* TXCR Bit [0] TXREQ auto clear after TX completed */

  /* wait TX transmit done */
  while(!(ior(NSR)&0x0C))
  usleep(STD_DELAY);

  /* clear the NSR Register */
  iow(NSR,0x00);
  
  /* re-enable NIC interrupts */
  iow(IMR, INTR_set);

  /* RETURN "TX_SUCCESS" to upper layer */
  return  DMFE_SUCCESS;
}
//-------------------------------------------------------------------------
/* Receive One Packet I/O routine */
unsigned int  ReceivePacket (unsigned char *data_ptr,unsigned int *rx_len)
{
  unsigned char rx_READY,GoodPacket;
  unsigned int  Tmp, RxStatus, i;
  
  RxStatus = rx_len[0] = 0;
  GoodPacket=FALSE;

   /* mask NIC interrupts IMR: PAR only */
  iow(IMR, PAR_set);
  
  /* dummy read a byte from MRCMDX REG. F0H */
  rx_READY = ior(MRCMDX);
  
  /* got most updated byte: rx_READY */
  rx_READY = IORD(DM9000A_BASE,IO_data)&0x03;
  usleep(STD_DELAY);
  
  /* check if (rx_READY == 0x01): Received Packet READY? */
  if (rx_READY == DM9000_PKT_READY)
  {
    /* got RX_Status & RX_Length from RX SRAM */
    IOWR(DM9000A_BASE, IO_addr, MRCMD); /* set MRCMD REG. F2H RX I/O port ready */
    usleep(STD_DELAY);
    RxStatus = IORD(DM9000A_BASE,IO_data);
    usleep(STD_DELAY);
    rx_len[0] = IORD(DM9000A_BASE,IO_data);

    /* Check this packet_status GOOD or BAD? */
    if ( !(RxStatus & 0xBF00) && (rx_len[0] < MAX_PACKET_SIZE) )
    {
      /* read 1 received packet from RX SRAM into RX buffer */
      for (i = 0; i < rx_len[0]; i += 2)
      {
        usleep(STD_DELAY);
        Tmp = IORD(DM9000A_BASE, IO_data);
        data_ptr[i] = Tmp&0xFF;
        data_ptr[i+1] = (Tmp>>8)&0xFF;
      }
      GoodPacket=TRUE;
    } /* end if (GoodPacket) */
    else
    {
      /* this packet is bad, dump it from RX SRAM */
      for (i = 0; i < rx_len[0]; i += 2)
      {
        usleep(STD_DELAY);
        Tmp = IORD(DM9000A_BASE, IO_data);        
      }
      printf("\nError\n");
      rx_len[0] = 0;
    } /* end if (!GoodPacket) */
  } /* end if (rx_READY == DM9000_PKT_READY) ok */
  else if(rx_READY) /* status check first byte: rx_READY Bit[1:0] must be "00"b or "01"b */
  {
    /* software-RESET NIC */
    iow(NCR, 0x03);   /* NCR REG. 00 RST Bit [0] = 1 reset on, and LBK Bit [2:1] = 01b MAC loopback on */
    usleep(20);       /* wait > 10us for a software-RESET ok */
    iow(NCR, 0x00);   /* normalize */
    iow(NCR, 0x03);
    usleep(20);
    iow(NCR, 0x00);    
    /* program operating registers~ */
    iow(NCR,  NCR_set);   /* NCR REG. 00 enable the chip functions (and disable this MAC loopback mode back to normal) */
    iow(0x08, BPTR_set);  /* BPTR  REG.08  (if necessary) RX Back Pressure Threshold in Half duplex moe only: High Water 3KB, 600 us */
    iow(0x09, FCTR_set);  /* FCTR  REG.09  (if necessary) Flow Control Threshold setting High/ Low Water Overflow 5KB/ 10KB */
    iow(0x0A, RTFCR_set); /* RTFCR REG.0AH (if necessary) RX/TX Flow Control Register enable TXPEN, BKPM (TX_Half), FLCE (RX) */
    iow(0x0F, 0x00);      /* Clear the all Event */
    iow(0x2D, 0x80);      /* Switch LED to mode 1 */
    /* set other registers depending on applications */
    iow(ETXCSR, ETXCSR_set); /* Early Transmit 75% */
    /* enable interrupts to activate DM9000 ~on */
    iow(IMR, INTR_set);   /* IMR REG. FFH PAR=1 only, or + PTM=1& PRM=1 enable RxTx interrupts */
    /* enable RX (Broadcast/ ALL_MULTICAST) ~go */
    iow(RCR , RCR_set | RX_ENABLE | PASS_MULTICAST);  /* RCR REG. 05 RXEN Bit [0] = 1 to enable the RX machine/ filter */
  } /* end NIC H/W system Data-Bus error */
  
  return GoodPacket ? DMFE_SUCCESS : DMFE_FAIL;
}
//-------------------------------------------------------------------------





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美美女网站色| 日韩欧美卡一卡二| 另类成人小视频在线| 中文字幕乱码久久午夜不卡 | 欧美电视剧在线观看完整版| 丰满少妇久久久久久久| 日本不卡一区二区三区高清视频| 国产精品女人毛片| 日韩丝袜美女视频| 欧美日本在线视频| 91免费观看在线| 国内久久精品视频| 午夜国产精品影院在线观看| 亚洲三级理论片| 亚洲成人av一区二区| 国产精品成人一区二区艾草| 欧美大度的电影原声| 欧美日韩国产影片| 91久久一区二区| 成人一二三区视频| 精品一区二区三区在线视频| 爽爽淫人综合网网站| 亚洲午夜av在线| 成人免费一区二区三区在线观看| 国产午夜一区二区三区| 日韩欧美一级二级三级| 777xxx欧美| 欧美蜜桃一区二区三区 | 欧美一级生活片| 欧美日韩精品免费| 欧美日韩精品久久久| 欧美日韩一级黄| 欧美三级视频在线观看| 色婷婷综合激情| 色综合天天天天做夜夜夜夜做| 成人动漫中文字幕| 成人午夜大片免费观看| 国产成人a级片| 成人精品鲁一区一区二区| 国产成人自拍网| 日韩一区二区三区视频| 制服.丝袜.亚洲.中文.综合| 精品视频一区三区九区| 欧美日韩一区二区在线视频| 欧美视频一区二区三区四区| 91成人看片片| 欧美精品日韩精品| 日韩精品自拍偷拍| 久久午夜色播影院免费高清 | 亚洲国产日韩一级| 亚洲高清免费观看高清完整版在线观看| 亚洲人一二三区| 亚洲一区二区三区在线| 视频一区二区欧美| 麻豆免费精品视频| 国内精品久久久久影院一蜜桃| 国产精品一区二区91| 9l国产精品久久久久麻豆| 欧美中文字幕不卡| 日韩精品一区国产麻豆| 国产日韩欧美麻豆| 亚洲日本va午夜在线影院| 亚洲国产欧美另类丝袜| 另类调教123区| 成人性生交大片免费看中文网站| 99精品久久只有精品| 在线观看av一区| 日韩视频一区二区三区在线播放| 久久精品欧美日韩精品| 亚洲另类在线一区| 丝瓜av网站精品一区二区| 国产综合色在线| 97久久精品人人做人人爽| 欧美片网站yy| 日本女人一区二区三区| 国产白丝精品91爽爽久久| 日本电影欧美片| 欧美xxxxxxxx| 亚洲男帅同性gay1069| 日韩高清在线观看| 粉嫩嫩av羞羞动漫久久久| 日本电影欧美片| 欧美精品一区二区三区高清aⅴ| √…a在线天堂一区| 日韩高清不卡一区| 成人av在线网| 91精品欧美久久久久久动漫| 国产精品色在线| 五月天丁香久久| 成人av动漫网站| 日韩一级欧美一级| 亚洲女同女同女同女同女同69| 蜜乳av一区二区| 色噜噜狠狠色综合中国| 久久综合精品国产一区二区三区 | 国产精品一区二区无线| 欧洲另类一二三四区| 国产校园另类小说区| 亚洲va韩国va欧美va精品| 岛国精品在线观看| 日韩精品一区二区三区四区 | 中文字幕一区二区三区精华液| 日韩高清中文字幕一区| 色狠狠色狠狠综合| 国产精品免费久久| 黄色成人免费在线| 69p69国产精品| 一区二区三区欧美视频| 成人动漫av在线| 久久久夜色精品亚洲| 日本亚洲免费观看| 欧美日韩亚洲丝袜制服| 中文字幕在线不卡国产视频| 国产成人小视频| 欧美大度的电影原声| 日韩av成人高清| 欧美精品日韩精品| 亚洲成人久久影院| 欧美亚日韩国产aⅴ精品中极品| 国产精品成人在线观看| 成人激情动漫在线观看| 亚洲精品在线一区二区| 麻豆91在线观看| 日韩亚洲欧美一区| 日韩在线一二三区| 7777精品伊人久久久大香线蕉完整版| 亚洲男人的天堂在线观看| 91小视频免费观看| 成人欧美一区二区三区| kk眼镜猥琐国模调教系列一区二区| 久久青草欧美一区二区三区| 国产一区二区看久久| 亚洲一二三专区| 欧美日韩一卡二卡三卡| 亚洲成人动漫在线观看| 欧美日韩国产成人在线免费| 亚洲福利视频三区| 在线播放欧美女士性生活| 午夜精品一区在线观看| 91精品国产麻豆| 久久国产日韩欧美精品| 久久综合狠狠综合| 大白屁股一区二区视频| 国产精品视频九色porn| 一本色道a无线码一区v| 一区二区免费在线播放| 欧美日韩成人综合天天影院 | 九九国产精品视频| 久久这里只有精品首页| 国产成人在线色| 亚洲特级片在线| 欧美制服丝袜第一页| 午夜精品一区在线观看| 日韩欧美国产精品| 国产jizzjizz一区二区| 亚洲日本韩国一区| 欧美年轻男男videosbes| 免费国产亚洲视频| 国产欧美一区二区三区网站 | 欧美午夜精品一区| 日本亚洲三级在线| 久久综合色婷婷| 91视频com| 日产精品久久久久久久性色| 久久伊99综合婷婷久久伊| av在线不卡观看免费观看| 亚洲福利视频三区| 久久综合色婷婷| 91色视频在线| 91女人视频在线观看| 偷拍自拍另类欧美| 久久久久成人黄色影片| 91福利国产成人精品照片| 久久国产精品99久久人人澡| 国产精品亲子乱子伦xxxx裸| 欧美性猛交xxxxxxxx| 狠狠色丁香婷婷综合| 亚洲日本va午夜在线电影| 欧美一级高清片| 99久久精品国产一区| 免费日本视频一区| 亚洲日穴在线视频| 精品国产一二三区| 欧美性色黄大片手机版| 国产乱人伦精品一区二区在线观看| 亚洲黄色在线视频| 久久精品人人做| 91精品国产综合久久福利软件| 成人免费福利片| 精品在线播放免费| 亚洲国产成人91porn| 中文字幕乱码久久午夜不卡 | 亚洲欧美在线aaa| 欧美一级国产精品| 91福利视频久久久久| 成人午夜电影网站| 久久精品国产亚洲5555| 亚洲一区二区三区四区在线观看 | 国产精品人妖ts系列视频| 日韩三级高清在线|