您的位置 首页 基础

STM32单片机的ADC多通道采样

STM32单片机的ADC多通道采样-这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压,这样的电路设计比较简单也容易理解,但是存在一定的弊端,下面给出《STM32库开发实战指南》上面配套的硬件电路图

一 单通道采样

参阅资料

STM32库开发实战攻略》 

原理性质的东西仍是少讲,由于上面那本书里边解说的很详细了,直接来看硬件电路

STM32单片机的ADC多通道采样

这儿运用的是3362电位器(10K),即用STM32来丈量PB0和GND两头的电压,这样的电路规划比较简单也简单了解,可是存在必定的坏处,下面给出《STM32库开发实战攻略》上面配套的硬件电路图

STM32单片机的ADC多通道采样

假如规划电路图的话,能够参阅这种思路。

我的收成

1 引脚初始化的时分需求留意

每一个ADC通道都对应一个GPIO引脚,看图中的ADC123_IN10,标明这个引脚(PC0)能够装备为ADC1的通道10,或者是ADC2的通道10,或者是ADC3的通道10,这个当地非常重要,涉及到后边ADC初始化时函数的调用。

比方当咱们使能ADC时,咱们调用的函数是

ADC_Cmd();1

假如咱们运用的是ADC1,那么上面函数的写法就应该是

ADC_Cmd(ADC1,ENABLE);1

相应的假如是ADC2,那么上面函数的写法便是

ADC_Cmd(ADC2,ENABLE);1

别的需求留意的是,咱们这儿的ADC运用了DMA,所以假如你运用的是ADC1,那么对应的DMA就应该是DMA1的通道1

STM32单片机的ADC多通道采样

假如运用的是ADC2或者是ADC3就需求自己去查找手册,看看对应的是哪个DMA的那个通道。

在后边上传的程序中能够看到DMA初始化的时分有这么一条句子

DMA_Init(DMA1_Channel1);1

这便是初始化DMA1的通道1

相应的

DMA_Cmd(DMA1_Channel1,ENABLE);1

便是使能DMA1的通道1

总结一句,装备的IO口不同,对应ADC和DMA就不同。

在单通道的ADC采样中,留意上面这一个点就能够了,可是多通道采样还需求留意其他的一些当地

二 多通道采样

仍是看上面的电路图

STM32单片机的ADC多通道采样

这儿咱们假定运用PB0和PC0端口来收集电压。

STM32有三个ADC,每个ADC对应16个通道,这儿咱们仅仅用其间的两个通道来做阐明。

在程序中PB0设置为ADC1的通道8,PC0设置为ADC1的通道10。

需求留意的几个点:

1 引脚的装备,在上面现已提到

STM32单片机的ADC多通道采样

2 ADC形式的一些装备

对ADC形式的装备主要是经过对ADC_InitTypeDef结构体成员的初始化来完结的。

ADC_InitTypeDefADC_InitStructure;1

ADC_InitStructure.ADC_ScanConvMode=ENABLE;1

结构体的这个成员主要是用来设置ADC的扫描形式,咱们运用通道8和通道10,当然要答应ADC进行通道的扫描

ADC_InitStructure.ADC_NbrOfChannel=2;1

这个结构体成员是用来标明要转化的通道数目,这儿咱们运用通道8和通道10两个通道,那么这个值必定是2。

ADC_RegularChannelConfig();1

这是一个非常重要的函数

STM32单片机的ADC多通道采样

这是从《STM32库函数运用手册》中截到的图,关于函数详细参数的运用能够去看该手册。

下面结合程序来看一下这个函数的运用

STM32单片机的ADC多通道采样

函数的第三个参数是用来设置采样次序的,看咱们的程序,也便是说咱们设置ADC1的通道8先进行采样,接着ADC1的通道10再进行采样。

写到这儿,基本上多通道ADC采样程序就差不多了,至于详细的DMA运用能够参阅我后边上传的程序。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/jichu/346599.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部