[STM32H7] STM32H743+CubeMX-ADC+DMA采样三路模拟量(并行)

[复制链接]
941|6
 楼主| 键盘手没手 发表于 2021-12-31 16:11 | 显示全部楼层 |阅读模式
STM32H743+CubeMX-ADC(16bit分辨率)+DMA采样三路模拟量(并行),没过采样

一、前言
在实际项目上,ADC采样必须与DMA组合使用,实现并行采样。这里的“并行采样”并不是多个通道同时采样,而是ADC控制器一边采样,CPU一边干其他非常重要的活。当CPU在需要ADC采样的数据时,通过cache获取内存里模拟量的值即可。

这个笔记实现ADC3+DMA采样三路模拟量,分别是ADC_IN9, Vrefint Channel(MCU内部), Temperature Sensor Channel(MCU内部).


 楼主| 键盘手没手 发表于 2021-12-31 16:27 | 显示全部楼层
系统框图如下(从右到左):

ADC3采样各个通道的模拟量,每当采样完成时,让DMA将采样的数据存放到内存RAM_D3里(声明一个全局数组ADC3_Data[3])。

每隔300ms,CPU通过cache获取全局变量ADC_Data[0] ~ ADC_Data[2]一共3个模拟量。

3876361cebb63d65ea.png
 楼主| 键盘手没手 发表于 2021-12-31 16:29 | 显示全部楼层
STM32工程:

链接:https://pan.baidu.com/s/1KbbWJ7K4SgKxjOns4iLOPA
提取码:kexw
 楼主| 键盘手没手 发表于 2021-12-31 16:42 | 显示全部楼层
二、CubeMX
2.1、RCC,SYS,Clock Configuration

 楼主| 键盘手没手 发表于 2021-12-31 16:46 | 显示全部楼层
2.2、CORTEX_M7(cache与MPU)
DMA不能访问DTCM内存,所以要开辟RAM_D3内存,让DMA有地方放数据。基于这个目的,需要开启Cortex_M7的cache与MPU功能。
 楼主| 键盘手没手 发表于 2021-12-31 16:52 | 显示全部楼层
yanzp_2014 发表于 2022-10-6 23:19 | 显示全部楼层
请问楼主,可以分享一下代码吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

104

主题

1260

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部