导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[zlinghe]求助,8019网卡驱动问题



No.88225
作者:zlinghe
邮件:zlinghe@sina.com
ID:46307
登陆:1次
文章数:1篇
最后登陆IP:202.105.138.34
最后登陆:2006/1/19 13:53:44
注册:2006/1/18 12:32:37
财富:105
发帖时间:2006/1/18 12:36:50
发贴者IP:202.105.138.34
标题:zlinghe:求助,8019网卡驱动问题
摘要:No.88225求助,8019网卡驱动问题 我现在用51控制8019网卡芯片,采用查询方式收数据。但接收数据的时候只能收几个数据包,然后收到的4个字节的包头就不对了,再往后就干脆全为零了,之后CURR寄存器就为0XFF了。郁闷,到底是怎么回事呢?
这是相关的几个函数:
//8019初始化函数
void RTLInit(BYTE LocalMACAddr[])
{
//    BYTE temp;
//    int i;
    
    NET_RST=1;
    delayms(2);
    NET_RST=0;
    delayms(100);

    /* init RTL registers*/
    WriteReg(CR,(CR_PAGE0 | CR_ABORT_COMPLETE_DMA | CR_STOP_COMMAND)); /* set page0, stop command. command is stop after power up. */
    delayms(10);   //确保芯片进入停止状态

    WriteReg(DCR_WPAGE0,        0xC8);    /* DCR: refer to define of DCR in Rtl8019as.h */
    
    WriteReg(RBCRH_WPAGE0,0);
    WriteReg(RBCRL_WPAGE0,0);
    
    //使芯片与网络断开
    WriteReg(RCR_WPAGE0,        0x20);    /* RCR: refer to define of RCR in Rtl8019as.h */
    WriteReg(TCR_WPAGE0,        0x02);    /* TCR: refer to define of TCR in Rtl8019as.h */
    
    WriteReg(PSTART_WPAGE0,    RECEIVE_START_PAGE);    /* Pstart    */
    WriteReg(PSTOP_WPAGE0,    RECEIVE_STOP_PAGE);        /* Pstop    *///0x80也可以使用
    WriteReg(BNRY_WPAGE0,        RECEIVE_START_PAGE);    /* BNRY        */
    WriteReg(TPSR_WPAGE0,        SEND_START_PAGE0);    /* TPSR        */
    
    WriteReg(ISR_WPAGE0,        0xFF);    /* write FF to clear up all interrupt status */
    WriteReg(IMR_WPAGE0,0x0);

    WriteReg(CR,(CR_PAGE1 | CR_ABORT_COMPLETE_DMA | CR_STOP_COMMAND)); 

    WriteReg(CURR_WPAGE1,RECEIVE_START_PAGE + 1);    

    /* set phisical address */
    WriteReg(PRA0_WPAGE1,LocalMACAddr[0]);
    WriteReg(PRA1_WPAGE1,LocalMACAddr[1]);
    WriteReg(PRA2_WPAGE1,LocalMACAddr[2]);
    WriteReg(PRA3_WPAGE1,LocalMACAddr[3]);
    WriteReg(PRA4_WPAGE1,LocalMACAddr[4]);
    WriteReg(PRA5_WPAGE1,LocalMACAddr[5]);

    /* MAR0 */
    WriteReg(0x07, 0xff);
    WriteReg(0x08, 0xff);
    WriteReg(0x09, 0xff);
    WriteReg(0x0a, 0xff);
    WriteReg(0x0b, 0xff);
    WriteReg(0x0c, 0xff);
    WriteReg(0x0d, 0xff);
    WriteReg(0x0e, 0xff);
    WriteReg(0x0f, 0xff);
    
    WriteReg(CR,(CR_PAGE0 | CR_ABORT_COMPLETE_DMA | CR_START_COMMAND)); 

    WriteReg(RCR_WPAGE0,        0xCC);    /* RCR: refer to define of RCR in Rtl8019as.h */
    WriteReg(TCR_WPAGE0,        0x00);    /* TCR: refer to define of TCR in Rtl8019as.h */

    /* transimit start page */
    LastSendStartPage = SEND_START_PAGE0;
    StartPageOfPacket = RECEIVE_START_PAGE + 1;

    /* in the beginning, no packet is in sending */
    InSending = FALSE;
    
    /* initial over, start command and receive */
    WriteReg(ISR_WPAGE0,        0xFF);    /* write FF to clear up all interrupt status */
}

/* read rlt ram data to buffer */
void RTLReadRam(WORD address,WORD size,BYTE DT_XDATA * buff)
{
    BYTE DT_XDATA * Endp;
    BYTE PrePage;    /* store page */
    
    PrePage = ReadReg(CR);
    RTLPage(0);
    WriteReg(RSARH_WPAGE0,(BYTE)((address>  >  8)&0x00ff));
    WriteReg(RSARL_WPAGE0,(BYTE)address);
    WriteReg(RBCRH_WPAGE0,(BYTE)((size>  >   ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:2625毫秒 查询6次