导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]RTL8019收发数据疑难问题[00000000000]

 *第11115篇: [求助]RTL8019收发数据疑难问题

  
楼 主:00000000000 2003年4月28日03:43
 [求助]RTL8019收发数据疑难问题
8019AS接收计算机发送来的数据正常 为什么数据无法发送到计算机呢?

计算机始终没有接收到包?

register uint i,j;
bit m_ret,m_stst;
uchar m_curr,m_rsr,m_tsr,m_tbcr0,m_tbcr1,m_temp,m_bnry,m_tpsr,m_bnry_nextpage;

    m_bnry_nextpage=0x4d;  
    //初始化所有设备
      f_reset8019as();  //复位8019AS
      f_ne2000init();   //初始化8019AS
 
    while(1)
    {
      page(0);
      m_bnry=reg03;
      m_rsr=reg0c;//RSR
      page(2);
      m_tpsr=reg04;//TPSR
      page(1);
      m_curr=reg07;  //CURR     
      sleep_ms(800);  //延时
//--------------------------------------------------------发包ARP
          for(i=0;i  <100;i++)
           {
   //目标ID号 (广播)
   for(j=4;j  <=9;j++)
    buffers1[j]=0xff;
   //源ID号
   for(j=10;j  <=15;j++)
    buffers1[j]=myid[j-10];
   //以太网类型 0806 (ARP)
   buffers1[16]=0x08; buffers1[17]=0x06;
   //硬件类型 10M以太网 协议类型IP
   buffers1[18]=0x00; buffers1[19]=0x01;
   buffers1[20]=0x08; buffers1[21]=0x00;
   //硬件地址长度 协议地址长度
   buffers1[22]=0x06; buffers1[23]=0x04;
   //操作码
   buffers1[24]=0x00; buffers1[25]=0x01;
   //源ID号
   for(j=26;j  <=31;j++)
    buffers1[j]=myid[j-26];
   //源IP
   for(j=32;j  <=35;j++)
    buffers1[j]=myip[j-32];
   //目标ID  (广播)
   for(j=36;j  <=41;j++)
    buffers1[j]=0x00;
   //目标IP
   for(j=42;j  <=45;j++)
    buffers1[j]=myip[j-42];
   buffers1[45]=55;
   //填充位 (18 字节) 
   for(j=46;j  <=63;j++)
       buffers1[j]=0x00;
    
   send_data(m_tpsr  <  <8);
   sleep_ms(1);
  }


void send_data(uint m_add)//写8019as buffer
{
   uint m_langth;
   register uchar i,j;
   m_langth=60;
 
 page(0);
 reg09=m_add>  >  8;//address high
 reg08=m_add&0xff;//address low 
 reg0b=m_langth>  >  8; //write count high 
 reg0a=m_langth&0xff;//write count low 
 reg00=0x12; //dma write 
 
 for(i=4;i  <m_langth+4;i++)
    reg10=buffers1[i];
 
/* for(i=0;i  <4;i++)    //最多重发4次
 {                
        for(j=0;j  <1000;j++)          //检查txp
            if((reg00&0x04)==0) break;
       //表示发送成功
       if((reg04&0x01)!=0) break;
       reg00=0x3E;
    }
*/
    reg04=0x40;
    reg06=m_langth+4>  >  8;         //high
    reg05=m_langth+4&0xFF;       //low
    reg00=0x3E;               // sendpacket;  
}

  
2楼:guest 2003年4月29日22:32
 数据最短得40个字节
数据最短得40个字节
  
3楼:guest 2003年4月30日18:03
 他这样做是对的
ARP包并不要求40字节的数据。
  
4楼:long22885528 2003年4月30日13:26
 兄弟:能把你的QQ给我么我想请教一下!~~MYQQ:6492328

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

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


[上一篇主题]:pic烧录问题!!!

[下一篇主题]:45