Fork me on GitHub

随笔 - 997  文章 - 5  评论 - 181  阅读 - 300万 

 

DMA有normal和circular两种模式。

circular模式:

就调用这个函数一次就可以了,DMA一直开启,一帧数据发送完毕之后里面发送下一帧,中间没有停顿。这样确实是快了,也释放了CPU,各路的数据采集因为缺少了等待串口发送的时间,所以就间接提高的了数据更新速率。但有个致命缺陷:数据采集和数据发送各玩各的,就是他俩时序对不上,数据采集到一半,一个完整帧数据只更新了一部分,就被DMA挪走了,这样就把新旧数据一块发送出去了,circular模式的DMA才不管数据有没有完整更新,只管发。

normal模式:

就是每发一次就开启一次DMA,这样就可以等一帧数据更新完毕之后,再开启DMA发送,同样不会占用CPU,在DMA发送数据的时间里CPU可以开启下一轮的数据采集。

posted on   虚生  阅读(754)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2020-02-19 移植freertos到stm32 f103 的基本流程和总结
点击右上角即可分享
微信分享提示