主题 : DM9000 读 ID的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 5585
精华: 0
发帖: 23
金钱: 135 两
威望: 59 点
综合积分: 46 分
注册时间: 2009-04-29
最后登录: 2017-09-13
楼主  发表于: 2009-05-19 13:14

 DM9000 读 ID的问题

管理提醒: 本帖被 qq2440 从 QQ2440技术交流专区 移动到本区(2009-05-19)
小弟的板子是QQ2440,我最近在上面跑ucosII,我做网卡驱动的时候出问题了,我把读DM9000 ID的代码贴出来,请教一下
#define DM9000_ID 0x90000A46
#define DM9000_BASE 0x20000300
#define DM9000_IO DM9000_BASE
#define DM9000_DATA (DM9000_BASE+4)

#define DM9000_VIDL 0x28
#define DM9000_VIDH 0x29
#define DM9000_PIDL 0x2A
#define DM9000_PIDH 0x2B
#define DM9000_outb(d,r) ( *(volatile unsigned char *)r = d )
#define DM9000_inb(r) (*(volatile unsigned char *)r)

unsigned char DM9000_ior(unsigned char reg)
{

DM9000_outb(reg,DM9000_IO);

return DM9000_inb(DM9000_DATA);
}

void Main(void)
{
unsigned long id;
rBWSCON=(rBWSCON|0x000f0000)&0xfff1ffff;
rBANKCON4=0x0700;

id =DM9000_ior(DM9000_VIDL);
id|=DM9000_ior(DM9000_VIDH)<<8;
id|=DM9000_ior(DM9000_PIDL)<<16;
id|=DM9000_ior(DM9000_PIDH)<<24;

if(id==DM9000_ID) printf("dm9000 is found");
else printf("dm9000 is not found");
}

这样读出来的ID=0x46464646,我改成这样
id =DM9000_ior(DM9000_VIDH); //也就是把DM9000_VIDH放在最前面
id|=DM9000_ior(DM9000_VIDL)<<8;
id|=DM9000_ior(DM9000_PIDL)<<16;
id|=DM9000_ior(DM9000_PIDH)<<24;
读出的ID是0x0a0a0a0a
同样把DM9000_PIDL放在最前面读出的ID是0x00000000
把DM9000_PIDH放在最前面读出的ID是0x90909090
不知道哪儿出了问题,高人指点下。小弟万分感激。

级别: 新手上路
UID: 2346
精华: 0
发帖: 38
金钱: 340 两
威望: 294 点
综合积分: 76 分
注册时间: 2008-11-12
最后登录: 2019-05-09
1楼  发表于: 2009-05-19 13:24
检查硬件连接,用示波器 单步 捕捉
这个阶段正是我事业的上升期,我怎么能走得开呢?
级别: 精灵王
UID: 3197
精华: 3
发帖: 770
金钱: 6995 两
威望: 5398 点
综合积分: 1600 分
注册时间: 2008-12-30
最后登录: 2010-12-31
2楼  发表于: 2009-05-19 14:30
QQ2440用的是cs8900,怎么可能读取到dm9000的id
级别: 新手上路
UID: 5585
精华: 0
发帖: 23
金钱: 135 两
威望: 59 点
综合积分: 46 分
注册时间: 2009-04-29
最后登录: 2017-09-13
3楼  发表于: 2009-05-19 14:35
我的板子上是DM9000ep
级别: 新手上路
UID: 5585
精华: 0
发帖: 23
金钱: 135 两
威望: 59 点
综合积分: 46 分
注册时间: 2009-04-29
最后登录: 2017-09-13
4楼  发表于: 2009-05-19 14:39
问题主要就是重复前面第一个的值
级别: 新手上路
UID: 5585
精华: 0
发帖: 23
金钱: 135 两
威望: 59 点
综合积分: 46 分
注册时间: 2009-04-29
最后登录: 2017-09-13
5楼  发表于: 2009-05-19 14:43
小弟搞错了 是 mini2440 芯片是dm9000ep
级别: 新手上路
UID: 69030
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
综合积分: 2 分
注册时间: 2012-04-30
最后登录: 2012-04-30
6楼  发表于: 2012-04-30 10:49
LZ,我现在在和你做一样的事,和你遇到了同样的问题,跪求你后来是如何解决的啊~~急