您现在的位置是:首页 >其他 >STM32配置ADC2(DMA)进行采集 DAC 输出-1网站首页其他
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
,大家可以根据自己的喜好来进行设置