Edit online

DMA 发送描述符

发送描述符 TDES4~7 的应用,需要设置寄存器 0x004 DMA0_CONF 的 ALT_DES_SIZ = 1。其中,TDES4~5 Reserved,TDES6~7 时钟戳信息。

发送描述符 TDES0

1. 发送描述符 TDES0
Bit 域描述
31 TX_PRC,Transmit in Process,发送进行中。
  • 0x0:DMA 空闲,DMA 完成当前的描述符的数据发送;
  • 0x1:DMA 发送进行中。
30 EN_TX_COMP_INT,Enable Transmit Complete Interrupt,使能发送完成中断,此位只有在 BIT29 有效时才有效。
  • 0x0:未使能;
  • 0x1:使能,此位只有在 BIT29 有效
29 END_DES,End Descriptor,最后一个描述符。
  • 0x0:无效;
  • 0x1:有效,表示此描述符为最后一个描述符
28 START_DES,Start Descriptor,第一个描述符。
  • 0x0:无效;
  • 0x1:有效,表示此描述符为第一个描述符
27 DIS_CRC,Disable CRC,禁止 CRC 功能时生效,只需在第一个描述符设置此位即可。
  • 0x0:无效;
  • 0x1:有效,禁止CRC
26 DIS_PAD,Disable Padding,禁止补0功能时生效,只需在第一个描述符设置此位即可。
  • 0x0:无效;
  • 0x1:有效,禁止对帧长低于64 bytes进行补0
25 EN_TX_TMSTMP,Enable Transmit Timestamp,使能发送添加时间戳功能,只需在第一个描述符设置此位即可。
  • 0x0:未使能
  • 0x1:使能
24 EN_CRC_REP,Enable CRC Replacement,使能CRC替代功能。这里需要软件保证发送帧的内容包含了CRC,使能CRC替代功能后,会进行CRC重新计算并替代。另外为了避免CRC重复,需要DIS_CRC =1 禁止CRC插入。在第一个描述符设置此位即可。
  • 0x0:未使能
  • 0x1:使能
23:22 EN_CIC,Enable Checksum Insertion Control,使能校验和插入功能,只需在第一个描述符设置此位即可。
  • 0x0:禁止校验和插入。
  • 0x1:开启IP Header校验和计算以及插入功能。
  • 0x2:开启IP Header、Payload校验和的计算及插入功能,未开启伪Header的校验和计算。
  • 0x3:开启IP Header、Payload校验和的计算及插入功能,并且开启伪Header的校验和计算。
21 TX_END_RNG,Transmit End of Ring,DMA 发送环的末端,表示此描述符为DMA发送环的最后一个描述符,结束后跳回起始描述符。
  • 0x0:无效
  • 0x1:生效
20 EN_DMA_CHN_MODEnable DMA Chain Mode,使能DMA Chain模式。
  • 0x0:未使能,采用 DMA Ring 模式
  • 0x1:使能,采用 DMA Chain 模式
19:18 VLAN_TAG_CTL,VLAN Tag Control,VLAN 标签控制,只需在第一个描述符设置此位即可。
  • 0x0:无效操作。
  • 0x1:删除发送帧中的 VLAN 标签内容。
  • 0x2:插入 VLAN 标签,标签内容。
  • 0x3:替代 VLAN 标签。
17 TX_TMSTMP_STS,Transmit Timestamp Status,发送时间戳状态,此域只有在最后一个描述符有效。
  • 0x0:无操作
  • 0x1:完成发送时间戳的捕捉,时间戳写入在 TDES6 和 TDES7。
