OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4432|回复: 2

ARM11驱动DM9000A实现以太网通信

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2017-6-28
在线时间
1 小时
发表于 2017-6-28 20:35:30 | 显示全部楼层 |阅读模式

dm900.png
DM9000A和ARM11引脚连接如图所示,所以cs引脚接xm0csn1,所以我把DM9000的基地址设为了0x18000000,所以地址端口为dm_addr_port=0x18000000,数据端口为dm_data_port=0x18000004.
然后编写了读写寄存器的函数,接着我就写了DM9000A的初始化函数
//对特定寄存器写入特定参数
void dm_reg_write(unsigned char reg,unsigned char data)
{
    dm_addr_port=reg;

    dm_data_port=data;
}//对特定寄存器进行读取
unsigned int dm_reg_read(unsigned int reg)
{
        dm_addr_port=reg;
    return dm_data_port;
}
//DM9000A初始化int dm_init(void)
{
unsigned long id;
Uart0_Init();
dm_reg_write(NCR,0x03);//软件复位DM9000aep,
Timer0_yms(1000);        //至少延时20us以上,因为复位是在该信号的至少10us以后
dm_reg_write(NCR,0x00);
dm_reg_write(NCR,0x03);
Timer0_yms(1000);
dm_reg_write(NCR,0x00);//为确保复位正确,进行两次复位操作
//读取产品id
id  = dm_reg_read(VIDL);
id |= dm_reg_read(VIDH)<<8;
id |= dm_reg_read(PIDL)<<16;
id |= dm_reg_read(PIDH)<<24;
Uart0_SendString(hex2char(dm_reg_read(NCR)));
//清中断
dm_reg_write(IMR,0x80);
//设置相关联界面//LED mode1
dm_reg_write(TCR2,0x80);//LED mode1
//gpioset(0x00,0x01);参考第五章
//gpiow(0x00,0x00);//开启内部的PHY电源,参考第五章
dm_reg_write(GPCR,0x01);
dm_reg_write(GPR,0x00);
//填充MAC地址
dm_reg_write(PAR0,0x00);        //设置6字节的MAC地址
dm_reg_write(PAR1,0x01);
dm_reg_write(PAR2,0x02);
dm_reg_write(PAR3,0x03);
dm_reg_write(PAR4,0x04);
dm_reg_write(PAR5,0x05);
dm_reg_read(NSR);//清TX状态
dm_reg_write(TCR,0x00);                //设置TX控制,使能发送
dm_reg_read(ROCR);
dm_reg_write(FCR,0x28);//流控制寄存器
dm_reg_write(ISR,0x3f);//清中断状态,3f是16bit模式,bf是3bit模式
dm_reg_write(IMR,0x81);
dm_reg_write(RCR,0x31);           //设置RX控制,接收控制寄存器,接收使能以及一些配置
dm_reg_write(BPTR,0x3f);       // 背压阈值寄存器,3K,600us,至少3k,200us
dm_reg_write(FCTR,0x38);//流控制阈值寄存器,接收FIFO门限3K,8K   
dm_reg_write(SMCR,0x00);//特殊模式控制寄存器*/
}
用上述函数对DM9000A进行初始化之后没有任何的反应,正常初始化成功的话网口的LED灯应该亮的,现在没亮,就说明初始化没成功,在网上找了一些资料觉得我写的没什么问题啊,可是就是找不到初始化不成功的原因,请各位大神不吝赐教,小女子感激不尽啊!!!


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2016-11-17
在线时间
103 小时
发表于 2017-7-17 11:29:01 | 显示全部楼层
1、首先要初始化dm9000所在的SROM接口的控制器
2、dm_addr_port=0x18000300
      dm_data_port=0x18000304
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-8-10
在线时间
6 小时
发表于 2017-8-10 16:39:19 | 显示全部楼层
楼主搞定没有
DAVICOM总代理。DM9000.DM9161等Davicom芯片问题可与我联系QQ1048095151
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-18 17:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表