主题 : 无操作系统情况下,读mini2440的DM9000的ID有错误? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 19303
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
贡献值: 0 点
综合积分: 10 分
注册时间: 2010-04-18
最后登录: 2010-06-25
楼主  发表于: 2010-06-10 22:04

 无操作系统情况下,读mini2440的DM9000的ID有错误?

在读取dm9000 的芯片ID时,返回ID错误。代码如下:
#define DM9000_BASE        0x20000300
#define DM9000_VID_L    0x28
#define DM9000_VID_H    0x29
#define DM9000_PID_L    0x2A
#define DM9000_PID_H    0x2B
#define DM9000_ID    0x90000A46
#define DM9000_INT_MII    0x00

#define DM9000_PPTR     *(volatile u16_t     *)(DM9000_BASE)        // 命令寄存器地址
#define DM9000_PDATA     *(volatile u16_t     *)(DM9000_BASE + 4)

u32_t  GetDM9000ID (void){
                     u32_t               id_val;
    DM9000_PPTR = DM9000_PID_H;
    id_val = (DM9000_PDATA & 0xff) << 8;
    
    DM9000_PPTR = DM9000_PID_L;
    id_val+= (DM9000_PDATA & 0xff);
    
    id_val = id_val << 16;
    DM9000_PPTR = DM9000_VID_H;
    id_val += (DM9000_PDATA & 0xff) << 8;
    
    DM9000_PPTR = DM9000_VID_L;
    id_val += (DM9000_PDATA & 0xff);
}

读写的时序 我参考 http://blog.chinaunix.net/u1/57901/showart_2023852.html
  但是返回的ID就是不对,请高手们指教
开心