OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4252|回复: 5

如何理解3个以上的串口使用两个DMA的问题?

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-11-27
在线时间
7 小时
发表于 2021-11-14 13:04:55 | 显示全部楼层 |阅读模式
1金钱
一般的情况下,STM32有两个DMA,两个串口使用两个DMA我能理解但是大于两个串口的,使用两个DMA这种情况就一直无法理解,这个现在限制我的串口的使用数量。
我理解是这样的,设备虽然有多个DMA通道,但是只有两个DMA转换器,同一时间只能有两串口在转换。
1)对于DMA接收,如果这个时候有三个串口同时在与主设备在通讯,比如都是在向主设备发送数据,那这个时候主设备是不是就会收不到某一个设备的数据?
2)对于DMA发送,如果这个时候主设备需要给三个从设备使用串口发送数据,这时主设备的总裁器会自己判断先发送哪个吗?还是说需要自己判断DMA是否BUSY?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-11-27
在线时间
7 小时
 楼主| 发表于 2021-11-14 14:35:03 | 显示全部楼层
自己顶一下,大神求讲解啊
回复

使用道具 举报

0

主题

668

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1926
金钱
1926
注册时间
2021-8-13
在线时间
262 小时
发表于 2021-11-15 09:49:54 | 显示全部楼层
DMA是无脑搬运的
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2021-11-15 09:55:26 | 显示全部楼层
本帖最后由 LcwSwust 于 2021-11-15 09:57 编辑

我觉得像中断一样,CPU只有一个,多个中断同时发生,它会先处理优先级高的,再处理优先级低的,只要处理速度够快,就不会乱套。
一个DMA相当于一个CPU,多个通道时同时产生DMA请求,也是先处理优先级高的,再处理优先级低的,串口传输一字节要多长时间?DMA存一个字节要多长时间?
想必串口数据是不会丢的。(只要下一字节还没收到停止位,当前收到的数据就不会被覆盖)
三串口同时收发数据,就算不用DMA,用串口中断也是来得及的,不用担心DMA。
这种问题多试试就知道了。
专治疑难杂症
回复

使用道具 举报

0

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2568
金钱
2568
注册时间
2019-10-18
在线时间
408 小时
发表于 2021-11-15 10:21:37 | 显示全部楼层
stm32是有2个dma,但是dma1有7个通道,dma2有5个通道加起来有12个通道.
3个串口收发全用dma也才只占用了6个通道而已.同时还有其他好多外设可以使用dma呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-11-16 02:39:28 | 显示全部楼层
你如果确实有这么高的实时性要求,整多个单片机吧。。。。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 15:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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