STM32 DMA 学习笔记(一)

发布者:考古专家最新更新时间:2019-10-29 来源: eefocus关键字:stm32  DMA  数据传输 手机看文章 扫描二维码
随时随地手机看文章

一、功能介绍

       DMA 传输将数据从一个地址空间复制到另外一个地址空间。(不需要CPU干涉)


       传统的数据传输:地址A——>CPU——>地址B


       DMA数据传输:地址A——>地址B


这样也就为CPU减负了


二、STM32DMA

含有两个通道,DMA1有7个通道,DMA2有5个通道。每一一个通道都可以连接一个外设。那么就有一个仲裁器,来处理了通道间的优先级的。


所以,基本流程是:外设——>经过DMA通道——>存储器,或者:存储器——>经过DMA通道——>外设


存储器——>经过DMA通道——>存储器


 


三、通道特性

选好了通道,外设可选内容就已经确定了

四、DMA处理过程

1.取地址数据:

DMA_CPARx:存储外设基地址,首先要对它进行赋值,比如要 串口一发送地址PR寄存器地址


DMA_CMARx:内存内存基地址,对它进行赋值,比如赋值给内存中每一个数组的地址


2.确定传输量

DMA_CNDTRx:确定我们要传输的数据量,最大65535


3.确定数据传输方向:DIR

假设从传输方向是从内存到外设,传输100个数据,那么DMA_CNDTRx就会在传输过程中,传递一个减一个,减到0后表明传输结束了。


五、仲裁器

优先级管理两个部分:软件和硬件


1.软件:由DMA_CCRx寄存器设置,有4个等级


(1)最高           (2)高                 (3)中等                     (4)低


2.硬件:当两个请求的软件优先级相同时,低编号优先级高于高通道。比如通道2高于通道4


并且DMA1的优先级高于DMA2


六、数据宽度

1.内存数据宽度


2.外设数据宽度


两者的宽度可以不一样,但是不一样时候处理比较麻烦,需要参考数据手册。


七、指针增量

三种模式:存储器地址增量模式,外设地址增量模式,循环模式


以存储器向外设传输为例,把数组的地址作为内存基地址,外设基地址作为串口1的数据寄存器地址。


那么它的工作流程是怎么样的呢?以存储器地址增量模式为例


首先从数组的最低位开始传输,传完一个后,地址自动加1,获取当前地址数据。这样每次传完一次,地址加1,一直到传输结束。


循环模式的话:比如100个数据传输完成后,它又会重头开始继续传输。


八、通道传输数据量

一次传输最大数据量位65535.可以知道传输进度。


九、中断

每个DMA通道都可以在传输过半,传输完成,传输错误是产生中断。可以通过设置寄存器的不同位来打开这些终端。


十、配置过程

 


关键字:stm32  DMA  数据传输 引用地址:STM32 DMA 学习笔记(一)

上一篇:STM32之独立看门狗 学习笔记
下一篇:STM32新势力,首款MPU—STM32MP1问市

推荐阅读最新更新时间:2024-11-01 09:30

