ad采集 cube配置 dma_STM32CUBEMX_ADC电压采样DMA传输

本文介绍了如何使用STM32CUBEMX配置ADC和DMA,实现对外部电压的采集并利用DMA将数据传输到数组。通过PA0采集数据,配置ADC参数和DMA设置,同时配置串口发送数据。最终代码实现ADC值的计算和电压转换,通过串口打印结果。
摘要由CSDN通过智能技术生成

本实验使用STM32自带的ADC对外部电压进行采集,同时使用DMA将采集到的数据搬运到指定的数组,然后通过串口printf函数打印出来。如图,为板上使用的高精度旋钮式电位器。

9b1db14a2bc2c614504a2cbad0463ed9.png

通过ADC12_IN0,也就是PA0,送入单片机进行采样。

e1ce781844574fea962241cc592084d7.png

步骤如下:

1、新建工程,进行基本配置。通过点击“ACCESS TO MCU SELECTOR”来创建一个新的工程:

057be0c7d211a52462cfb0552e5b5384.png

参照实验1,芯片选择“STM32F103C8”。

打开外部时钟,点击“System Core”,选择RCC,在右侧弹出的菜单栏中选择“Crystal/Ceramic Resonator”。

选择调试接口,点击“System Core”,选择RCC。,在右侧弹出的菜单栏中选择“Serial Wire”。

2、ADC配置。先是是AD采样相关的参数,如图:

662d4031cd0227bc93fd61d018e5e14d.png

然后是DMA相关的配置,如图:

496e7a48051cbab1897817fda6eedfc4.png

3、串口配置。参照实验9配置即可。

0099c09c63807b0d6bd61bd771037953.png

4、时钟配置。参照实验1.

5、生成工程。参照实验1的步骤7,进行相应配置,生成工程文件。

f78bcbb52e03f0af144c8599561418df.png

6、串口printf。参照实验9,添加相关函数与头文件。

7、定义数组与变量。用来存储ADC采集的值和最终计算得到的值。

bfa8404aa7c92a8a4794bd6ca8a3cf05.png

代码:

__IO uint32_t ADC_ConvertedValue[20];

__IO float ADC_Volt;

8、开启ADC。启动ADC的DMA工作方式,并计算采集到的电压值,然后通过串口打印出来。

53ba8444cd2ce74796e4fb8ba8828779.png

代码:

HAL_ADC_Start_DMA(&hadc1,ADC_ConvertedValue,20);

/* USER CODE END 2 */

/* Infinite loop */

/* USER CODE BEGIN WHILE */

while (1)

{

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

for(i = 0; i < 20; ++i)

{

ADC_Value += ADC_ConvertedValue[i];

}

ADC_Value = ADC_Value / 20;

printf("ADC Value %d\r\n",ADC_Value);

printf("vol %f\r\n", ADC_Value * 3.3 / 4096);

HAL_Delay(2000);

}

修改后,保存,编译、下载,重新上电。使用串口助手连接板子和电脑,可以看到串口助手收到打印信息。

整个过程有PPT、数据手册、原理图、源码、相关软件,在公众号(单片机爱好者)回复关键词:002或者STM32CUBEMX教程,即可获取下载链接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值