我现在正在调试RTL8019AS的网络系统,有问题,好着急!
参考老古网上的硬件设计电路,可是就是不能把各页的控制字写进去,不知怎么回事?RTL8019AS的数据手册我都看了N遍,初始化也参考了网上的程序,我认为没有问题,可是就是写不进行,读出来的都是0xFF,我都郁闷两天了,哪位高人救救偶!
#define reg00 XBYTE[0x8000] //reg00- 10为isa网卡接口的寄存器地址240-25F;
#define reg01 XBYTE[0x8100]
#define reg02 XBYTE[0x8200]
#define reg03 XBYTE[0x8300]
#define reg04 XBYTE[0x8400]
#define reg05 XBYTE[0x8500]
#define reg06 XBYTE[0x8600]
#define reg07 XBYTE[0x8700]
#define reg08 XBYTE[0x8800]
#define reg09 XBYTE[0x8900]
#define reg0a XBYTE[0x8A00]
#define reg0b XBYTE[0x8B00]
#define reg0c XBYTE[0x8C00]
#define reg0d XBYTE[0x8D00]
#define reg0e XBYTE[0x8E00]
#define reg0f XBYTE[0x8F00]
#define reg10 XBYTE[0x9000]
void init_8019(void)
{
Delay1ms(10);
Rtl8019AS_Reset(); //复位8019
reg00=0x21; //使芯片处于停止模式,这时进行寄存器设置 停止模式下,将不会发送和接收数据包
Delay1ms(10); //延时10毫秒,确保芯片进入停止模式
page(0);
reg0a=0x00; reg0b=0x00;
reg0c= 0xe0; //2monitor mode (no packet receive)
reg0d= 0xe2; //loop back mode 使芯片处于mon和loopback模式,跟外部网络断开
reg01=0x4c; reg02=0x80; reg03=0x4c; reg04=0x40;
reg07=0xff; //清除所有中断标志位
reg0f=0x00; //disable all interrupt
reg0e=0xc8; //byte dma 8位dma方式
page(1);
reg07=0x4d; reg08=0x00; reg09=0x00; reg0a=0x00; reg0b=0x00;
reg0c=0x00; reg0d=0x00; reg0e=0x00; reg0f=0x00;
reg00=0x22; //这时让芯片开始工作
ReadRtl8019NodeID(); //读出网卡的物理地址48位
WriteRtl8019NodeID(); //将网卡地址写入到mar寄存器
page(0);
reg0c=0xcc; //将网卡设置成正常的模式,跟外部网络连接
reg0d=0xe0;
reg00=0x22; //这时让芯片开始工作
reg07=0xff; //清除所有中断标志位
}
发表时间:2003年11月25日17:57:25