基于ARM LPC2210的以太网RTL8019AS驱动系统设计
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);
}
ARMLPC2210以太网RTL8019AS驱动系 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)