Bootstrap

STM32F4 ADC DMA(Direct memory access)

参考文章
STM32 ADC转换+DMA传输(详解)
https://blog.csdn.net/sherlock_cp/article/details/128308375?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-128308375-blog-129385108.235%5Ev40%5Epc_relevant_anti_vip_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-128308375-blog-129385108.235%5Ev40%5Epc_relevant_anti_vip_base&utm_relevant_index=2
STM32F407 ADC多通道采样+DMA(不用定时器)
https://blog.csdn.net/m0_58181754/article/details/128757909?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1-128757909-blog-79591285.235v40pc_relevant_anti_vip_base&spm=1001.2101.3001.4242.1&utm_relevant_index=4
STM32F407 ADC多通道采样+DMA(用定时器)
https://blog.csdn.net/ic2121/article/details/127801663?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170487558116800227443470%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=170487558116800227443470&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-1-127801663-null-null.142v99control&utm_term=stm32f407adc%E5%A4%9A%E9%80%9A%E9%81%93dma%E9%87%87%E9%9B%86&spm=1018.2226.3001.4187
STM32F4 DMA视频教程
https://www.bilibili.com/video/BV1Jz4y167uM?p=51&vd_source=109fb20ee1f39e5212cd7a443a0286c5
1. 知识点
1.1 STM32F407有3个ADC控制器
STM32F407有3个ADC控制器,共24个通道,通道有8个+外部通道16个=24个外部通道

3个ADC控制器中,ADC1和ADC2的IO引脚是一样的。ADC3的IO引脚有一些差异,方便用户使用更多的ADC引脚。

ADC1和ADC2的通道是015,PA0PA7,PB8,PB9,PC0~PC5。

ADC3的通道中48对应PF610,9对应PF3,1415对应PF45。
1.2 DMA模式
直接内存访问(DMA)是用来以提供外设和内存,内存和内存之间的高速数据传输的。数据可以在没有任何CPU干预下通过的DMA进行传输。这使得CPU资源更倾重与其他操作。

DMA控制器基于一个复杂的总线矩阵架构,结合了功能强大的双AHB主总线架构与独立的FIFO,以优化系统宽带。

两个DMA控制器共有16个数据流(stream),每个数据流可以编程与规定的通道中的一个搭配。

DMA的工作模式
单次传输

多次输出(burst):把数据分成多次传输

循环模式:循环模式是可用来处理循环缓冲区和连续的数据流(如ADC扫描模式)。启此功能可以设置DMA_SxCR寄存器的CIRC位启用。(在循环模式,在burst方式下,它必须遵循下面的规则)。

双缓冲模式:双缓冲模式通过设置在DMA_SxCR寄存器的DBM位启用。

双缓冲模式与单缓冲模式的区别在于它有两个地址,当栓缓冲模式被使能,循环模式会被自动使能,每次传输完成,内存地址将会被交换。当一个内存区域被DMA控制器使用时,另一个可供程序使用。

在这里插入图片描述
407取消掉了ADC校准
2. ADC触发条件
在这里插入图片描述

3. ADC通道触发DMA
STM32F407的ADC的有规则通道和注入通道,规则通道扫描采样,配置好规则通道后,定时器更新后
触发ADC转换,ADC转换完成后触发DMA传输
在这里插入图片描述

4. DMA资源
STM32F407有DMA1 和DMA2两个控制器,下图为 DMA的请求映射。
我们使用的ADC1,也就是DMA的数据流stream0 通道0,用ADC的转换完成标志触发DMA数据传输。
在这里插入图片描述
在这里插入图片描述

;