DMA(无须CPU干预)

本文详细介绍了STM32F103C8T6中的DMA功能,包括其直接存储器存取原理、12个通道的配置、传输计数器和自动重装器的使用,以及如何与ADC配合实现高效的数据扫描,避免数据丢失。
摘要由CSDN通过智能技术生成

DMA简介:

DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源 12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道) 每个通道都支持软件触发和特定的硬件触发 STM32F103C8T6 DMA资源:DMA1(7个通道)

DMA基本结构

 DMA可以进行外设以及储存器之间的数据传输,上面外设可以存放寄存器的地址,相仿,寄存器也可以存放外设的地址,只是单纯一个命名而已,没有规定存放规则!只需要调整自己想要的传输方向即可!

传输计数器:传输的数量,每次进行一次数据传输都会减一(注意:自动重装器写入时要关闭DMA)

自动重装置:启动后当自动计数器降为零时,使其恢复!(注意:软件触发不能和自动重装器同时使用)

M2M:选择硬件触发或者软件触发(软件触发常用于储存器与储存器之间的转运)

配置实例(外设传输到储存器,非自动重装,软件触发):

DMA与ADC扫描结合可以更高效完成工作,解决了数据覆盖丢失的问题。

只需要使用ADC外设请求信号硬件触发,每次转换完成一个数据后立刻触发DMA进行读取,防止数据丢失,与此有关函数以及DMA外设请求信号:

 ADC扫描模式加DMA(单次转换)

ADC以及DMA 配合工作配置:

进行一次转运后,因为DMA配置了 非自动重装模式,所以每次都得重新写入重装计数器,还有ADC配置了单次转换模式,所以每次也得进行触发ADC进行转换(自动计数器写入得关闭DMA!!)

  • 30
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值