原创 利用DMA可以有效地降低串行通信对于时间资源的消耗

2008-10-4 17:23 2802 13 9 分类: MCU/ 嵌入式
    在大多数单片机系统中都可能存在有串行通信(USART, I2C, SPI等), 串行通信的最显著的优点应该是它可以用较少的线路传输数据, 但因为其串行传输的方式, 必然伴随有传输效率速度慢的特点, 这也就生产了传输管理占用资源的问题.
    在没有应用DMA的时候, 串行通信的管理大体两种方式, 轮询方式和中断方式.
    轮询方式就是在发送或接收一字节时, 先要不断地循环查询前一待发送字节是否已经发送完成, 或待接收字节是否已经接收到, 直到前一字节已发送完成或已接收到一字节为止, 这种方式是耗费资源最高的方式, 因为通常在传送或接收完一个字节的过程中要进行产生多次无效的查询, 还要在成功发送或一个字节前或接收到一个字节后运行一次字节数据的转移程序--将数据从发送缓冲区送到发送寄存器或接收寄存器.
    中断方式就是在接收或发送完一个字节时,产程中断,相应的中断服务处理程序中进行下一步的处理, 这样就没有了轮询方式中的无效查询过程. 这种方式下系统只要处理一字节只要运行一次字节数据转移程序及进出中断的处理程序, 总体而言, 一次进出中断的消耗的时间会大大小于多次查询所消耗的时间, 所以中断方式相对轮询方式消耗的时间应该要少.
    在传输数据量不大且系统工作量不繁重的情况下, 上面的两种方式有时可以很好的工作, 但在统工作量大的时候, 这个问题就比较突出了. 相对而言, 之所以在系统中选用STM32, 有相当一部分就是为了应用它的高效率, 在这时, 串行通信的效率问题很可能成为系统软件算法的一个瓶颈, 而STM32是DMA功能恰恰可以解决这个问题. 在合理应用DMA后, 串行通信的处理可就做到每帧只运行一次处理程序, 这样每一帧数据只要运行一次启动DMA传送程序即可
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1354403 2008-12-26 17:23

概念不太清晰,建议先了解一下16c550及fifo后进行项目后修改文章,很多东西会误导其他初学者的
相关推荐阅读
用户18170 2009-01-17 11:47
面向工控的学习板主控制部分已经完成
前段时间说的学习板已经于08年12月中旬将板画完了,一直忙,没时间整理,今天将其整理一下,发上来,由于众所周知的原因,目前资金奇紧,做板只能是无限期延后了。板上只集成了中心控制部分,外部隔离驱动都放在...
用户18170 2009-01-03 16:25
MOS管驱动产生的奇怪现象
在一个系统中通过一PMOS管(PA002)控制传感器电源,PMOS管的G极直接由单片机(ATMEGA169)的IO口控制,调试时发现一奇怪现象,在打开传感器电源时,单片机会出现复位,真是莫名其妙,反复...
用户18170 2008-11-13 15:12
一个完整的简单的工控板项目(基于AVR)
这段时间都在做一个新的项目,所以学习板就放了一段时间,新项目接近尾声,将项目的板照传上来给大家排砖,我会将原理图整理出来了,也传上来供大家参考指正,我想技术是要通过交流而不断进步的,所以我也真诚希望有...
用户18170 2008-10-24 11:54
基于MDK322和万利199开发版的USART实战训练项目
啥也不说了,有兴趣的自己看吧https://static.assets-stash.eet-china.com/album/old-resources/2008/10/24/6175dc52-3b3d...
用户18170 2008-10-20 21:04
FSMC初接触--分析MANLEY399学习板使用FSMC驱动LCM的方法
FSMC应用要点(仅针对本标题)  * RCC使能    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);    FSMC的时钟直接来自AHB时钟,...
用户18170 2008-10-18 12:28
触摸屏菜单实现及其它
在21IC中看到有人在探讨关于触摸屏上菜单实现的问题,附件是我在一个项目中的部分代码,里面有我自己设计的实现规则菜单的算法,所谓规则菜单就是批菜单的条目呈均匀的行列摆放,且每个条目在高度和宽度一样,这...
我要评论
1
13
关闭 站长推荐上一条 /3 下一条