OpenEdv-开源电子网

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

多个串口使用DMA接收发送问题

[复制链接]

6

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2017-9-28
在线时间
73 小时
发表于 2018-6-25 10:59:24 | 显示全部楼层 |阅读模式
1金钱
想询问一下大伙,使用单片机的串口1,2,3,4,串口1,2,4使用DMA的方式不定时地从外部接收数据,收到数据后在主函数里由串口3以DMA的方式发送出去;由于串口1,2,3的DMA都是在DMA1总线上;所以串口1在接收数据时,串口2,3就不能使用DMA收发数据;如果这时候串口2有数据来临时,就不能接收到,从而照成数据丢失。
所以想询问一下,如何优化,从而可以使用多个串口都以DMA方式收发数据呢?

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

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-6-25 11:20:03 | 显示全部楼层
用的又不是一个通道,有啥冲突的
回复

使用道具 举报

6

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2017-9-28
在线时间
73 小时
 楼主| 发表于 2018-6-25 11:29:13 | 显示全部楼层
275891381 发表于 2018-6-25 11:20
用的又不是一个通道,有啥冲突的

C:\Users\cxl\Desktop\捕获
回复

使用道具 举报

6

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2017-9-28
在线时间
73 小时
 楼主| 发表于 2018-6-25 11:32:23 | 显示全部楼层
275891381 发表于 2018-6-25 11:20
用的又不是一个通道,有啥冲突的

本来贴图的,结果搞错了,
数据手册有写,DMA1的七个通道,由外设产生的7个请求,通过逻辑或输入到DMA1控制器,这意味着同时只有一个请求有效。
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-6-25 12:03:24 | 显示全部楼层
PURSRE 发表于 2018-6-25 11:32
本来贴图的,结果搞错了,
数据手册有写,DMA1的七个通道,由外设产生的7个请求,通过逻辑或输入到DMA1 ...

记得是硬件自动分时处理,
回复

使用道具 举报

6

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2017-9-28
在线时间
73 小时
 楼主| 发表于 2018-6-25 13:48:10 | 显示全部楼层
275891381 发表于 2018-6-25 12:03
记得是硬件自动分时处理,

所以,你的意思是,单品机的几个串口是可以同时用DMA来收发数据的?只不过是通过硬件来分时处理每一个管道的数据?
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-6-25 14:35:05 | 显示全部楼层
PURSRE 发表于 2018-6-25 13:48
所以,你的意思是,单品机的几个串口是可以同时用DMA来收发数据的?只不过是通过硬件来分时处理每一个管 ...

可以说是同时的,硬件会自己处理
回复

使用道具 举报

6

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2017-9-28
在线时间
73 小时
 楼主| 发表于 2018-6-26 20:46:36 | 显示全部楼层
自顶一下,比如DMA1中的通道1在传送数据时,可以使用通道2传输数据吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-6-27 01:55:53 | 显示全部楼层
不能同时的,但是DMA有仲裁,串口数据也会有一个缓存,只要不超过2个字节,就不会丢失。
所以,你可以尝试下。也许OK。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2017-9-21
在线时间
171 小时
发表于 2018-6-27 08:36:26 | 显示全部楼层
可以配置DMA优先级,然后会自动仲裁了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 08:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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