STM32 GPIO相关知识点
简介:开漏输出:OC门的输出就是开漏输出;OD门的输出也是开漏输出。TTL电路有集电极开路OC门,MOS管也有和集电极对应的漏极开路的OD门,它的输出就叫做开漏输出。它可以吸收很大的电流,但是不能向外输出电流。所以,为了能输入和输出电流,它使用的时候要跟电源和上拉电阻一齐用。 OC门开漏输出和OD门开漏输出都是为了同一个目的,都是为了实现逻辑器件的线与逻辑,当然选用不同的外接电阻也可以实现外围驱动能力的增加。当你应用此电路的时候,要注意应用时要加上拉电阻接电源,这样才能保证逻辑的正确,在电阻上要根据逻辑器件的扇入扇出系数来确定,但一般mos电路带载同样的mos电路能力比较强,所以电阻通常可以选择2.2k,4.9k这样一些常用的
[单片机]
应用笔记 | 关闭SPI会导致WRPERR错误的问题分析
01 引言 在STM32的应用中,SPI算是用的比较多的外设了,也是单片机最常见外设之一。客户说它执行了关闭SPI的代码,竟然会导致Flash中的WRPERR标志置位,致使应用碰到一些问题。这就奇怪了,SPI和内部Flash看起来是风马牛不相及的事情,为什么会发生这种事呢?一起来看看吧。 02 问题 2.1 问题起源 客户在使用STM32L072RBT6的时候,使用STM32 CubeL0库,在程序编写时,发现执行关闭SPI代码时,会导致Flash的写保护错误标志WRPERR置位,导致其后面准备写EEPROM的时候,就无法对EEPROM写入了。 客户使用两个标志flag1和flag2,来观察WRPERR标志的变
[单片机]
应用笔记 | 关闭SPI会导致WRPERR错误的问题分析
STM32步进电机驱动的算法
在脉冲模式下,步进电机启动器的脉冲频率与速度成正比,函数void CalculateSModelLine(float fre , unsigned short period , float len, float fre_max, float fre_min, float flexible)主要目的就是生成每一个细分步加速的速度。芯片用的是stm32f103c8t6,驱动器用的是2DM420。 程序流程如下: STM32硬件基本初始化,主要是针对定时器 调用函数CalculateSModelLine()生 成每一个细分步定时器的自动重装载值(实际就是改变脉冲的周期) 打开定时器 更新中断发生,将数组中的数据赋值给定时器的
[单片机]
基于STM32的新型角度测量系统设计
在现代控制系统中,角度测量装置是非常关键的需要高精度的部件,其测量精度直接影响着整个系统的性能和精度。例如施工 升降机上有角度测控机构来控制起降;火箭炮瞄准系统中都有大量的角度传感器,实时检测炮塔偏转角度,以便对火箭炮瞄准进行调整。目前已有的利用的加速度传 感器实现高精度角度测量的研究,主要侧重于单轴的角度测量。本文将重点讨论利用双轴加速传感器ADXL202实现高精度角度测量的软硬件方法。 1 角度测量仪系统硬件方案设计 本角度测量仪采用STM32F107作为数据处理的核心芯片。这是一款低功耗、高速度的32位处理器,拥有Cortex-M3内核。角度测量模块使用的是高精度、低功耗的双轴加速度传感器ADXL202,能将加速度信号转换成
[单片机]
基于<font color='red'>STM32</font>的新型角度测量系统设计
意法半导体STM32 F4系列中最小的微控制器产品已投入量产
意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)宣布旗下STM32F4系列的STM32F410基本型微控制器已投入量产,配备新的开发板NUCLEO-F410RB,实现尺寸更小、功耗及成本更低的高性能STM32 F4系列入门级产品。 STM32F410搭载ARM Cortex -M4F处理器内核,在100MHz时,运算速度可达125 DMIPS,并在EEMBC CoreMark 测试中取得339分的优异成绩。具有功耗敏感(Power-conscious)的STM32 Dynamic Efficiency 特性,例如意法半导体的ART Accelerator 和电压调节,可将动态功
[单片机]
stm32红外遥控
HS0038B http://www.51hei.com/stm32/3589.html 我用的红外遥控是使用的NEC协议,即使用PWM来调制发送的信息 NEC协议,其特征如下: 1、8位地址和8位指令长度; 2、地址和命令2次传输(确保可靠性) 3、PWM脉冲位置调制,以发射红外载波的占空比代表“0”和“1”; 4、载波频率为38Khz; 5、位时间为1.125ms或2.25ms; NEC码的位定义:一个脉冲对应560us的连续载波,一个逻辑1传输需要2.25ms(560us脉冲+1680us低电平),一个逻辑0的传输需要1.125ms(560us脉冲+560us低电平)。而遥控接收头在收到脉冲的时候为低电平,
[单片机]
<font color='red'>stm32</font>红外遥控
CC1101工作原理 基于与STM32的CC1101接口移植
本文主要是关于CC1101的相关介绍,并着重对CC1101工作原理进行了详尽的叙述。 CC1101 CC1101 [1] 是一款低于1GHz设计旨在用于极低功耗RF应用。其主要针对工业、科研和医疗(ISM)以及短距离无线通信设备(SRD)。CC1101可提供对数据包处理、数据缓冲、突发传输、接收信号强度指示(RSSI)、空闲信道评估(CCA)、链路质量指示以及无线唤醒(WOR)的广泛硬件支持。CC1101在代码、封装和外引脚方面均与CC1100兼容,可用于全球最为常用的开放式低于1GHz频率的RF设计。● 超低功耗无线收发器● 家庭和楼宇自动化● 高级抄表架构(AMI)● 无线报警安全系统◆ 387.0MHz~464.0MHz工作
[单片机]
CC1101工作原理 基于与<font color='red'>STM32</font>的CC1101接口移植
stm32设置JTAG工作模式
/* set JTAG mode */ #define JTAG_SWD_DISABLE 0x01 #define SWD_ENABLE 0x02 #define JTAG_SWD_ENABLE 0x04 void JTAG_Set(u8 mode) { u32 temp; temp=mode; temp =25; RCC- APB2ENR |= 1 0; //开启辅助时钟 AFIO- MAPR &= 0XF8FFFFFF; //清除MAPR的 AFIO- MAPR |= temp; //设置jtag模式 }
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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