#每日话题# #技术资源# #申请原创#
直接存储器访问(Direct Memory Access),简称DMA。DMA是CPU一个用于数据从一个地址空间到另一地址空间“搬运”(拷贝)的组件,数据拷贝过程不需CPU干预,数据拷贝结束则通知CPU处理。因此,大量数据拷贝时,使用DMA可以释放CPU资源。 在STM32控制器中,芯片采用Cortex-M3架构,总线结构有了很大的优化,DMA占用另外的总线,并不会与CPU的系统总线发生冲突。也就是说,DMA的使用不会影响CPU的运行速度。 DMA数据拷贝过程,典型的有:
串口有必要使用DMA吗 串口(UART)是一种低速的串行异步通信,适用于低速通信场景,通常使用的波特率小于或等于115200bps。PC与STM32单片机通信实例推荐:按下按键,通过串口发送数据实例。 对于小于或者等于115200bps波特率的,而且数据量不大的通信场景,一般没必要使用DMA,或者说使用DMA并未能充分发挥出DMA的作用。 对于数量大,或者波特率提高时,必须使用DMA以释放CPU资源,因为高波特率可能带来CPU资源过度浪费的问题。 举个例子: 对于发送,使用循环发送,可能阻塞线程,需要消耗大量CPU资源“搬运”数据,浪费CPU。对于发送,使用中断发送,不会阻塞线程,但需浪费大量中断资源,CPU频繁响应中断。以115200bps波特率,1s大约传输11520字节,大约69us需响应一次中断,如波特率再提高,将消耗更多CPU资源。 对于接收,如仍采用传统的中断模式接收,同样会因为频繁中断导致消耗大量CPU资源。
因此,在高波特率传输场景下,串口非常有必要使用DMA。 下方免费资料: 学习交流群:881895560
(stm32 USART串口应用) http://www.makeru.com.cn/live/1392_1164.html?s=10 PWM脉宽调制技术 http://www.makeru.com.cn/live/4034_2146.html?s=10 基于STM32讲解串口操作 http://www.makeru.com.cn/live/1758_490.html?s=10 通过Z-stack协议栈实现串口透传 http://www.makeru.com.cn/live/1758_330.html?s=10 (stm32直流电机驱动) http://www.makeru.com.cn/live/1392_1218.html?s=10 (零基础电子产品设计) http://www.makeru.com.cn/live/3727_1388.html?s=10 从0到1,设计自己的开发板 http://www.makeru.com.cn/live/4034_2016.html?s=10 1小时彻底掌握STM32中断 http://www.makeru.com.cn/live/3523_1666.html?s=10 (定时器) http://www.makeru.com.cn/live/1392_1199.html?s=10 STM32定时器深藏不露的绝技 http://www.makeru.com.cn/live/3523_1495.html?s=10 (stm32 温湿度采集) http://www.makeru.com.cn/live/detail/1476.html?s=10 ( ADC读取光照传感器) http://www.makeru.com.cn/live/1392_1004.html?s=10 通信协议 - UART串口协议 http://www.makeru.com.cn/live/3576_1437.html?s=10 stm32之SPI通信 http://www.makeru.com.cn/live/3523_1795.html?s=10 SPI通信协议驱动norFlash http://www.makeru.com.cn/live/4034_2151.html?s=10 (DMA专题讲解) http://www.makeru.com.cn/live/1392_1048.html?s=10 http://www.makeru.com.cn/live/1392_1020.html?s=10 stm32 如何用DMA搬运数据 http://www.makeru.com.cn/live/detail/1484.html?s=10
|