导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:老古,请教您读网卡SRAM的问题[dirty]

 *第727篇: C51编程:老古,请教您读网卡SRAM的问题

  
楼 主:dirty 2001年10月17日15:24
 C51编程:老古,请教您读网卡SRAM的问题
老古大侠,我用的一块DM9008的ISA网卡,目前插在PC机上,在DOS环境下用C语言对其编
程,准备调试好以后再移植到单片机上。
网卡复位,初始化,读取设置MAC地址都是完全按照您《单片机与ISA总线以太网解决方案》
一文介绍的方法进行的,我的理解,这时网卡应该可以接收包了,因为没实现任何协议,只
能接收广播包,监测CURR(当前接收页)与BNRY(最后一个已经读取的页)的差值,如果大于
1 应该有包进来,这时候就开始从RAM里读取包,读取包的程序我基本也是按你读取MAC地址
的程序进行的,只不过把RSAR1设为要读取的页,比如0x4c,把RBCR1设为1,RBCR0设为0,
读取256个数据,不知道这样的思路是否有问题。
目前问题是,我读出的所有数据,读出来单和双地址内容总是一样的,总是成对出现,和读
MAC地址的情况一样。附上我读数据的程序:
void ReadPage(uchar data[],int PageNumber){
    int i;
    int temp;
    SetPage(0);//即你的程序里的page函数 
    outp(0x249,PageNumber);
    outp(0x248,0);
    outp(0x24b,1);
    outp(0x24a,0);
    outp(0x240,0x0a);
    for(i=0;i<=255;i++){
        temp=inp(0x250);

        data[i]=temp;
        //data[2*i+1]=temp/0x100;
        //printf("data[%d] = %d\n",i,data[i]);
    }
}
void ReadData(uchar data[],int StartPage,int EndPage){
    for(int i=StartPage;i<=EndPage;i++){
        ReadPage(data,i);
        data=data+0x100;
    }
}

  
2楼:onliner 2001年10月17日15:31
 老古,多谢你帮忙了
上面文章是我发的,刚才我没申请ID。
不知道是读的问题,还是根本没接收到包。能不能把你读取和发送数据的子程序给我参考一
下,jiangy@bme.tsinghua.edu.cn,其余编写协议我都可以自己完成,多谢了
  
3楼:onliner 2001年10月17日18:32
 老古老古,终于等到你上来了,点拨一二吧
谢谢了,:)
  
4楼:onliner 2001年10月19日09:46
 老古,问题部分解决了,不过还有问题
    多谢您的提醒,我把我的网卡扩充的36线用布包了插入PC机的ISA槽,再运行我的程
序,读入数据好象正常了。因为没写任何协议,读入的肯定都是广播包,我读入的数据情况
如下,第一页在FF FF FF FF FF FF FF(广播包的目的地址)前有四个字节,第三页(即第二
个包起始处),FF FF FF FF FF FF FF(广播包的目的地址)前有三个字节,第五页(即第三
个包起始处),FF FF FF FF FF FF FF(广播包的目的地址)前有两个字节。。。。
    我分析了一下从FF FF FF FF FF FF FF以后的数据,确实符合广播包的格式,不过为什
么读入的数据包不是对齐的呢?我把RBCR1和RBCR0分别设的0和1,让RSAR1读完一页后加1
  
5楼:老古 2001年10月19日09:50
 读取一页的时候你可能多读了一个字节.,
  
6楼:onliner 2001年10月19日15:19
 问题解决了,多谢老古,有机会到北京我请你喝酒,HUOHUO
  
7楼:老古 2001年10月17日21:53
 在pc机里只能用16位的dma,不能用8位的dma.一次要读入2个字节.

>>>>>>对该主题发表你的看法

本主题贴数7,分页: [第1页]


[上一篇主题]:硬件:关于网卡接口扩展的问题

[下一篇主题]:一个用HI-TECH C FOR PIC 的问题请教各位高手