芯片是DM9000A,用普通ARM芯片裸机驱动(以16位总线形式访问)。
问题如下:
芯片手册上说,从MRCMDX读数据时,不改变地址指针,而从MRCMD里读取数据时,自动将指针增加,而且,当数据总结宽度为16位时,指针+2,8位总线时,指针+1。这就带来问题了:当我接收数据时,数据里的数目为奇数,我采用16位地址,那么我最后一个字节如何读取?才能让指针不错?许多参考代码直接多读了一个字节,这样读取不出错吗?难道以太网的数据个数必定为偶数吗?
同理,我发送数据包时,我要发送奇数个数据呢?结果如何,怎样操作?
另外,对于发送来说,有些问题也不明白,如:
明明发送部分有TX1、TX2,但我发送数据时,只将其写入MWCMD,而将长度放入TXPLL、TXPLH中,它与TX1、TX2没有任何关系,这中间又是如何操作?我要如何操作才对? |