2.enc28j60.h头文件中有关发送接收缓冲区的设置一直没有搞懂,我是这样理解的
首先说发送缓冲区,以太网传输的数据包格式中,前面7字节的前导字段+1字节的帧起始定界符+后面4字节的CRC,都是由ENC28J60硬件自动产生,不需要为其预留发送缓冲区,6字节的目标地址、6字节的源地址、2字节的类型、最大1500字节的数据,加在一起是1514字节,还有ENC28J60要求在待发送的数据包前添加1字节的包控制字节,这就是1515字节,另外,在发送完1个数据包后ENC28J60硬件会自动在数据包的最后一个字节后写入一个7字节的状态向量,我觉得在设置发送缓冲区时这个状态向量也需要考虑进去,这就变成了1522字节,下面是enc28j60.h中的范例程序,红色字体为我自己改动以后的程序,不知道这样考虑对不对
// start with recbuf at 0/
#define RXSTART_INIT 0x0
// receive buffer end
#define RXSTOP_INIT (0x1FFF-1518-1) //#define RXSTOP_INIT (0x1FFF-1522)
// start TX buffer at 0x1FFF-0x0600, pace for one full ethernet frame (0~1518 bytes)
#define TXSTART_INIT (0x1FFF-1518) //#define TXSTART_INIT (0x1FFF-1522+1)
// stp TX buffer at end of mem
#define TXSTOP_INIT 0x1FFF //#define TXSTOP_INIT (0x1FFF-7)