STM32的ADC采样与多通道ADC采样

发布者:心若水仙最新更新时间:2017-09-12 来源: eefocus关键字:STM32  ADC采样 手机看文章 扫描二维码
随时随地手机看文章

一 单通道采样 
参考资料:

《STM32库开发实战指南》 刘火良,杨森著

原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来看硬件电路图

这里写图片描述

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

如果设计电路图的话,可以参考这种思路。

我的收获 
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

这里写图片描述

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

在后面上传的程序中可以看到DMA初始化的时候有这么一条语句

DMA_Init(DMA1_Channel1);1

这就是初始化DMA1的通道1

相应的

DMA_Cmd(DMA1_Channel1,ENABLE);1

就是使能DMA1的通道1

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

在单通道的ADC采样中,注意上面这一个点就可以了,但是多通道采样还需要注意其他的一些地方

二 多通道采样

还是看上面的电路图

这里写图片描述

这里我们假设使用PB0和PC0端口来采集电压。

stm32有三个ADC,每个ADC对应16个通道,这里我们只是用其中的两个通道来做说明。

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

需要注意的几个点:

1 引脚的配置,在上面已经说到

这里写图片描述

2 ADC模式的一些配置

对ADC模式的配置主要是通过对ADC_InitTypeDef结构体成员的初始化来完成的。

ADC_InitTypeDef ADC_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库函数使用手册》中截到的图,关于函数具体参数的使用可以去看该手册。

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

这里写图片描述

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

写到这里,基本上多通道ADC采样程序就差不多了,至于具体的DMA使用可以参考我后面上传的程序。


关键字:STM32  ADC采样 引用地址:STM32的ADC采样与多通道ADC采样

上一篇:基于stm32的超声波测距
下一篇:基于stm32的pwm呼吸灯

推荐阅读最新更新时间:2024-03-16 15:36

stm32的定时器使用方法
STM32学习笔记(六)----TIM (待补充) 1、使能TIM时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM*,ENABLE); 2、基础设置 TIM_TimeBaseStructure.TIM_Period 计数值 TIM_TimeBaseStructure.TIM_Prescaler 预分频,此值+1为分频的除数 TIM_TimeBaseStructure.TIM_ClockDivision = 0 时钟因子 待做进一步说明 TI
[单片机]
玩转STM32CubeMX | STM32内部FLASH
1.内部FLASH简介 之前的文章中介绍过STM32F1利用SPI与外部FLASH(W25QXX芯片)通讯的例程,本例程将介绍STM32F1的内部FLASH,通过内部FLASH实现数据读写操作。 不同型号的STM32,其FLASH容量也有所不同,最小的只有16K字节,最大的则达到了1024K字节。此处我们使用的是STM32F103ZET6,其FLASH容量为512K字节,属于大容量产品,大容量产品的闪存模块组织图如下图示 STM32F1的闪存模块由:主存储器、信息块和闪存存储器接口寄存器3部分组成 *主存储器:用来存放代码和数据常量,起始地址是0x08000000,BOOT0和BOOT1都接GND时,就是从该起始地址运行
[单片机]
玩转STM32CubeMX | <font color='red'>STM32</font>内部FLASH
STM32跑马灯实验——库函数版本
1.编写led.h文件 #ifndef __LED_H #define __LED_H //如果标识符__LED_H没有被定义,则定义标识符__LED_H, void LED_Init(void); #endif 3,编写led.c文件 #include led.h #include stm32f4xx.h void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); GPIO_InitStructure.GP
[单片机]
STM32 GPIO寄存器的相关知识
一、前言 在之前的STM32的GPIO理论基础知识中,分别对基本结构和工作模式进行了详细的介绍。 GPIO基本结构中主要对GPIO内部的各个功能电路逐一的进行的分析; GPIO工作模式中主要介绍GPIO应用在不同的使用场景下,GPIO端口的静态特征配置和动态的工作模式,同时对信号的工作流进行了分析。 这一篇主要对GPIO模块使用到的寄存器进行详细的分析介绍,适当了解GPIO寄存器的相关知识,可以对GPIO最底层的一些配置和工作原理有更好的认识,有助于加深对GPIO基本结构及工作模式的理解,同时对后续介绍到的GPIO在应用设计中有较好的帮助。 二、寄存器概述 图1为STM32的GPIO模块中寄存器的概述,总共有5种类型的寄存
[单片机]
<font color='red'>STM32</font> GPIO寄存器的相关知识
STM32菜鸟成长记录---窗口看门狗
stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。 独立看门狗是限制喂狗时间在0-x内,x由你的相关寄存器决定。喂狗的时间不能过晚。 窗口看门狗,所以称之为窗口就是因为其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和下限时间。喂狗的时间不能过早也不能过晚。 图1 窗口看门狗的 上窗口就是配置寄存器WWDG- CFR里设定的W ; 下窗口是固定的0x40; 当窗口看门狗的计数器在上窗口值之外,或是低于下窗口值都会产生复位。 图2 && 上窗口的值可以只有设定,7位二进制数最大只可以设定为127(0x7F),最小又必须大于下窗口的0x40,所以其
[单片机]
<font color='red'>STM32</font>菜鸟成长记录---窗口看门狗
stm32通用定时器中断问题
在使用stm32的通用定时器定时中断的时候,发现定时器在完成初始化配置后,定时器UIF位会立刻置位,导致在使能中断后,程序会立刻进入定时器中断。 如果设计代码时不希望定时器配置完成后,立刻进入中断,可以在定时器配置完成后,立刻清除UIF标志位(TIMx- SR &= 0xFFFE) ,再使能定时器更新中断。比如用库函数这么写: TIM_ClearITPendingBit(TIM4, TIM_IT_Update ); TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE ); //使能TIM4的更新中断 TIM_Cmd(TIM4, ENABLE); 但又发现个特别奇怪的问题,TIM_ClearITPen
[单片机]
基于STM32的MIT-BIH心电数据的D/A回放
0 引言 心电信号是人类最早开展研究并应用于临床医学的生物电信号之一,通过对心电信号的分析处理能有效地预测心脏疾病。如何利用心电数据开发研究相关的医疗设备是对科研人员至关重要。心电数据的回放就是将原有的存储的MIT-BIH心电数据,根据其存储的格式,利用设计的系统通过D/A转换最终从终端回放出模拟信号。本文介绍基于ARM Cortex-M3内核的STM32微控制器作为主控嵌入式芯片的心电信号数据回放的设计方法。 1 工作原理和硬件设计 上位机应用程序读取心电数据库中一文件,利用设备驱动程序与D/A回放模块设备进行通信。通过USB总线不断向硬件设备发送数据,设备接收到的原始数据,利用DMA传输方式,连续、不丢失地传送到DAC模
[单片机]
基于<font color='red'>STM32</font>的MIT-BIH心电数据的D/A回放
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved