STM32单片机(八)DMA直接存储器存取----第一节:DMA直接存储器存取

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。
☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋。
🌙专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。

⭐️ 专栏主要内容: 主要学习STM32单片机的功能、各个模块、单片机的外设、驱动等,最终玩好单片机和单片机的外设,全程手敲代码,实现我们所要实现的功能。
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
💑专栏主页:http://t.csdn.cn/HCD8v

本学习过程参考:https://space.bilibili.com/383400717

STM3单片机安装软件、各种资料以及源码的路径:
链接:https://pan.baidu.com/s/1snD0uuTfMhchFqOMWvAiHA?pwd=asdf#list/path=%2F
提取码:asdf

链接里压缩包的解压密码:32

本大节主要学习DMA直接存储器存取的相关知识,包含两小节:
第一小节主要学习DMA直接存储器存取的理论基础知识,第二小节是对第一小节的内容写两个程序进行练习,分别是DMA数据转运和DMA+AD多通道;
最终附上所有的源代码;

本小节主要学习DMA直接存储器存取的理论基础知识。

1 DMA简介

在这里插入图片描述

  • DMA是一个数据转运小助手,它主要是用来协助CPU,完成数据转运的工作;

2 存储器映像

在这里插入图片描述

  • 对于计算机来说,存储器是很重要的一部分;
  • 存储器有两个重要知识点,分别是存储器的内容和存储器的地址
  • 上图列出了STM32所有类型的存储器以及对应的地址
  • 上图的存储器分为两部分,ROM和RAM;各个存储器的名称,地址,以及用途见上图;

3 DMA框图

在这里插入图片描述

  • 左上角的Cortex-M3是CPU,除此之外,图中的其他位置都是存储器;
  • 总线矩阵的左端,是主动单元,也就是拥有存储器的访问权;右边是被动单元,他们的存储器只能被左边的主动单元读写;
  • 主动单元的内核有DCode和系统总线,可以访问右边的存储器;DCode总线是专门访问Flash的,系统总线是访问其他东西的;
  • 由于DMA要转运数据,所以DMA也必须要有访问的主动权;
  • 在DMA1和DMA2里面,DMA1有7个通道,DMA2有5个通道,各个通道可以分别设置它们转运数据的源地址和目的地址,这样他们就可以各自独立的工作了;
  • 所有的DMA都要复用一条DMA总线,所以仲裁器的作用是根据通道的优先级,决定谁先用DMA总线;
  • AHB从设备是DMA自身的寄存器,因为DMA作为一个外设,它自己也会有相应的配置寄存器;其连接在了总线右边的AHB总线上,所以DMA既是总线矩阵的主动单元,可以读写各种存储器,也是AHB总线上的被动单元,
  • DMA请求是DMA的硬件触发源;比如ADC转换完成、串口接收到数据,需要触发DMA转运数据的时候,就会通过DMA请求这条线路,向DMA发出硬件触发信号;之后DMA就可以执行数据转运的工作了;这就是DMA请求的作用;

4 DMA基本结构

在这里插入图片描述

  • 外设寄存器和FLAH SRAM这两部分是数据转运的两大站点,左边是外设寄存器站点,右边是存储器站点,包括Flash和SRAM;
  • 外设和存储器这两个站点,都有三个参数;分别是起始地址、数据宽度和地址是否自增;
  • 外设的起始地址决定了数据从哪里来,存储器的起始地址决定了数据到哪里去;
  • 数据宽度这个参数的作用是,指定一次转运要按多大的数据宽度来进行;可以选择字节Byte、半字HalfWord和字Word;字节就是8位,也就是一次转运一个uint8_t这么大的数据;半字是16位,也就是uint16_t;字是32位,也就是uint32_t;
  • 地址是否自增这个参数的作用是,指定一次转运完成之后,下一次转运,是不是要把地址移动到下一个位置去;就相当于是指针,p++这个意思;
  • 传输寄存器是一个自减计数器; 每转运一次,计时器的值就减1;当计数器的值减为0,DMA就不会进行数据转运了;另外,其减到0之后,之前自增的地址也会恢复到起始地址的位置,以方便之后的DMA开始新一轮的转运;
  • 自动重装器的作用是,传输计数器减到0之后,是否要自动恢复到最初的值;如果设置了重装器,那就是循环转运;
  • M2M是M to M,存储器到存储器的意思;当给M2M为1时,DMA就会选择软件触发(可以理解成连续触发);为0时为硬件触发;
  • 软件触发和循环模式(自动重装器)不能同时用;

5 DMA请求

在这里插入图片描述

6 数据宽度与对齐

在这里插入图片描述

7 数据转运+DMA

在这里插入图片描述

上图对应着下一节练习1的流程;

8 ADC扫描模式+DMA

在这里插入图片描述
上图对应着下一节练习2的流程;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘凉~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值