导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→硬件:老古,我错了:)

* 2748: 硬件:老古,我错了:)

   easy 
easy发表的帖子 

 硬件:老古,我错了:)
老古大虾:您给我指出的错误是我的笔误,我是用0x0a读的:就差这一步了
您曾提到PC上的DMA只有16位方式,486,386呢?
但是我读出来的数据还是不对,我把我的把程序写一下,大虾指点:
 在此之前是初始化NIC,处于接收等待状态(300H=0x22)
Receive( )
{     //变量声明不写了
  outportb(0x309,nextpage);//nextpage 是指向下一包的起始地址,初始化为00x4d
                           //在每次接收完一包后根据第二个信息控制byte调整,
                           //同时,也是让BNRY按此调整
  outportb(0x308,0);
  outportb(0x30a,18);      //这里,我先读前18个byte,一是为了得到信息控制字,二
  outportb(0x30b,0);       //是看看是否收得对
  outportb(0x300,0x0a);    //开读remote DMA
  for(i=0;i<18;i++)
   { temp=inportb(0x310);
     rcvbuf[i]=temp;
     printf("%x\n",temp);   //显示前18个byte
   } 
 ……//还有一些就是把数据收了存起来,不浪费您时间了。
}
但是我每次收到显示出来都是一些毫不正确的:
1.比如说,受到广播包时应该是:
  | RSR的状态 |下一包的起始地址 | 长度低位 | 长度高位 |ff|ff|ff|ff|ff|ff|
  |……本NIC的MAC 6 bytes……|……
2.如是单播包则应该是:
  | RSR | nextpage |length | length| sending MAC | my MAC |…………
而我的却或是全0,或是全ff,或是全(别的数),反正,清一色一个数 
我想应该是 读写DMA时出错。怎么办?

发表时间:2001年11月17日14:27:00

  
回复该帖

本主题共有 6 帖,分页:>>>>>该主题的所有内容[6]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  2751.[详细]你的nextpage是不是等于当前BNRY+1呀!
摘要:......(无内容)
- [leech42][876次] 2001年11月17日

  2753.[详细]leech42,在初始化网卡时nextpage=0x4d(4c-7f是接收缓冲),在收完包后,随即..
摘要:......(无内容)
- [easy][947次] 2001年11月17日

  2762.[详细]还有你的初始化程序看一下,会不会是你的初始值可能出错的哦!我就是这样子的。..
摘要:......(无内容)
- [leech42][1072次] 2001年11月17日

[上一篇帖子]:闲聊:介绍两种带数据接口的来电显示接收装置介绍两种带数据接口的来电显示接收装置 v1.11.
[下一篇帖子]:晶振经过dco分频吗?别急,我暂时还没有MSP430的参考资料。等我有空上图书馆查查。