STM32-(34):DMA传输控制(理论)

发布者:lqs1975最新更新时间:2019-08-13 来源: eefocus关键字:STM32  DMA  传输控制 手机看文章 扫描二维码
随时随地手机看文章

直接存储器传送(Direct Memory Access-DMA)

将外设的数据不经过CPU直接送入内存储器,或者,从内存储器不经过CPU直接送往外部设备
在这里插入图片描述
一次DMA传送只需要执行一个DMA周期(相当于一个总线读/写周期),因而能够满足高速外设数据传输的需要。

Direct Memory Access (存储器直接访问)。这是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过 CPU ,也不需要 CPU 干预。整个数据传输操作在一个称为" DMA 控制器"的控制下进行的。

CPU 除了在数据传输开始和结束时做一点处理外,在传输过程中 CPU 可以进行其他的工作。这样,在大部分时间里,CPU 和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。

DMA是在专门的硬件(DMA)控制下,实现高速外设和主存储器之间自动成批交换数据尽量减少CPU干预的输入/输出操作方式。通常有两种方式:①独占总线方式②周期挪用方式

主要特性:

(1) 7个独立的可配置的通道(请求)
(2) 每个通道都直接连接专用的硬件 DMA 请求,每个通道都同样支持软件触发.这些功能通过软件来配置。
(3) 在7个请求间的优先权可以通过软件编程设罝(共有四级:很高,高,中等和低),假如在相等优先权时由硬件决定(请求0优先于请求1,依此类推)。
(4) 独立的源和目标传输宽度(字节,半字,全字),模拟打包和拆包的过程。
(5) 支持循环的缓冲器管理
(6) 每个通道都有3个事件标志( DMA 半传输, DMA 传输完成和 DMA 传输出错),这3个事件标志逻辑或成为一个单独的中断请求。
(7) 存储器和存储器间的传输。
(8) 外设和存储器,存储器和外设的传输。
(9) 闪存, SRAM , 外 设 的 SRAM , APB 1和 APB 2外设均可作为访问的源和目标
(10) 可编程的数据传输数据:最大为65536

DMA控制器

1.DMA控制器
使用DMA方式传输时,需要一个专门的器件来协调外设接口和内存储器的数据传输,这个专门的器件称为DMA控制器,简称DMAC.

DMA的传送过程

1.DMA预处理:
CPU向DMA送命令,如DMA方式,主存地址,传送的字数等,之后CPU执行原来的程序。
2.数据传送:
在DMA控制下自动完成
3.DMA结束处理:
结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU.

DMA的内部寄存器

地址寄存器:存放DMA传输时存储单元地址;
字节计数器:存放DMA传输的字节数;
控制寄存器:存放由CPU设定的DMA传输方式,控制命令等;
状态寄存器:存放DMAC当前的状态,包括有无DMA请求,是否结束等。

DMA的内部结构

在这里插入图片描述
简析:我们可以看到DMAC中有刚刚提到的四种寄存器,首先进行预处理(即CPU把寄存器初始化设置OK),接口数据准备就绪,会向DMAC发出一个请求 DREQ,DMAC会向CPU申请系统总线的使用权,发出HOLD信号,如果CPU处于空闲或者任务处理完成之后,会回复一个 HLDA信号,DMAC得到CPU的回复后,会回复DACK信号给接口,表示可以传输数据,然后接口就会将数据放到总线上进行传输,DAMC通过控制地址与读写,将数据从接口送到内存储器或者将内存储器的数据送到接口。传输完成之后,HOLD就会放开,然后CPU就继续使用系统 总线。

DMA的传输过程

总线请求:DMAC向CPU申请使用总线
总线控制转移:CPU同意DMAC管理总线
数据传输:外设接口和存储器之间传输数据
修改地址和计数器:位下一次传输做准备
结束处理:DMAC放弃对总线的控制权

以上过程完全由硬件电路实现,速度很快。
用DMA方式进行一次数据传输所经历的时间称为“DMA周期”,大体相当于一次总线读写周期的时间。

STM32的DMA框图

在这里插入图片描述
DMA控制器和Cortex-M3核共享系统数据线执行直接存储器数据传输。

