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

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

?? dm9161.c

?? IAR5.2下 AT91SAM9260 ARM 對 MCP2515 控制源化碼
?? C
?? 第 1 頁 / 共 2 頁
字號:

        PIO_Configure(pEmacPins, nbEmacPins);
        rc = EMAC_SetMdcClock( mck );
        if (!rc) {

            trace_LOG(trace_FATAL, "E: No Valid MDC clock\n\r");
            return 0;
        }

        // Check PHY Address
        phy = DM9161_FindValidPhy(pDm);
        if (phy == 0xFF) {

            trace_LOG(trace_ERROR, "E: PHY Access fail\n\r");
            return 0;
        }
        if(phy != pDm->phyAddress) {

            pDm->phyAddress = phy;

            DM9161_ResetPhy(pDm);

        }

    }
    else {

        trace_LOG(trace_ERROR, "E: PHY Reset Timeout\n\r");
    }

    return rc;
}

//-----------------------------------------------------------------------------
/// Issue a Auto Negotiation of the PHY
/// Return 1 if successfully, 0 if timeout.
/// \param pDm   Pointer to the Dm9161 instance
//-----------------------------------------------------------------------------
unsigned char DM9161_AutoNegotiate(Dm9161 *pDm)
{
    unsigned int retryMax;
    unsigned int value;
    unsigned int phyAnar;
    unsigned int phyAnalpar;
    unsigned int retryCount= 0;
    unsigned char phyAddress;
    unsigned char rc = 1;

    ASSERT(pDm, "F: DM9161_AutoNegotiate\n\r");
    phyAddress = pDm->phyAddress;
    retryMax = pDm->retryMax;

    EMAC_EnableMdio();

    if (!EMAC_ReadPhy(phyAddress, DM9161_PHYID1, &value, retryMax)) {
        trace_LOG(trace_DEBUG, "Pb EMAC_ReadPhy Id1\n\r");
        rc = 0;
        goto AutoNegotiateExit;
    }
    trace_LOG(trace_DEBUG, "ReadPhy Id1 0x%X, addresse: %d\n\r", value, phyAddress);
    if (!EMAC_ReadPhy(phyAddress, DM9161_PHYID2, &phyAnar, retryMax)) {
        trace_LOG(trace_DEBUG, "Pb EMAC_ReadPhy Id2\n\r");
        rc = 0;
        goto AutoNegotiateExit;
    }
    trace_LOG(trace_DEBUG, "ReadPhy Id2 0x%X\n\r", phyAnar);

    if( ( value == DM9161_OUI_MSB )
     && ( ((phyAnar>>10)&DM9161_LSB_MASK) == DM9161_OUI_LSB ) ) {

        trace_LOG(trace_DEBUG, "Vendor Number Model = 0x%X\n\r", ((phyAnar>>4)&0x3F));
        trace_LOG(trace_DEBUG, "Model Revision Number = 0x%X\n\r", (phyAnar&0x7));
    }
    else {
        trace_LOG(trace_ERROR, "Problem OUI value\n\r");
    }

    // Setup control register
    rc  = EMAC_ReadPhy(phyAddress, DM9161_BMCR, &value, retryMax);
    if (rc == 0) {

        goto AutoNegotiateExit;
    }

    value &= ~DM9161_AUTONEG;   // Remove autonegotiation enable
    value &= ~(DM9161_LOOPBACK|DM9161_POWER_DOWN);
    value |=  DM9161_ISOLATE;   // Electrically isolate PHY
    rc = EMAC_WritePhy(phyAddress, DM9161_BMCR, value, retryMax);
    if (rc == 0) {

        goto AutoNegotiateExit;
    }

    // Set the Auto_negotiation Advertisement Register
    // MII advertising for Next page
    // 100BaseTxFD and HD, 10BaseTFD and HD, IEEE 802.3
    phyAnar = DM9161_NP | DM9161_TX_FDX | DM9161_TX_HDX |
              DM9161_10_FDX | DM9161_10_HDX | DM9161_AN_IEEE_802_3;
    rc = EMAC_WritePhy(phyAddress, DM9161_ANAR, phyAnar, retryMax);
    if (rc == 0) {

        goto AutoNegotiateExit;
    }

    // Read & modify control register
    rc  = EMAC_ReadPhy(phyAddress, DM9161_BMCR, &value, retryMax);
    if (rc == 0) {

        goto AutoNegotiateExit;
    }

    value |= DM9161_SPEED_SELECT | DM9161_AUTONEG | DM9161_DUPLEX_MODE;
    rc = EMAC_WritePhy(phyAddress, DM9161_BMCR, value, retryMax);
    if (rc == 0) {

        goto AutoNegotiateExit;
    }

    // Restart Auto_negotiation
    value |=  DM9161_RESTART_AUTONEG;
    value &= ~DM9161_ISOLATE;
    rc = EMAC_WritePhy(phyAddress, DM9161_BMCR, value, retryMax);
    if (rc == 0) {

        goto AutoNegotiateExit;
    }
    trace_LOG(trace_DEBUG, " _BMCR: 0x%X\n\r", value);

    // Check AutoNegotiate complete
    while (1) {

        rc  = EMAC_ReadPhy(phyAddress, DM9161_BMSR, &value, retryMax);
        if (rc == 0) {

            trace_LOG(trace_DEBUG, "rc==0\n\r");
            goto AutoNegotiateExit;
        }
        // Done successfully
        if (value & DM9161_AUTONEG_COMP) {

            trace_LOG(trace_INFO, "AutoNegotiate complete\n\r");
            break;
        }
        // Timeout check
        if (retryMax) {

            if (++ retryCount >= retryMax) {

                DM9161_DumpRegisters(pDm);
                trace_LOG(trace_DEBUG, "TimeOut\n\r");
                goto AutoNegotiateExit;
            }
        }
    }

    // Get the AutoNeg Link partner base page
    rc  = EMAC_ReadPhy(phyAddress, DM9161_ANLPAR, &phyAnalpar, retryMax);
    if (rc == 0) {

        goto AutoNegotiateExit;
    }

    // Setup the EMAC link speed
    if ((phyAnar & phyAnalpar) & DM9161_TX_FDX) {

        // set MII for 100BaseTX and Full Duplex
        EMAC_SetLinkSpeed(1, 1);
    }
    else if ((phyAnar & phyAnalpar) & DM9161_10_FDX) {

        // set MII for 10BaseT and Full Duplex
        EMAC_SetLinkSpeed(0, 1);
    }
    else if ((phyAnar & phyAnalpar) & DM9161_TX_HDX) {

        // set MII for 100BaseTX and half Duplex
        EMAC_SetLinkSpeed(1, 0);
    }
    else if ((phyAnar & phyAnalpar) & DM9161_10_HDX) {

        // set MII for 10BaseT and half Duplex
        EMAC_SetLinkSpeed(0, 0);
    }

    // Setup EMAC mode
#if BOARD_EMAC_MODE_RMII != 1
    EMAC_EnableMII();
#else
    EMAC_EnableRMII();
#endif

AutoNegotiateExit:
    EMAC_DisableMdio();
    return rc;
}

