【STM32F1标准库】理论——DMA数据转运

[复制链接]
发表于 2025-9-17 19:07:39 | 显示全部楼层 |阅读模式
目次
一、简介
1.DMA可以直接访问STM32内部的存储
2.DMA每举行一种数据转运都须要占用一个自身的转运通道
3.每个通道都支持软件触发和特定的硬件触发
①.每个通道的硬件触发源都不同,详细查表
②.外设数据产生有肯定的机遇,须要使用硬件触发特定的DMA通道
4.DMA能举行数据转运条件
二、DMA数据转运例子
1.软件例子
2.硬件例子
三、杂谈
1.盘算机的五大构成部分
2.STM32F1存储器映像
3.数据转运中的数据对齐标题
4.DMA和CPU同时访问雷同地点标题
5.软件触发和主动重装不能同时开启     
6.软件触发和硬件触发
7.ADC1支持DMA数据转运,ADC2不支持DMA数据转运


一、简介

1.DMA可以直接访问STM32内部的存储

如运行内存SRAM,
程序存储器Flash,(平常变量被const修饰就会存储在Flash中)
各种芯片外设的数据寄存器(如ADC数据寄存器,串口数据寄存器等)
由此实现外设寄存器和存储器、存储器和存储器之间的数据转运
即从某个地点取出数据,再存到另一个地点去,假如数据宽度不一致则须要数据对齐
2.DMA每举行一种数据转运都须要占用一个自身的转运通道

STM32F1资源  
DMA1: 7通道
全部通道分时复用DMA总线,须要仲裁器仲裁
3.每个通道都支持软件触发和特定的硬件触发

①.每个通道的硬件触发源都不同,详细查表

②.外设数据产生有肯定的机遇,须要使用硬件触发特定的DMA通道

软件触发例子:存储器到存储器(SRAM<——>Flash),一股脑以最快速率全部转运完成
硬件触发例子:外设到存储器(ADC数据转运),
                         期待ADC每个通道转换完成后硬件触发一次DMA才举行数据的转运
        

4.DMA能举行数据转运条件

    1.DMA使能
    2.传输计数器大于0
    3.有触发信号
       留意:对传输计数器写值必须先关闭DMA使能
二、DMA数据转运例子

1.软件例子

数组到数组的转运:一对一的转运

2.硬件例子

将外设ADC_DR寄存器中的数据转运到数组中
每个ADC通道收罗完成后触发DMA转运ADC_DR寄存器中的数据
通道2收罗完成——>   存入ADC_DR                     ——>   硬件触发DMA将其运走至ADValue[0]
通道5收罗完成——>   存入ADC_DR,覆盖前一个数据——>   触发DMA将其运走至ADValue[1]
通道4收罗完成——>   存入ADC_DR,覆盖前一个数据——>   触发DMA将其运走至ADValue[2]
 ……
假如ADC为连续扫描模式,DMA计数器须要主动重装


三、杂谈

1.盘算机的五大构成部分

        运算器
        控制器
        存储器
        输入装备
        输出装备
        运算器 + 控制器 = CPU

2.STM32F1存储器映像

        ROM:只读存储器,掉电不丢失
                     程序存储器Flash:存储C语言编译后的程序代码                          地点:0x0800 0000
                     体系存储器:         存储Bootloader                                                         0x1FFF F000
                     选项字节:             存储一些独立于程序代码的参数设置                        0x1FFF F800
        RAM:随机存储器,掉电丢失
                    运行内存SRAM:存储运行过程中的暂时变量,各种变量、数组等          0x2000 0000
                    外设寄存器:       存储各个外设的设置参数                                              0x4000 0000
                    内核外设寄存器:存储内核外设各个外设的设置参数,NVIC等               0xE000 0000

        STM中拥有对存储器访问权限的角色
                内核Dcode:只访问Flash
                内核体系总线:访问各类存储器,包罗DMA的寄存器
                DMA总线:访问各类存储器

3.数据转运中的数据对齐标题

        源端和目的端数据宽度一致,直接转运
        源端数据宽度 小于 目的端数据宽度,目的端高位补0
        源端数据宽度 大于 目的端数据宽度,源端高位数据舍去

4.DMA和CPU同时访问雷同地点标题

        DMA会停息CPU的访问,但仲裁器仍包管CPU至少可以得到一半的总线带宽
     ( 倒反天罡 Σ(;゚д゚) )
5.软件触发和主动重装不能同时开启     

6.软件触发和硬件触发

软件触发例子:存储器到存储器(SRAM<——>Flash),一股脑以最快速率全部转运完成
硬件触发例子:外设到存储器(ADC数据转运),
                         期待ADC每个通道转换完成后硬件触发一次DMA才举行数据的转运
7.ADC1支持DMA数据转运,ADC2不支持DMA数据转运


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表