微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于ARM LPC2210的以太网RTL8019AS驱动系统设计

基于ARM LPC2210的以太网RTL8019AS驱动系统设计

时间:11-11 来源:互联网 点击:

rjb

**

****************************Copyright(c)********************/

/**********************************************************

**函数原型:voidInitNic()

**入口参数:无

**返回值:无

**说明:对芯片的工作寄存器进行设置,各个寄存器的用法可参考文档和

**络芯片的数据手册

**********************************************************/

void InitNic(uint8 num)

{

uint8i;

uint8j;

//使P0.8引脚为输出

IODIR=IODIR|NET_RST;

//向P0.8引脚写1,硬件复位

IOCLR=NET_RST;

for(i=0;i<200;i++)

{

for(j=0;j<200;j++);

}

IOSET=NET_RST;

for(i=0;i<200;i++)

{

for(j=0;j<200;j++);

}

IOCLR=NET_RST;

for(i=0;i<200;i++)

{

for(j=0;j<200;j++);

}

//软件复位

WriteToNet(0x1f,0x00);

for(i=0;i<200;i++)

{

for(j=0;j<200;j++);

}

//使芯片处于停止模式,这时进行寄存器设置

WriteToNet(0x00,0x21);

//延时10毫秒,确保芯片进入停止模式

for(i=0;i<200;i++)

{

for(j=0;j<200;j++);

}

page(0);

//设置远程DMA起始地址寄存器(RBCR0,RBCR1)为0

WriteToNet(0x0a,0x00);

WriteToNet(0x0b,0x00);

//设置接收配置寄存器(RCR)和传输寄存器(TCR)

WriteToNet(0x0c, 0xe0);

WriteToNet(0x0d, 0xe2);

//设置数据配置寄存器DCR

WriteToNet(0x0e,0xcb);

//初始化接受缓冲区容量为0X4C~0X7F(PSTART=0X4C,PSTOP=0X80)

WriteToNet(0x01,0x4c);

WriteToNet(0x02,0x80);

//初始化发送缓冲区容量为0X40~0x4b(TPSR=0X40,bnry=0x4c)

WriteToNet(0x03,0x4c);

WriteToNet(0x04,0x40);

/*初始化中断寄存器(ISR和IMR)清除所有中断标志位,使能OVW和PRX中断

*/

WriteToNet(0x07,0xff);

WriteToNet(0x0f,0x11);

//初始化当前页面寄存器CURR=BNRY+1

page(1);

WriteToNet(0x07,0x4d);

//初始化组播地址寄存器(MR0~MR5)

WriteToNet(0x08,0x00);

WriteToNet(0x09,0x00);

WriteToNet(0x0a,0x00);

WriteToNet(0x0b,0x00);

WriteToNet(0x0c,0x00);

WriteToNet(0x0d,0x00);

WriteToNet(0x0e,0x00);

WriteToNet(0x0f,0x00);

//将物理地址写入MAC(PAR0~PAR5)寄存器中

SetMacID(NetPort[num].My_Mac);

page(0);

/*设置传输配置寄存器(TCR)和接收配置寄存器(RCR),将芯片设置成正常模式,跟外部网络连接

*/

WriteToNet(0x0c,0xcc);

WriteToNet(0x0d,0xe0);

//启动芯片开始工作

WriteToNet(0x00,0x22);

//清除所有中断标志位

WriteToNet(0x07,0xff);

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top