硬汉嵌入式论坛

 找回密码
 立即注册
查看: 584|回复: 5
收起左侧

[有问必答] STM32F407中串口使用DMA+FIFO的发送问题

[复制链接]

35

主题

106

回帖

211

积分

高级会员

积分
211
发表于 2023-10-24 21:55:11 | 显示全部楼层 |阅读模式

USART3串口发送使用DMA传输,
/* 内存地址到外设串口地址传输 */
DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;
/* 外设和内存数据格式都设置成字节 */



DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;       
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;


/*传输时缓冲区大小设置为3个字节*/
DMA_InitStructure.DMA_BufferSize =3个字节;
/*使能FIFO模式 */
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;
/* FIFO阈值为四分之一,也就是4个字节*/

DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull;
/* 单次触发模式 */
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
/* 外设单次触发模式 */
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;

疑问:缓冲区设置为3个字节,但是FIFO是4个字节,缓冲区的数值3减至0发生中断,但是没有达到FIFO发送的阈值啊?请问这种情况怎么怎么解释??还有就是我知道4节拍、8节拍和16节拍的突发模式,但是这个单次触发模式是什么意思(是达到FIFO的阈值直接一次性全部发送吗,比如FIFO的阈值设置为4*4,则达到阈值后一次性发送16个字节)??
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2023-10-25 00:43:57 | 显示全部楼层
1、FIFO不是这个意思,FIFO主要是缓冲DMA处理不及时用的。FIFO阈值设置的这个FIFO可以最大缓存大小。
2、节拍就是DMA的一次数据传输,比如8个节拍的一次突发就是指:一次突发,连续传输8次数据。

对于用户来说,这个两个不能随便设置,必须设置下面支持的方式


回复

使用道具 举报

35

主题

106

回帖

211

积分

高级会员

积分
211
 楼主| 发表于 2023-10-25 08:20:14 | 显示全部楼层
eric2013 发表于 2023-10-25 00:43
1、FIFO不是这个意思,FIFO主要是缓冲DMA处理不及时用的。FIFO阈值设置的这个FIFO可以最大缓存大小。
2、 ...

请问,这个DMA的单次突发是什么意思?
回复

使用道具 举报

35

主题

106

回帖

211

积分

高级会员

积分
211
 楼主| 发表于 2023-10-25 08:35:26 | 显示全部楼层
eric2013 发表于 2023-10-25 00:43
1、FIFO不是这个意思,FIFO主要是缓冲DMA处理不及时用的。FIFO阈值设置的这个FIFO可以最大缓存大小。
2、 ...

明白了,谢谢,配置成单次传输的模式理解了。
回复

使用道具 举报

35

主题

106

回帖

211

积分

高级会员

积分
211
 楼主| 发表于 2023-10-25 08:52:49 | 显示全部楼层
eric2013 发表于 2023-10-25 00:43
1、FIFO不是这个意思,FIFO主要是缓冲DMA处理不及时用的。FIFO阈值设置的这个FIFO可以最大缓存大小。
2、 ...

DMA 控制器可以产生单次传输或 4 个、 8 个和 16 个节拍的增量突发传输。请问使能了FIFO模式,可以配置成单次传输吗?还是必须配置成突发模式?谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2023-10-25 15:45:10 | 显示全部楼层
坚持再坚持 发表于 2023-10-25 08:52
DMA 控制器可以产生单次传输或 4 个、 8 个和 16 个节拍的增量突发传输。请问使能了FIFO模式,可以配置成 ...

单次就行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 23:00 , Processed in 0.175661 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表