jianhong_wu 发表于 2016-3-19 15:28:11

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

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

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

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

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

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

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

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

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

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

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

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

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

页: [1]
查看完整版本: 两个以上的串口能工作么,如何利用DMA解决同时两个串口来数据的冲突问题?已解答。