**简析:**外设如果有数据或者接受数据完成,会通过 DMA Request 发送相应的请求信号,AHB系统总线进入 AHB Stave,根据仲裁器和通道号进行相应的操作。DMA的通道,这里能看到的是7个(Ch1-Ch7) ,通道连接到下方图表中,DMA请求映像。
在这里插入图片描述
**简析:**这个图里的的请求映像其实相当于上图中的DMA Request,这7个通道是划分的,比如 ADC1/TIM2_CH3/TIM4_CH1他们的触发信号归类为通道1,这些都是 HW REQUEST 1为硬件的触发信号,另外还有 SW TRIGGER 为软件触发信号,一般是内存到内存,这里就与外设无关,这里通道优先级由上到下(1到7),每个通道可以单独打开与关闭,比如Channel 1 EN bit,每个通道都对应多个外设。

DMA 通道分配对照表

在这里插入图片描述

DMA通道配置过程

  1. 在DMA_CPARx寄存器中设置外设寄存器的地址,发生外设数据传输请求时,这个地
    址将是据传输的源或目标。

  2. 在DMA_CMARx寄存器中设置数据存储器的地址.发生外设数据传输请求时,传输的
    数据将从这个地址读出或写入这个地址。

  3. 在DMA_CNDTRx寄存器中设置要传输的数据量。在毎个数据传输后,这个数值递减。

  4. 在DMA_CCRx寄存器的PL[1:0】位中设置通道的优先级,

  5. 在DMA_CCRx寄存器中设置数据传输的方向、循环模式、外设和存储器的增量模式、
    外设和存储器的数据宽度、传输一半产生中断或传输完成产生中断。

  6. 设置DMA_CCRx寄存器的ENABLE位,启动该通道。
    —旦启动了DMA通道,它既可响应联到该通道上的外设的DMA请求。
    当传输一半的数据后,半传输标志(HTIF)被置1 , 当 设置了允许半传输中断位(HTIE)时,将产
    生一个中断请求,在数据传输结束后,传输完成标志(TCIF)被置1 , 当 设置了允许传输完成中断位(TCIE)时,将产生一个中断请求。

几种常用的模式

1、正常缓存模式
2、循环缓存模式
循环模式用于处理循环缓冲区和连续的数据传输(如ADC的扫描模式)。在DMA_CCRx寄存器中的CIRC位用于开启这一功能。当启动了循环模式,数据传输的数目变为0时,将会自动地恢复成配置通道时设置的初值,DMA操作将会继续进行。

数据流向
1、外设到内存、内存到外设模式
2、内存到内存模式
当DMA通道的操作可以在没有外设请求的情况下进行,这种操作就是存储器到存储器模式。
当设置了DMA_CCRx寄存器中的 MEM2MEN位后,在软件设置了MA_CCRx寄存器中的EN位启动DMA通道时,DMA传输将马上开始,当DMA_CNDTRx寄存器变为0时,DMA传输结束。存储器到存储器模式不能与循环模式同时使用。

DMA的寄存器

在这里插入图片描述
具体寄存器各个位的配置请参照手册


关键字:STM32  DMA  传输控制 引用地址:STM32-(34):DMA传输控制(理论)

上一篇:STM32-(33):低功耗模式与唤醒
下一篇:STM32-(35):DMA传输控制(实验)

推荐阅读最新更新时间:2024-11-12 14:57

旋转编码器(STM32PWM输入实验)
一、编码器的介绍 编码器拆解视频 ECC11旋转编码器介绍 51的编程以及消抖(没完全消) 二、简单玩一玩 1.简单理解一下: VCC和GND基本上都知道了 然后SW就是按钮,详细的看拆解视频,按下接通GND,为低电平。 CLK和DT说明: //CLK和DT实际上并没有明确定义什么意思,别一拿到就想是IIC的sck个sda,这不是那个!!! 1 SCK和DT更像是通道A和通道B。 你旋转的话,涉及到了谁先转向低电平的问题。 比如我通道A(图中ch1,蓝色的那个)接CLK,通道2(CH2,黄色的那个)接DT,图拍的不好,看视频好一点,左右转时的电平变化情况: 左转: 右转: 2.结论: 触发方式为下拉触发
[单片机]
旋转编码器(STM32PWM输入实验)
STM32 PWM波驱动模拟舵机(库函数版)
数字舵机 vs 模拟舵机 “数字舵机区别于传统的模拟舵机,模拟舵机需要给它不停的发送PWM信号,才能让它保持在规定的位置或者让它按照某个速度转动,数字舵机则只需要发送一次PWM信号就能保持在规定的某个位置。” 到底模拟舵机与数码舵机在实际使用中有什么区别呢?我自己总结大致有以下几点: 1 数码舵机在位置准确度方面要高于模拟舵机。 2 在同样标称1.6公斤的舵机面前数码舵机在实际表现中会感觉更加“力气大”而模拟舵机就会“肉”点。 3 模拟舵机由于控制芯片是模拟电路,所以即便是相同型号的舵机会存在小小的性能差异,而数码舵机在一致性方面就非常好。 4 数码舵机一般均采用PID优化算法,所以,线性要好过模拟舵机。 5 对于高灵敏度
[单片机]
基于STM32的智能参数测试仪的设计方案
产品检测是生产厂家和用户都关心的问题。在产品生产过程中,检测是必不可少的一部分,有的还是工艺过程的一道工序。电磁继电器是电力系统以及其他电气控制系统中常用的开关元件,它们的可靠性是电力系统和其他电气控制系统可靠运行的重要保证,因此,必须对继电器的特性参数进行准确的测试。电磁继电器的电气参数主要有线圈电阻、触点接触电阻、吸合电压、释放电压、吸合时间、释放时间等。这些参数对研究继电器可靠性、动态性能具有重要意义,是保证其质量特性的重要参数。 1 系统总体架构 1.1 系统硬件结构 系统硬件主要包括UART 串口通信模块、JTAG 接口模块、测试结果显示模块、检测程序存储模块FLASH、检测电路模块以及SRAM 模块。系统总体硬件结构框
[电源管理]
基于<font color='red'>STM32</font>的智能参数测试仪的设计方案
STM32单片机学习笔记(5):ADC模数转换器
项目简介 利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。这是第五部分针对STM32单片机内置ADC模块的学习和理解。 硬件模块 STM32F103R4 LDR 串口模块 软件工具 CubMX Proteus KEIL 电路连接图 工作流程 首先创建一个CubMX工程,选择ADC模块 其余保持默认即可。 然后就是编写程序,程序代码在后面会列出来,这里简单说说自己遇到的一些问题。刚开始出来的结果全是0,但是网上有人说在实物开发板上是可以正常运行的。本来想放弃选用ADC0832模块的,不过不幸的事
[单片机]
<font color='red'>STM32</font>单片机学习笔记(5):ADC模数转换器
快速推进电源解决方案开发过程,STM32数字电源生态系统问市
意法半导体推出了基于网站的数字电源开发生态系统,帮助设计人员用STM32微控制器(MCU)开发数字电源解决方案。 数字电源是能够优化能源效率并通过捕获丰富的数据来实现诊断和安全保护功能的新一类设备,设计人员可以通过数字控制提高功率密度,缩减产品尺寸,降低重量,这对于数据中心、5G基础设施、智能照明和移动设备至关重要。 STM32 D-Power网站 整合了开发数字电源所需的全部资源,包括STM32 Discovery Kit多合一数字电源开发套件、嵌入式软件组件、ST授权合作伙伴Biricha Digital开发的软件工具,演示各种设计和功率值的专用电源板,以及适合从初学者到专业电源设计人员的各种水平开发者的技术文档、视频
[单片机]
快速推进电源解决方案开发过程,<font color='red'>STM32</font>数字电源生态系统问市
STM32中断和异常
异常主要分为中断(如IO口,UART,等)和系统异常(如NMI,SYCTICK,等),注意区分中断和系统异常,下文异常为统称, 在CMSIS中,IRQn_Type为异常类型的枚举,系统异常一般为负数,中断则从0开始 常用的操作异常的CMSIS函数,为了可移植性,建议使用这些函数操作异常。中断相关寄存器主要在NVIC,系统异常相关寄存器主要在SCB中。 这些函数在core_cm4.h中定义 系统复位时,所有中断都是禁止的,并且优先级为0(最高优先级),所有系统初始化时要调用一次NVIC_PriorityGroupConfig来设置优先级分组情况。 异常优先级分为抢占优先级和子优先级,高抢占优先级的异常(优先
[单片机]
<font color='red'>STM32</font>中断和异常
STM32高级定时器、通用定时器TIMx、基本定时器TIM6和TIM7的区别
TIM1和TIM8定时器的功能包括: ● 16位向上、向下、向上/下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值 ● 多达4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 死区时间可编程的互补输出 ● 使用外部信号控制定时器和定时器互联的同步电路 ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器 ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 ● 如下事件发生时产生中断/DMA: ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发事件(
[单片机]
STM32时钟系统介绍与总结
时钟树: 1. HSI振荡器时钟 The HSI clock signal is generated from an internal 8 MHz RC Oscillator and can be used directly as a system clock or divided by 2 to be used as PLL input. The HSI RC oscillator has the advantage of providing a clock source at low cost (no external components). It also has a faster startup time than
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved