打印
[STM32F1]

串口通信的最优方法是不是DMA收,普通发?

[复制链接]
702|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhanghqi|  楼主 | 2022-2-20 20:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原先一直做Linux上的应用,Linux上处理数据都是按照帧处理,也就是一次调用read函数,读取到的是一帧数据;
一帧的概念是起始位和停止位之间的数据。
在STM32上,一开始我看正点原子的教程,RNXE中断,收到一个BYTE,就进一次中断,这种方法太烦了吧。
然后我看了DMA的方式,最终觉得,应该来讲利用DMA在后台收数据,IDLE中断时获取DMA缓存,这样就是按帧处理。和Linux的实现方式一样。
发送的话,我没有发现DMA发送比普通发送有啥优点。

以上是铺垫,请教大家两个问题:
1、想要按帧处理,最优的接收方式,是不是DMA+IDLE中断接受?
2、发送数据,DMA和普通发,有什么优势?

使用特权

评论回复
沙发
dingy| | 2022-2-20 20:59 | 只看该作者
没有更重要的外设占用DMA的话,能用就尽量用。

使用特权

评论回复
板凳
supernan| | 2022-2-20 21:00 | 只看该作者
DMA其最大优点是过程不占用MCU资源。

使用特权

评论回复
地板
huangchui| | 2022-2-20 21:03 | 只看该作者
普通收发的过程中,可能会响应其他异常,导致收发不连续;但DMA不会出现该情况。

使用特权

评论回复
5
chenho| | 2022-2-20 21:06 | 只看该作者
难道DMA这么完美,任何缺点也没有吗?

使用特权

评论回复
6
llljh| | 2022-2-20 21:12 | 只看该作者
如果信息包的长度相等,用DMA会很方便;但如果不相等,使用DMA就有问题,程序做不好时很可能会有非预期的延时

使用特权

评论回复
7
pengf| | 2022-2-20 21:15 | 只看该作者
相反,我觉得DMA发送是最方便的,打开DMA后,它自己就发送完了,不需要MCU再去关心。

使用特权

评论回复
8
huangchui| | 2022-2-20 21:17 | 只看该作者
要求不高的话 都用普通的就行

使用特权

评论回复
9
juventus9554| | 2022-2-20 21:20 | 只看该作者
都用普通的就行

使用特权

评论回复
10
dengdc| | 2022-2-20 21:22 | 只看该作者

如果要求不高的话 怎么做都行

使用特权

评论回复
11
dingy| | 2022-2-20 21:24 | 只看该作者
dma比较有优势

使用特权

评论回复
12
zhanghqi|  楼主 | 2022-2-20 21:26 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
13
james03| | 2022-2-21 10:10 | 只看该作者
当然是DMA收发呀

使用特权

评论回复
14
sadicy| | 2022-2-23 15:29 | 只看该作者
能实现功能就是好方法
DMA可以节省mcu资源

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

852

主题

11757

帖子

5

粉丝