//-----------------------------------------------------------------------------
/// Get the Link & speed settings, and automatically setup the EMAC with the
/// settings.
/// Return 1 if link found, 0 if no ethernet link.
/// \param pDm          Pointer to the Dm9161 instance
/// \param applySetting Apply the settings to EMAC interface
//-----------------------------------------------------------------------------
unsigned char DM9161_GetLinkSpeed(Dm9161 *pDm, unsigned char applySetting)
{
    unsigned int retryMax;
    unsigned int stat1;
    unsigned int stat2;
    unsigned char phyAddress;
    unsigned char rc = 1;

    trace_LOG(trace_DEBUG, "DM9161_GetLinkSpeed\n\r");
    ASSERT(pDm, "F: DM9161_GetLinkSpeed\n\r");

    EMAC_EnableMdio();
    phyAddress = pDm->phyAddress;
    retryMax = pDm->retryMax;

    rc  = EMAC_ReadPhy(phyAddress, DM9161_BMSR, &stat1, retryMax);
    if (rc == 0) {

        goto GetLinkSpeedExit;
    }

    if ((stat1 & DM9161_LINK_STATUS) == 0) {

        trace_LOG(trace_DEBUG, "Pb: LinkStat: 0x%x\n\r", stat1);

        rc = 0;
        goto GetLinkSpeedExit;
    }

    if (applySetting == 0) {

        trace_LOG(trace_DEBUG, "Pb: applySetting: 0x%x\n\r", applySetting);
        goto GetLinkSpeedExit;
    }

    // Re-configure Link speed
    rc  = EMAC_ReadPhy(phyAddress, DM9161_DSCSR, &stat2, retryMax);
    if (rc == 0) {

        trace_LOG(trace_DEBUG, "Pb: rc: 0x%x\n\r", rc);
        goto GetLinkSpeedExit;
    }

    if ((stat1 & DM9161_100BASE_TX_FD) && (stat2 & DM9161_100FDX)) {

        // set Emac for 100BaseTX and Full Duplex
        EMAC_SetLinkSpeed(1, 1);
    }

    if ((stat1 & DM9161_10BASE_T_FD) && (stat2 & DM9161_10FDX)) {

        // set MII for 10BaseT and Full Duplex
        EMAC_SetLinkSpeed(0, 1);
    }

    if ((stat1 & DM9161_100BASE_T4_HD) && (stat2 & DM9161_100HDX)) {

        // set MII for 100BaseTX and Half Duplex
        EMAC_SetLinkSpeed(1, 0);
    }

    if ((stat1 & DM9161_10BASE_T_HD) && (stat2 & DM9161_10HDX)) {

        // set MII for 10BaseT and Half Duplex
        EMAC_SetLinkSpeed(0, 0);
    }

    // Start the EMAC transfers
    trace_LOG(trace_DEBUG, "DM9161_GetLinkSpeed passed\n\r");

GetLinkSpeedExit:
    EMAC_DisableMdio();
    return rc;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性视频免费网站| 精品福利一区二区三区| 欧美一区日本一区韩国一区| 久久精品亚洲麻豆av一区二区| 一区二区三区在线视频播放 | av综合在线播放| 欧美一区二区三区的| 亚洲丝袜精品丝袜在线| 国产精品一品二品| 欧美大肚乱孕交hd孕妇| 香蕉成人啪国产精品视频综合网 | 国产精品国产三级国产普通话蜜臀 | 麻豆精品视频在线| 欧美日韩极品在线观看一区| 亚洲三级久久久| 91在线精品一区二区三区| 久久久久久久久久久久电影| 日本不卡视频在线观看| 欧美日韩色一区| 亚洲一区二区三区四区在线| 99久久99久久精品免费观看| 欧美激情一二三区| 国产成人免费视频网站高清观看视频| 91精品国产免费| 男人的j进女人的j一区| 91精选在线观看| 日韩主播视频在线| 这里只有精品99re| 午夜激情一区二区三区| 欧美日韩一区二区不卡| 午夜在线成人av| 欧美群妇大交群中文字幕| 亚洲成年人网站在线观看| 69精品人人人人| 蜜臀av国产精品久久久久| 日韩美女一区二区三区| 精品一区二区三区在线播放 | 一区免费观看视频| www.欧美日韩国产在线| 亚洲免费三区一区二区| 欧美影视一区二区三区| 日韩av一级片| 久久精品人人做人人爽人人| 春色校园综合激情亚洲| 专区另类欧美日韩| 欧美日韩视频一区二区| 蜜桃精品在线观看| 国产性色一区二区| 91小视频在线免费看| 亚洲国产视频在线| 欧美变态口味重另类| 国产不卡视频一区二区三区| 亚洲精品国产品国语在线app| 欧美在线视频全部完| 免费在线观看一区| 中文字幕精品一区二区精品绿巨人 | 国产剧情一区在线| 日韩一区日韩二区| 在线91免费看| 成人手机电影网| 亚洲不卡在线观看| 久久久亚洲午夜电影| 日本精品免费观看高清观看| 强制捆绑调教一区二区| 国产精品你懂的在线欣赏| 欧美三级三级三级爽爽爽| 黄色日韩三级电影| 亚洲国产视频在线| 亚洲国产成人一区二区三区| 欧美日韩成人综合| 9久草视频在线视频精品| 日韩激情视频在线观看| 欧美国产日韩一二三区| 欧美一区二区在线观看| 91尤物视频在线观看| 韩国午夜理伦三级不卡影院| 亚洲激情自拍视频| 国产色91在线| 日韩精品一区二区在线| 色欧美日韩亚洲| 国产一区视频在线看| 午夜天堂影视香蕉久久| 亚洲人精品午夜| 久久久久99精品一区| 91精品麻豆日日躁夜夜躁| 色综合久久天天综合网| 国产精品一区一区三区| 免费av成人在线| 亚洲激情男女视频| 中文字幕亚洲精品在线观看| 久久久久久免费| 日韩一级黄色大片| 欧美三级蜜桃2在线观看| 91同城在线观看| 国产成人99久久亚洲综合精品| 麻豆高清免费国产一区| 亚洲3atv精品一区二区三区| 亚洲欧美日韩小说| ...av二区三区久久精品| 久久精品欧美一区二区三区不卡| 欧美精品xxxxbbbb| 欧美三区在线观看| 欧美自拍偷拍一区| 在线亚洲欧美专区二区| 91麻豆.com| 99精品国产91久久久久久| 国产传媒日韩欧美成人| 国产一区二区三区不卡在线观看| 日本欧美一区二区在线观看| 日韩中文字幕一区二区三区| 天天av天天翘天天综合网色鬼国产| 亚洲精品一二三| 夜夜嗨av一区二区三区四季av| 亚洲欧美一区二区三区久本道91 | 国产精品的网站| 国产精品人人做人人爽人人添| 国产拍揄自揄精品视频麻豆| 国产日韩欧美精品在线| 国产亚洲综合性久久久影院| 国产午夜久久久久| 国产精品乱人伦中文| 国产精品久久久久久久久免费樱桃 | 亚洲第一会所有码转帖| 亚洲一级二级在线| 日韩精品一级中文字幕精品视频免费观看 | 午夜电影网一区| 日韩中文字幕区一区有砖一区 | 日韩成人午夜电影| 久久精品噜噜噜成人av农村| 国产毛片一区二区| 成a人片国产精品| 欧美日韩一区二区三区在线| 日韩免费高清视频| 国产精品国产三级国产aⅴ原创| 一区二区三区在线影院| 男女男精品网站| 国产.精品.日韩.另类.中文.在线.播放| 韩国一区二区视频| 99精品久久久久久| 欧美一区二区三区四区视频 | 国产91精品免费| 972aa.com艺术欧美| 欧美久久婷婷综合色| xf在线a精品一区二区视频网站| 国产精品美女久久久久久久久久久 | 日韩一区二区三区精品视频| 久久九九国产精品| 亚洲综合在线电影| 激情综合亚洲精品| 在线观看免费亚洲| 国产亚洲欧美激情| 日韩精品久久理论片| 国产成a人无v码亚洲福利| 欧美日韩免费观看一区二区三区 | 亚洲免费观看在线视频| 日本不卡免费在线视频| 99国产精品99久久久久久| 91麻豆精品91久久久久久清纯 | 99精品偷自拍| 精品久久五月天| 亚洲r级在线视频| 成人一级黄色片| 日韩一区二区三区av| 亚洲欧美国产高清| 国产91露脸合集magnet| 欧美一区二区三区成人| 亚洲区小说区图片区qvod| 国产精品99久久久| 日韩一区二区不卡| 亚洲国产一区二区三区| 99riav久久精品riav| 久久久国产精华| 久久se精品一区精品二区| 欧美午夜精品免费| 亚洲乱码国产乱码精品精小说 | 麻豆精品在线视频| 欧美性大战久久久久久久蜜臀| 国产精品美女视频| 国产成人亚洲精品狼色在线| 日韩亚洲欧美高清| 免费在线一区观看| 欧美剧在线免费观看网站| 亚洲精品久久7777| 97久久精品人人爽人人爽蜜臀| 国产日产欧美一区| 国产永久精品大片wwwapp| 欧美刺激午夜性久久久久久久| 无吗不卡中文字幕| 欧美精品自拍偷拍动漫精品| 亚洲小少妇裸体bbw| 91福利国产成人精品照片| 一区二区在线观看视频| 色中色一区二区| 一区二区三区四区不卡在线| 99精品视频一区二区| 亚洲激情图片qvod| 欧美性猛片aaaaaaa做受| 亚洲综合偷拍欧美一区色| 欧美特级限制片免费在线观看| 亚洲一级不卡视频|