表 10.56 接收状态信息字
位 符号 描述
10:0 RxSize
传输给一个片段缓冲区的实际数据的字节数。换句话说,它是 DAM 管理器针对一
个描述符实际写入的帧或片段的字节数。该值可能与描述符控制区域中 Size 位(表
示器件驱动程序分配的缓冲区大小)的值有所不同。该字段采用减 1 编码,例如,
如果缓冲区有 8 个字节,则 RxSize 的值为 7
17:11 - 未使用
18 ControlFrame
表示这一个用于流控制的控制帧,它可以是一个暂停帧也可以是一个带有不支持
的操作码的帧
19 VLAN 表示一个 VLAN 帧
20 FailFilter
表示这帧信息的 Rx 过滤失败。这样的帧将不能正常地传递到存储器中。但由于缓
冲区大小的限制,帧中可能已有一部分信息传递到了存储器。一旦发现某帧的 Rx
过滤失败,就将该帧的剩余部分丢弃,而不传递到存储器中。但如果命令寄存器
中的 PassRxFilter 位置位,则整帧都将传递到存储器中
21 Multicast 当接收到一个多播帧时置位
22 Broadcast 当接收到一个广播帧时置位
23 CRCError 接收到的帧有一个 CRC 错误
24 SymbolError 在接收过程中,PHY 通过 PHY 接口报告有一个位错误
25 LengthError 该帧的帧长度区域指定了一个有效的帧长度,但它与实际的数据长度不相等
26 RangeError[1] 接收到的包超出了包长度的最大限制
27 AlignmentError
当检测到 dribble 位和一个 CRC 错误时,将“对齐错误”作上标记。这与 IEEE
std.802.3/条款 4.3.2 是一致的
28 Overrun 接收溢出。适配器不能接收数据流
29 NoDescriptor
没有新的 Rx 描述符可用,并且对于当前的接收描述符中的缓冲区大小来说,帧信
息太长
30 LastFlag
该位置位表示这个描述符是一帧中的最后一个片段。如果一帧只由一个片段组成,
则该位也是置位的
31 Error
表示在该帧的接收过程中出现错误。它是 AlignmentError、RangeError 、
LengthError、SymbolError、CRCError 和 Overrun 逻辑“或”的结果
[1] EMAC 不区分帧类型和帧长度。例如,当接收到 IP(0x8000)或 ARP(0x0806)包时,EMAC 将帧类
型与最大长度进行比较并给出“长度超出范围”错误。事实上,该位不是一个错误指示,而只仅仅是由芯片产生
的、关于接收帧状态的一个说明。
对于具有多个片段的帧,该帧中除了最后一个片段之外的所有片段中的 AlignmentError、
RangeError 、LengthError、SymbolError、CRCError 位的值都是 0。同样,FailFilter 、Multicast、
Broadcast、VLAN、ControlFrame 位的值是未定义的。而该帧中最后一个片段的状态是从 MAC
中将上述位的值复制过来而得的。所有片段都将具有有效的 LastFrag、RxSize、Error、Overrun
和 NoDescriptor 位。
10.15.2 发送描述符和状态
图 10.4描述了发送描述符在存储器中的规划。
LPC1700 用户手册 ©2010 Guangzhou ZLGMCU Development CO., LTD.
30 30
1