DM9000CIEP发送问题
关于DM9000的寄存器读写没有哦任何问题。但是发送数据,有两个问题十分不解:
问题1:DM9000第一次发送数据,发送指针乱错误问题
初始完毕后,发送指针TRPA =0x0000,内存写指针MWR = 0x0000;此处和初始化结果完全吻合。
之后使用内存写地址增命令MWCMD,写入发送字节64,则内存写指针MWR=0x0040,此处也和预想吻合。
但是,装入发送字节寄存器TXP=
0x0040(64) ,并请求发送。待发送完毕后发送指针TRPA不等于0x0040(64),而且经过多次测试,第一次请求发送后,发送指针TRPA的值不固定。
原因为何?不知道,求解。
问题2:DM9000第二次发送数据时,内存写指针(初始位置)和发送指针指针(初值位置)的偏差问题
为了解决问题1,在程序初始化中,单独请求一次发送数据,待发送完毕后,读取发送指针TPPA的值,比如TRPA = N;之后,对内存写指针进行赋值操作,即 MWR =N;之后可以进行发送数据的写入。
此时,如果请求发送,则发送数据失败。
经调试发现,在对内存写指针进行赋值操作时,必须令 MWR = N -4;才能实现正常发送,用以太网检测软件,可以检测到发送数据和预想数据一致。
在进行上述修正后,之后的发送数据均正确。
可是为什么,发送指针TRPA和内存写地址MWR有4byte的偏移?求解!