STM32单片机入门学习笔记——DMA

本文是STM32单片机学习笔记,重点介绍了DMA的使用,包括DMA的基本概念、存储器映像、框图、通道配置、数据宽度与对齐、ADC与DMA结合的应用,以及相应的代码实现和优化。通过DMA,实现了外设与存储器间的高效数据传输,降低了CPU的负担。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔记整理自B站UP主江科大自化协教程《STM32入门教程-2023持续更新中》,所用单片机也为教程推荐单片机。

DMA简介

DMA(Direct Memory Access)直接存储器存取(直接存储器访问),可以直接访问STM32内部的存储器的,包括运行内存SRAM、程序存储器Flash和寄存器等等

DMA可以提供外设(外设的数据寄存器DR:Data Register比如ADC的数据寄存器、串口的数据寄存器等)和存储器(运行内存SRAM和程序存储器Flash是存储变量数组和程序代码的地方)或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源

12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道),通道就是数据转运的路径,每个通道都支持软件触发(存储器到存储器的转运)和特定的硬件触发(外设到存储器的转运)

STM32F103C8T6 DMA资源:DMA1(7个通道)

存储器映像

计算机系统的五大组成部分:运算器、控制器、存储器、输入设备和输出设备

其中运算器和控制器合在一起叫CPU,所以计算机的核心关键部分就是CPU和存储器

ROM就是只读存储器,是一种非易失性、掉电不丢失的存储器;RAM就是随机存储器,是一种易失性、掉电丢失的存储器

内核外设就是NVIC和SysTick,内核外设和其他外设不是一个厂家设计的

DMA框图

Cortex-M3内核其中包含了CPU和内核外设等等

Flash主闪存和SRAM运行内存

各个外设都可以看成是寄存器,也是一种SRAM存储器,寄存器是一种特殊的存储器,一方面CPU可以对寄存器进行读写,就像读写运行内存一样;另一方面,寄存器的每一位背后都连接了一根导线,这些导线可以用于控制外设电路的状态,比如置引脚的高低电平、导通和断开开关、切换数据选择器或者多位结合起来作为计数器、数据寄存器等等。寄存器是连接软件和硬件的桥梁,软件读写寄存器就相当于在控制硬件的执行

DMA既是总线矩阵的主动单元,可以读写各种存储器,也是AHB总线上的被动单元

CPU或者DMA直接访问Flash的话,是只可以读而不可以写的

SRAM是运行内存,可以任意读写

DMA基本结构

数据宽度:字节(Byte)、半字(HalfWord)、字(Word)

字节:8位,一次转运一个uint8_t

半字:16位,一次转运一个uint16_t

字:32位,一次转运一个uint32_t

M2M:Memory to Memory

DMA进行转运的条件

  1. 开关控制,DMA_Cmd必须使能

  1. 传输计数器必须大于0

  1. 触发源必须有触发信号

写传输计数器时,必须要先关闭DMA,再进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AoXin_TechJZ.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值