zoukankan      html  css  js  c++  java
  • IP101A芯片默认物理地址(PHY Adress)确定

    转载:http://blog.csdn.net/ropai/article/details/6961157

    根据IP101A的DataSheet,芯片的第9,10,12,13,15脚为PHYAD0~PHYAD4。(其实为PHYAD和LED共用管脚)。这个PHYAD是可配的,有两种方法可以确定PHY Address.

    (1)通过硬件方法

    利用芯片上电或复位后latch的电平高低来确定,比如9脚为高电平“1”,其余为低电平0,则PHYADR[4-0]=0x01 (bit:00001)

    由RX0-RX3和CSR这几个脚组成PHYADDR0-4,芯片复位时,会锁存这5个脚的电平,作为芯片地址,以后就找这个作访问了。所以,如果你是悬空的话,认为是0,一定要接1才认为是1。

    (2)通过软件方法

         因为PHYAD共有5位,也就是说PHY Address的范围是 0~31。而IP101A的第二个寄存器值为PHYID的高位(固定为0x0243),通过遍历(x|2)寄存器的值,如果读到0x0243则x就为PHYAddress的值。参考代码如下:

    /**
    
    *  确定IP101A的PHYAddress
    
    */
    
    
    //MII寄存器地址,MAC_BASE_ADDR由硬件平台决定,LPC23xx为0xFFE00000
    
    #define MAC_MCMD            (*(volatile unsigned long *)(MAC_BASE_ADDR + 0x024)) /* MII Mgmt CoMmanD reg */
    #define MAC_MADR            (*(volatile unsigned long *)(MAC_BASE_ADDR + 0x028)) /* MII Mgmt ADdRess reg */
    #define MAC_MRDD            (*(volatile unsigned long *)(MAC_BASE_ADDR + 0x030)) /* MII Mgmt ReaD Data reg (RO) */
    
    
    #define MII_RD_TOUT         0x00050000  // MII Read timeout count
    
    
    unsigned short getPhyAddress(){
    
        unsigned char i;
    
        int tout;
    
        for(i=0;i<32;i++){  // PHY Address范围是0~31
    
                  //MAC_MADR寄存器8~12位为PHY_ADR
    
                   MAC_MADR = (i<<8) | 0x02;  //高8位是地址,低五位是寄存器号'02'
    
                   MAC_MCMD = MCMD_READ;
    
                  // Wait until operation completed
                  for (tout = 0; tout < MII_RD_TOUT; tout++) {
                     if ((MAC_MIND & MIND_BUSY) == 0)
    
                           break;
                   }
                   MAC_MCMD = 0;
                   if(MAC_MRDD == 0x0243) //matches
    
                      return i;
    
        }
    
    }
  • 相关阅读:
    【转】NSArray,NSSet,NSDictionary总结
    dequeueReusableCellWithIdentifier
    可任意自定义的UITableViewCell
    contentSize、contentInset和contentOffset区别
    Cocoa的MVC架构分析 delegate
    WP7 Toolkit ExpanderView 控件 介绍 02
    ObjectiveC中一种消息处理方法performSelector: withObject:
    [转]HTML5多点触摸演示源码(Canvas绘制演示)
    Matlab 积分图的快速计算
    测试
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/3575774.html
Copyright © 2011-2022 走看看