DMA(无须CPU干预)

DMA简介:

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

DMA基本结构

DMA(无须CPU干预)_第1张图片

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

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

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

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

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

DMA(无须CPU干预)_第2张图片

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

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

DMA(无须CPU干预)_第3张图片 ADC扫描模式加DMA(单次转换)

DMA(无须CPU干预)_第4张图片

ADC以及DMA 配合工作配置:

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

DMA(无须CPU干预)_第5张图片

你可能感兴趣的:(STM32单片机标准库,stm32,学习,笔记)