STM32配置ADC2进行DMA采集并通过DAC输出-1

1.实验目标

在正点原子的ADC(DMA)例程上,将ADC1改成ADC2来采集电压,并且进行测试
开发板:正点原子探索者STM32F407ZG

2.查看adc.h和开发指南需要修改哪些配置

1.ADC相关

通过查看开发指南我们发现,ADC1 和 ADC2 的通道 5 都是采用的 PA5 引脚,就意味着我们修改为 ADC2 后还是可以通过 PA5 来进行电压的测量。

对应的我们在adc.h中找到相关的配置,这里开启的是 ADC1 的时钟

在这里我们要改为 ADC2 的时钟,即如下图所示。

如果不知道不知道 ADC2 对应的函数是什么,可以选中这个函数,然后右键 Go To 一下,一般来说相关配置的宏定义都会在弹出的文件的游标附近,可以自行找一下,或者是根据他的命名规则直接来修改也可以(一般是不会有问题,有问题了再说)

2.ADC和DMA数据流相关

通过数据手册我们可以看到,例程给的是 DMA2 的
通道 0 数据流 4 ADC1 的配置,我们需要修改为
通道 1 数据流 2 ADC2 的配置

还需要查看一下 DMA 中断相关的寄存器,注意标红的位置,一会修改的时候会用上


在adc.h中我们去查看一下相关的宏定义

看了手册后,我们对这里的宏定义修改应该行云流水了,下面是修改后的样子,注意标红的位置。根据上面的手册我们可以知道 HISR 和 HIFCR 是控制数据流 4-7 的,而我们现在输入的流是 2 所以对应的要修改为 LISR 和 LIFCR ,而这里的偏移量也是根据手册上标记的来设置的
修改了以上的设置 adc.h就算是修改完成了,但是此时我们还是不能使用,因为在adc.c中还有一些地方需要修改

3.adc.c的修改

我们找到这个函数,发现这里的初始化函数是写死的参数,于是我们需要手动的进行修改

修改后的样子

到这里我们就成功的设置了使用 ADC2 来进行采集啦,下一节将会实现通过按键按下一次输出三角波,然后通过刚刚写好的 ADC2 来进行采集,并且通过串口发送到电脑上生成图像进行验证。

3.注

可以采用adc_dma_enable(ADC_DMA_BUF_SIZE);来开启一次 ADC 的采集,采集的大小为ADC_DMA_BUF_SIZE我把ADC_DMA_BUF_SIZE的宏定义放在了adc.h中,我设置的大小为10000,大家可以根据自己的喜好来进行设置

4.下一节:STM32配置ADC2(DMA)进行采集 DAC 输出-2

物联沃分享整理
物联沃-IOTWORD物联网 » STM32配置ADC2进行DMA采集并通过DAC输出-1

发表评论