2997|2

86

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

W77E58+RTL8019,不能对RTL8019的IMR和PAR0~PAR5不能操作 [复制链接]

对RTL8019初始化时,代码如下:
unsigned char xdata chRTLInitTmp;
        unsigned int i;
                //在RSTDRV从高电平回到低电平之后的100MS时,在对RTL8019做读写操作,以确保完全复位
        P35 = 1;
        for(i = 0;i < 400;i++);
        P35 = 0;
        for(i = 0;i < 4000;i++);
       
        /* reset: write to reset prot */
        WriteReg(0x18,0xaa);
        chRTLInitTmp = ReadReg(0x18);
        for(i = 0;i < 20;i++);        

        /* init RTL registers*/
        WriteReg(0x00,0x21);
        chRTLInitTmp = 0x00;
        chRTLInitTmp = ReadReg(0x00);

        RTLPage(0);
        WriteReg(0x0a,0x00);    //清RBCR0
        WriteReg(0x0b,0x00);    //清RBCR1
        WriteReg(0x0c,0xe0);    //RCR,监视模式,不接收数据报
        WriteReg(0x0d,0xe2);    //TCR,loopback模式

         WriteReg(0x01,        0x4c);        /* Pstart        */
        WriteReg(0x02,        0x80);        /* Pstop        */
        WriteReg(0x03,        0x4c);        /* BNRY                */
        WriteReg(0x04,        0x40);        /* TPSR                */

        WriteReg(0x07,0xFF);        /* ISR: Interrupt Status Register,write FF to clear up all interrupt status */
        //WriteReg(0x0f,0x00);        /* IMR: Interrupt Mask Register,屏蔽掉所有中断 */
        WriteReg(0x0e,0xC8);        /* DCR: Data Configuration Register*/

        WriteReg(0x0c,0xCE);        /* RCR*/
        WriteReg(0x0d,0xE0);        /* TCR*/

        //To debug
        chRTLInitTmp = ReadReg(0x07);
        chRTLInitTmp = ReadReg(0x0f);

        RTLPage(1);
        WriteReg(0x07,0x4d); //CURR,设置为指向当前正在写的页的下一页

        /* MAR0 */
        WriteReg(0x08,0x00);
        WriteReg(0x09,0x41);
        WriteReg(0x0a,0x00);
        WriteReg(0x0b,0x80);
        WriteReg(0x0c,0x00);
        WriteReg(0x0d,0x00);
        WriteReg(0x0e,0x00);
        //WriteReg(0x0f,0x00);

        /* set phisical address */
        RTLPage(1);
        WriteReg(1,0x00);
        WriteReg(2,0xe0);
        WriteReg(3,0x19);
        WriteReg(4,0x21);
        WriteReg(5,0x68);
        WriteReg(6,0x12);
        for(i = 0;i < 200;i++);

        //To debug
        chRTLInitTmp = ReadReg(0x08);
        chRTLInitTmp = ReadReg(0x09);
        chRTLInitTmp = ReadReg(0x0a);
        chRTLInitTmp = ReadReg(0x0b);
        chRTLInitTmp = ReadReg(0x0c);
        chRTLInitTmp = ReadReg(0x0d);
        chRTLInitTmp = ReadReg(0x0e);
        //chRTLInitTmp = ReadReg(0x0f);

        chRTLInitTmp = ReadReg(0x01);
        chRTLInitTmp = ReadReg(0x02);
        chRTLInitTmp = ReadReg(0x03);
        chRTLInitTmp = ReadReg(0x04);
        chRTLInitTmp = ReadReg(0x05);
        chRTLInitTmp = ReadReg(0x06);

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

        /* in the beginning, no packet is in sending */
        InSending = FALSE;

        RTLPage(0);
        /* initial over, start command and receive */
        WriteReg(0x0c,0xcc);                //将芯片置于正常模式,跟外部网络连接
        WriteReg(0x0d,0xe0);
        WriteReg(0x07,0xFF);
        chRTLInitTmp = ReadReg(0x07);       //清除所有中断标志位
        WriteReg(0x00,0x22);

最新回复

这里有成品板, 不知楼主是否有兴趣: http://auction1.taobao.com/auction/0/item_detail-0db2-638d11334228daa23cda5f3d85cb4d8b.jhtml?from_shop=true  详情 回复 发表于 2007-7-15 21:05
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
问题在于:当对复位寄存器0x18~0x1f、配置寄存器0x00及其他都操作正常,写进去的数与读出的数相等。但是对IMR(中断屏蔽寄存器)和PAR0~PAR5(物理地址寄存器)不能正常操作。
IMR的问题:执行WriteReg(0x0f,0x00);语句时,直接停止,不向下运行了,但是如果跟到函数里确实正常的,很莫名其妙。
PAR0~PAR5的问题:
执行
         RTLPage(1);
        WriteReg(1,0x00);
        WriteReg(2,0xe0);
        WriteReg(3,0x19);
        WriteReg(4,0x21);
        WriteReg(5,0x68);
        WriteReg(6,0x12);
        for(i = 0;i < 200;i++);
再执行
        chRTLInitTmp = ReadReg(0x01);
        chRTLInitTmp = ReadReg(0x02);
        chRTLInitTmp = ReadReg(0x03);
        chRTLInitTmp = ReadReg(0x04);
        chRTLInitTmp = ReadReg(0x05);
        chRTLInitTmp = ReadReg(0x06);
读出的数根本不是写进去的值。
不知哪里出来问题,向各位高手求助!



 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这里有成品板,
不知楼主是否有兴趣:
http://auction1.taobao.com/auction/0/item_detail-0db2-638d11334228daa23cda5f3d85cb4d8b.jhtml?from_shop=true
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表