【lwIP(第二章)】以太网DMA

一、以太网DMA描述符简介

发送:不需要CPU的参与下,把描述符指向的缓冲区数据传输到Tx FIFO当中
接收:不需要CPU的参与下,将Rx FIFO中的数据传输到描述符指向的缓冲区当中

在这里插入图片描述
常规描述符结构

/* stm32f4/f7/h7xx_hal_eth.h */
typedef struct 
{ 
	__IO uint32_t Status; 			/* 状态 */ 
	uint32_t ControlBufferSize; 	/* 缓冲区1和2的大小 */ 
	uint32_t Buffer1Addr; 			/* 缓冲区1的地址 */ 
	uint32_t Buffer2NextDescAddr; 	/* 缓冲区2的地址/指向下一个描述符 */ 
	/* 以下成员变量为增强描述符的 */ 
    	/* ……………………*/
} 
ETH_DMADescTypeDef;

TX DMA描述符成员变量
在这里插入图片描述
● TDES0[31]置0:CPU可将数据拷贝到描述符中,拷贝完成之后把该位置1,告诉DMA可以发送数据

● TDES0[20]置1:描述符中的第二个地址是下一个描述符地址

● TDES1[28:16]:如果TDES0[20] 位置1,则该字段无效

● TDES3[31:0]:取决于TDES0[20]的值,为1,则指向下一个描述符地址


RX DMA描述符成员变量
在这里插入图片描述
● RDES0[31]置1:MAC将数据从RX FIFO传输到RX描述符中,拷贝完成之后该位置0,告诉CPU可以接收数据

● RDES0[14]置1:描述符中的第二个地址是下一个描述符地址

● RDES1[28:16]:如果RDES0[14] 位置1,则该字段无效

● RDES3[31:0]:取决于RDES0[14]的值,为1,则指向下一个描述符地址


二、以太网DMA描述符结构

在这里插入图片描述

在这里插入图片描述


以太网DMA描述符注意细节
在这里插入图片描述


三、如何追踪描述符

ETH_HandleTypeDef中定义了RxDesc和TxDesc指针,它们是用来追踪Rx/Tx的DMA描述符(旧)

ETH_InitTypeDef中定义了RxDesc和TxDesc指针,它们是用来追踪Rx/Tx的DMA描述符(新)

在这里插入图片描述


总结

在这里插入图片描述

  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eiker_3169

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值