[求助]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;
}
发表时间:2003年4月28日3:43:52