DMA转运数据+AD多通道

DMA(Direct Memory Access) —直接存储器存取,是单片机的一个外设,它的主要功能
是用来搬数据,但是不需要占用 CPU, 数据传输支持从外设到存储器或者存储器到存储器,这里的存储器可以 SRAM 或者是 FLASH。
江科大学习笔记。
DMA转运的3个必要条件:①传输计数器大于0  ②有触发源 ③使能DMA
DMA数据转运
DMA转运数据编程主要思路:

1)对外设和存储器进行初始化

2)由M2M确定触发方式(merry to merry 存储器到存储器表示软件触发)

3)确定传输模式选择

4)使能DMA

DMA数据转运的详细代码介绍(本次外设作为源地址,选择一次传输,软件触发)

1)开启DMA时钟

2)初始化DMA结构体

PeripheralDaseAddr:为外设地址

PeripheralInc:地址是否自增(若外设定义为寄存器不用自增,增加地址后,寄存器发生改变了,若读取flash,sram中一块区域地址,地址自增)

PeripheralDataSize:外设数据宽度(外设数据为所示字节)

存储器初始化与外设相同

IDR:传输方向(相对于外设来说,若读取外设写入存储器中,定义为源地址,若读取存储器写入外设,定义为目标地址)

BuffSzie:传输数目(自动重载器里面的值,由读取地址内容决定)

Mode:选择一次传输或循环传输(往传输计数器写值的次数,一次还是循环写入)

M2M:软件触发(存储器到存储器)还是硬件触发,使用软件触发,模式不能选择循环模式

Priority:传输优先级

3)使能DMA,DMA开始转运

完成一次后,DMA搬运结束,若循环进行DMA搬运,对传输计数器赋值(软件触发一直有触发信号,使能DMA也不是问题)

4)循环转运DMA(手动写传输计数器,在失能DMA下进行写入)

先失能DMA,调用DMA_SetCurrDataCounter函数对传输计数器赋值,使能DMA ,等待DMA转运完成,清除DMA标准位。

DMA转运AD多通道编程的主要思路

AD配置:通过ADC_RegularChannelConfig函数,配置AD多通道,使用单次,扫描模式

DMA配置:外设地址配置为ADC1的DR寄存器,读取十六位数据(半字读取),地址不自增,定义一个数组为存储器,存储器地址为数组地址,读取数据相同,地址自增,外设为源地址,使用硬件(ADC)触发,选择一次传输模式。

打开ADC触发DMA通道

在(AD:单次,扫描模式 , DMA一次传输)情况下,循环转运,①对传输计数器赋值(与上面相同)②开启ADC软件触发 ③等待DMA转运完成

在(AD:非单次,扫描模式 , DMA循环传输)情况下,只需要软件触发ADC一次,DMA就鞥循环转运。

AD单次模式:触发一次就转化ADC一次,若需要进行循环转化,需要手动进行触发

AD非单次模式:触发一次就能够循环转运

AD非扫描模式:只对规则列表里面的序列1有效,即对序列1里面的通道进行AD转化

AD扫描模式:能够指定规则列表有效的序列数,一般与DMA相配合使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32F4DMA双缓冲AD是指STM32F4系列微控制器中的DMA (直接存取存储器) 控制器与模拟数字转换器 (AD) 的结合。 在STM32F4系列微控制器中,DMA是一种直接将数据从外设传输到存储器或从存储器传输到外设的机制,而无需CPU的干预。它是一种高效的数据传输方式,可以提高数据传输的效率和性能。 而双缓冲AD是一种数字信号处理技术,在模拟信号转换为数字信号时使用两个独立的存储器缓冲区。当一个缓冲区正在进行模数转换时,另一个缓冲区可以被读取,以确保连续的数据流,并减少数据丢失的可能性。 将DMA与双缓冲AD结合可以实现高速和连续的模拟信号采集。STM32F4系列微控制器中的DMA控制器可以根据配置进行数据传输,并将AD转换得到的模拟数据存储到不同的缓冲区中。当一个缓冲区存满时,DMA可以自动切换到另一个缓冲区进行数据传输,而不需要CPU的干预。这使得模拟信号的连续采集成为可能。 在使用STM32F4DMA双缓冲AD时,我们可以利用DMA的高效性能和双缓冲的连续数据流特性,从外设(如传感器)获得模拟信号,并通过DMA将其传输到存储器中。这样可以实现高速和连续的数据采集,方便后续的数字信号处理和分析。 总的来说,STM32F4DMA双缓冲AD是一种利用DMA和双缓冲技术实现高速和连续模拟信号采集的方案。它可以提高数据传输的效率和性能,适用于需要连续采集模拟信号的应用场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值