独闷闷网

 找回密码
 立即注册
搜索
查看: 811|回复: 0
收起左侧

[原创] 两个以上的串口能工作么,如何利用DMA解决同时两个串口来数据的冲突问题?已解答。

[复制链接]
发表于 2016-3-19 15:28:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
小明-陕西:
各位请问下,STM32的三个串口是独立工作的么?我想接三个串口模块。

★坚鸿-深圳:
如果同时几个串口来大量数据,数据可能不稳定会丢失。所以要避免在同一时刻共用两个以上的串口。

兼程-上海:
鸿哥说的对,要把数据错开比较好。实在不行用DMA。做一下缓冲会好一点。DMA是个好东西,数据搬运工,我以前做PWM控制电机的时候,用DMA能减少中断次数,很好用。

许宁-潍坊:
没错,串口接上DMA,

★坚鸿-深圳:
DMA不用单片机干预,接收到一定的数据量才中断,那么请问,如果接收的数据量不到设定的门槛,它会产生超时中断吗?

许宁-潍坊:
不会,DMA只有接收中断,接收到一半中断,接收完中断,需要哪个就配置哪个。

★坚鸿-深圳:
因为有的项目发送的数据量是不确定的,这种情况下怎么用DMA?

许宁-潍坊:
我一般是建立一个数组,接上DMA后,定时查询数组中数据长度的变化,假如长度不是0,且长度维持20MS无变化,说明接收完成,开始处理……

★坚鸿-深圳:
涨知识了,很实用的思路。

许珺-杭州:
谁解释一下DMA?

小谢-福州:
DMA功能把你的数据从一个空间复制内容到另一个空间,比如从你的外存区块拷贝到内存, DMA直接接管了总线。DMA通俗的说就是不要CPU去管理你的数据搬移,DMA帮你做了。

★坚鸿-深圳:
是的,DMA在传输过程不用CPU干预。等他接收完数据才产生中断通知CPU。另外,DMA要在初始化配置一下你所需的功能,指定你所用的接收或发送的数组(也叫目标内存),以及接收多少数据才产生中断,这些是需要在启用DMA功能之前就要在初始化代码里预先配置好的。

乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2019-10-18 07:41 , Processed in 0.120150 second(s), 18 queries .

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