导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→真的是

* 2699: 硬件:老古:8019

   easy 
easy发表的帖子 

 真的是
大虾不愧是大虾,果然如此!
但是我读出来的数据还是不对,我把我的把程序写一下,大虾指点:
 在此之前是初始化NIC,处于接收等待状态(300H=0x22)
Receive( )
{     //变量声明不写了
  outportb(0x309,nextpage);//nextpage 是指向下一包的起始地址,初始化为00x4d
                           //在每次接收完一包后根据第二个信息控制byte调整,
                           //同时,也是让BNRY按此调整
  outportb(0x308,0);
  outportb(0x30a,18);      //这里,我先读前18个byte,一是为了得到信息控制字,二
  outportb(0x30b,0);       //是看看是否收得对
  outportb(0x300,0x12);    //开读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月16日12:23:00

  
回复该帖

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

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

  2706.[详细]读dma的指令是0x0a,不是0x12
摘要:outportb(0x300,0x0a);    //开读remote DMA   ......(72字)
- [老古][936次] 2001年11月16日

  2712.[详细]sorry,我的书写错误,我程序里是0a的
摘要:......(无内容)
- [easy][910次] 2001年11月16日

  2716.[详细]easy,你读得正确吗?
摘要:老古说得对读DMA是0x0a,但我就是读不出来,老是少了奇数字节,无论在PC还是单片机都一 样。 easy,看样子你也是用PC,读的进展如何?......(71字)
- [huangyan][1177次] 2001年11月16日

[上一篇帖子]:硬件:有卖at91XXXXX芯片的吗哪位哥哥知道国内哪家公司出售AT91xxxxx芯片?? /P
[下一篇帖子]:初学者:有关AVR单片机的! 哪位大侠用过AVR单片机的指点一下小弟:这种单片机与AT89