ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

STM32F10x 串口使用DMA

2022-01-17 19:04:23  阅读:238  来源: 互联网

标签:DMA 存储器 STM32F10x CPU 传输 串口 uint32 外设


一、DMA简介

DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。

二、DMA的工作原理

  DMA 传输将数据从一个地址空间复制到另外一个地址空间。当CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实行和完成。
  在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。一个完整的DMA传输过程必须经过DMA请求、DMA响应、DMA传输、DMA结束4个步骤。
  传输的四种情况:

  • 外设到内存
  • 外设到外设
  • 内存到外设
  • 内存到内存
  1. DMA主要特征
  • 12个独立的可配置的通道(请求):DMA1有7个通道,DMA2有5个通道
  • 每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置。
  • 在同一个DMA模块上,多个请求间的优先权可以通过软件编程设置(共有四级:很高、高、中等和低),优先权设置相等时由硬件决定(请求0优先于请求1,依此类推) 。
  • 独立数据源和目标数据区的传输宽度(字节、半字、全字),模拟打包和拆包的过程。源和目标地址必须按数据传输宽度对齐。
  • 支持循环的缓冲器管理
  • 每个通道都有3个事件标志(DMA半传输、DMA传输完成和DMA传输出错),这3个事件标志逻辑或成为一个单独的中断请求。
  • 存储器和存储器间的传输
  • 外设和存储器、存储器和外设之间的传输
  • 闪存、SRAM、外设的SRAM、APB1 、APB2和AHB外设均可作为访问的源和目标。
  • 可编程的数据传输数目:最大为65535
  1. DMA框图

  2. DMA硬件优先级

  3. 各个通道的DMA

三、程序分析

  1. 初始化结构体
typedef struct
{
    uint32_t DMA_PeripheralBaseAddr; 
    uint32_t DMA_MemoryBaseAddr;    
    uint32_t DMA_DIR;              
    uint32_t DMA_BufferSize;        
    uint32_t DMA_PeripheralInc;     
    uint32_t DMA_MemoryInc;         
    uint32_t DMA_PeripheralDataSize; 
    uint32_t DMA_MemoryDataSize;     
    uint32_t DMA_Mode;              
    uint32_t DMA_Priority;          
    uint32_t DMA_M2M;                
}DMA_InitTypeDef;

参考文献

STM32 DMA工作原理:https://blog.csdn.net/baidu_37366055/article/details/98069744
STM32之DMA原理:https://blog.csdn.net/lushoumin/article/details/78907526

标签:DMA,存储器,STM32F10x,CPU,传输,串口,uint32,外设
来源: https://www.cnblogs.com/jzcn/p/15814823.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有