导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→关于RTL8019的几个疑问

* 100821: 关于RTL8019的几个疑问

   phenix_yw 
phenix_yw发表的帖子 

 关于RTL8019的几个疑问

疑问1:
对于命令寄存器CR的bit5~3,对应为RD2~0,datasheet上如下所述:
RD2 RD1 RD0 备注
0 0 0 不允许
0 0 1 远程读
0 1 0 远程写
0 1 1 发送包
1 * * 结束或完成远程DMA
但是在测试过程过程中,我令RD2=1,RD1=*,RD0=*,(即令CMD_SEND为0x26或0x3e)网卡仍旧能发送出数据包,到底在什么情况下才需要将RD2、RD1、RD0设置成0、1、1呢?

疑问2:
在发送一帧数据时,通过检查ISR的PTX位可以知道一帧是否发送完毕,如下:
ISR = 0x02;//clear ISR_PTX
 Uart_Printf("Before CMD_SEND:ISR_PTX = %d\n",(ISR&ISR_PTX)>  >  1);//ISR[PTX]=0
 
CR = CMD_SEND;
Uart_Printf("After CMD_SEND:ISR_PTX = %d\n",(ISR&ISR_PTX)>  >  1);//执行发送命//令后,此时发送还未完成,因此ISR[PTX]仍然为0
 SoftDelay(2);
Uart_Printf("Last CMD_SEND:ISR_PTX = %d\n",(ISR&ISR_PTX)>  >  1);//经过适当延时// 后,数据包已经完全发送出去,此时产生了中断信号,所以ISR[PTX]变为0

但是当用TSR检测发送的时候,在执行发送命令前后,TSR的PTX(TSR的bit0)一直都是1,测试代码如下:
Uart_Printf("Before CMD_SEND:TSR = 0x%x\n\n",TSR); //TSR=0x03
 
CR = CMD_SEND;
 Uart_Printf("After CMD_SEND:TSR = 0x%x\n\n",TSR); //TSR=0x03 
 
SoftDelay(2);
 Uart_Printf("Last CMD_SEND:TSR = 0x%x\n\n",TSR); //TSR=0x03
为什么在执行发送命令前和发送完成前PTX位都为1呢?

疑问3:
在发送一帧数据未完,即CR的TXP位还是1时,能否立刻发送下一帧数据?需要等TXP变为0时再发送下一帧吗?(连续两帧数据放在不同的发送缓冲区)



发表时间:2006年12月20日10:35:34

  
回复该帖

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

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

  100978.[详细]为啥没人帮忙??
摘要:高手们,请帮帮忙呀!......(20字)
- [phenix_yw][707次] 2006年12月23日

[上一篇帖子]:求求大哥大姐,我也需要77e58的中文资料能给我发个么????需要的很 emial 
[下一篇帖子]:请问m16c/62p的开发板从那买的请问m16c/62p的开发板从那买的