16 IP_HD_ERR,IP Header Error,此位置1表示MAC检测发送的IP报文的Header存在错误,此域只有在最后一个描述符有效。
15 TXERR_STS,Transmit Error Status,发送错误状态指示位。0x0:无错误;0x1:出现错误,错误源可能由于BIT16/14/13/12/11/10/9/8/2/1相应的错误状态引起
14 JAB_TO_ERR,Jabber Timout Error,发送Jabber超时错误,此位只有在Jabber检测功能未禁止的情况下有效。0x0:无异常;0x1:出现发送超时错误
13 TXFIFO_FLSH_ERR,TXFIFO Flush Error,清除错误,出现软件清除TXFIFO的帧数据的操作导致的错误。0x0:无异常;0x1:出现错误状态
12 IP_PL_ERR,IP Payload Error,此位置1指示MAC检测到发送的TCP、UDP、ICMP IP数据包payload存在错误。
11 LOS_CR,Loss Carrier,此位置1指示在帧发送发生了载波丢失,此位只有在半双工模式下有效。
10 NO_CR,No Carrier,此位置1指示在发送的过程中,PHY的载波侦听CS信号并没有生效,即没有检测到载波。
9 LT_COL,Late Collision,此位置1指示由于碰撞导致发送终止,此碰撞发生在碰撞窗口之后。此位在TXFIFO_UF_ERR = 1的时候无效。
8 EXS_COL,Excessive Collision,此位置1指示当前帧尝试发送的过程中,由于连续的16次碰撞的产生终止发送帧。如果取消重传(DIS_RETRY = 1),只要出现1次的碰撞,此位则立即置1。
7 VLAN_STS,VLAN Status,VLAN帧状态。0x0:发送帧为非VLAN帧;0x1:发送帧为VLAN帧
6:3 COL_CNT,Collision Count,此域指示在发送前发生多少次碰撞。此域在TDES0. Bit8 =1的时候无效。
2 EX_DEF_ERR,Excessive Deferral Error,发送终止由于回退时间过长,此位只有在EN_DEF_CHECK = 1的情况下有效。0x0:未发生错误;0x1:出现回退过量错误
1 TXFIFO_UF_ERR,TXFIFO Underflow Error,TXFIFO下溢出错误,DMA从Buffer地址读取帧数据错误。0x0:未出现错误;0x1:发生下溢出错误
0 DEF_STS,Defer Status,回退状态,在发送前检测到载波而引起的回退,此位只对于半双工模式有效。0x0:未出现回退;0x1:发送时出现回退

发送描述符 TDES1

2. 发送描述符 TDES1
Bit 域描述
31:29 TX_SA_CTL,Transmit Source Address Control,发送源地址控制。BIT31 = 1,表示采用MAC Address1进行插入或替代;BIT31 = 0,表示采用MAC Address0 进行插入或替代。

Bit30:29

0x0:无操作;0x1:插入源地址;0x2:替代源地址;0x3:保留

28:16 TX_BUF2_SIZ,Transmit Buffer2 Size,发送缓存2的空间大小。
15:13 Reserved
12:0 TX_BUF1_SIZ,Transmit Buffer1 Size,接收缓存1的空间大小。

发送描述符 TDES2

3. 发送描述符 TDES2
Bit 域描述
31:0 BUF1_ADDR,Buffer1 Address,Buffer1地址指针,Buffer1的物理地址。

发送描述符 TDES3

4. 发送描述符 TDES3
Bit 域描述
31:0 BUF2_ADDR/NXT_DES_ADDR在DMA采用Ring模式时,这里为BUF2_ADDR,而采用Chain模式时,这里为NXT_DES_ADDR。BUF2_ADDRBuffer2 Address,Buffer2地址指针,Buffer2的物理地址。NXT_DES_ADDRNext Descriptor Address,下一个描述符的地址,指向下一个描述符的物理地址,从而将描述符连接起来。

发送描述符 TDES6

5. 发送描述符 TDES6
Bit 域描述
31:0 TX_STMP_LO,Transmit Timestamp Low 32bit,发送时间戳的低32位,此域由DMA自动填写,与TDES7的高32bit组成完整的时间戳。

发送描述符 TDES7

6. 发送描述符 TDES7
Bit 域描述
31:0 TX_STMP_HI,Transmit Timestamp High 32bit,发送时间戳的高32位,此域由DMA自动填写,与TDES6的低32bit组成完整的时间戳。