❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括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简介
- 2 存储器映像
- 3 DMA框图
- 4 DMA基本结构
- 5 DMA请求
- 6 数据宽度与对齐
- 7 数据转运+DMA
- 8 ADC扫描模式+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的流程;