stm32cubemx 多路adc采集

发布者:TranquilMind88最新更新时间:2020-02-20 来源: eefocus关键字:stm32cubemx  adc采集  转换模式 手机看文章 扫描二维码
随时随地手机看文章

采用的软件是STM32CUBEMX+KEIL5

硬件为stm32F103C8T6

我与原文作者做的区别在于

External Trigger Conversion Edge,我在进行配置的时间没有None选项,我选择的是默认的Regular Conversion launched by software


原文地址:

http://www.eemaker.com/stm32cubemxadc.html


实现功能:stm32cubeMX配置ADC多通道采集(非dma和中断方式)


Stm32ADC的转换模式还是很灵活,很强大,模式种类很多,那么这也导致很多人使用的时候没细心研究参考手册的情况下容易混淆。不知道该用哪种方式来实现自己想要的功能。网上也可以搜到很多资料,但是大部分是针对之前老版本的标准库的。昨天帮客户解决这个问题,正好做个总结:使用stm32cubeMX配置生成多通道采集的例子。


软件:stm32cubemx    MDK

硬件:eemaker板(基于stm32F103c8的)

在百度搜索ADC多通道采集,大部分的都是基于采用dma模式才实现的。而我讲的使用非dma方法。首先有几个概念要搞清楚:

扫描模式(想采集多通道必须开启):是一次对所选中的通道进行转换,比如开了ch0,ch1,ch4,ch5。Ch0转换完以后就会自动转换通道0,1,4,5直到转换完。但是这种连续性并不是不能被打断。这就引入了间断模式,可以说是对扫描模式的一种补充。它可以把0,1,4,5这四个通道进行分组。可以分成0,1一组,4,5一组。也可以每个通道配置为一组。这样每一组转换之前都需要先触发一次。


Stm32 ADC的单次模式和连续模式。这两中模式的概念是相对应的。这里的单次模式并不是指一个通道。假如你同时开了ch0,ch1,ch4,ch5这四个通道。单次模式转换模式下会把这四个通道采集一边就停止了。而连续模式就是这四个通道转换完以后再循环过来再从ch0开始。


另外还有规则组和注入组的概念,因为我这个例程只用到了规则组,就不多介绍这两个概念,想要弄清楚请自行查阅手册。


下面进入正题,配置stm32cubeMX。

Stm32cubeMx配置ADC多通道采集

先使能几个通道,我这里设置为0、1、4、5.

然后就要配置ADC的参数:

Stm32cubeMx配置ADC多通道采集

目前经过我的测试,要想用非dma和中断模式只有这样配置可以正确进行多通道转换:扫描模式+单次转换模式+间断转换模式(每个间断组一个通道)。


分析配置成这样的模式,扫描模式是在配置为多个通道必须打开的,stm32cubeMX上也默认好了,只能enable。单次转换模式是我不需要不停的去采集每个通道值,而是把四个通道采集完以后就让它停止。这里间断配置是关键,间断模式可以让扫描的四个通道进行分成四个组,stm32cubeMX参数里面number of Discontinous Conversions是配置间断组每个组有几个通道的,这里必须配置为1(否则在获取ad值得时候只能读取到每个间断组最后一个通道)。


生成mdk工程代码。这时候还没有完成,只是实现了ADC的初始化,需要采集这四个通道值得函数还要自己写。下面这个是我main函数的while循环:


for(i=1;i<5;i++)


{


HAL_ADC_Start(&hadc1);


HAL_ADC_PollForConversion(&hadc1,0xffff);


adcBuf[i]=HAL_ADC_GetValue(&hadc1);


printf("------ch:%d--%d-------rn",i,adcBuf[i]);


}


HAL_ADC_Stop(&hadc1);


HAL_Delay(1000);


调用hal库接口函数也需要注意,HAL_ADC_Start一定要放在for里面,即每一个通道都要触发。四个通道都采集完了,再去调用HAL_ADC_Stop(&hadc1);结束本次ADC采集。

最后说下,这个是针对stm32F103系列的芯片,其他型号的配置可能略有不同,大体思路一样。

关键字:stm32cubemx  adc采集  转换模式 引用地址:stm32cubemx 多路adc采集

上一篇:STM32笔记--ADC(DMA方式)
下一篇:浅谈stm32f1两路adc采集(非DMA)

推荐阅读最新更新时间:2024-11-18 20:22

STM32CUBEMX 中断管理
使用cube开发工具进行开发,使用HAL库,有一个问题就是当我们在cube界面配置完成后“以为完全配置好了”,结果在实际代码编写的时候回发现常见以下问题: 1:中断没配置 2:优先级没配置 这里简单分析以下手动开启中断的配置 取两个例子 example1:如何在无法改动cube工程的情况下 使能外部中断 step1 gpio.c 中 GPIO_InitStruct.Pin = MotoFG_Pin; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; GPIO_Ini
[单片机]
一阶互补滤波应用到stm32 ADC采集
大家都知道,adc采集,不管分辨率高低,特别是采集电压电流的值都是有一定漂移的,比如漂移个100mv左右是很正常的现象。 很多人都是用平均滤波法,这里我想说的是其实没有用,我之前就一直用的这个,真心效果很差。 其实这个问题可以用 平均滤波 加 一阶互补滤波 比较完美的滤除波动。 我这边只用平均滤波漂移在100mv,加上互补滤波后漂移基本只有10mv。已经算是相当完美了。 放小10倍的话,你的ad值基本都完全恒定了。 下面是代码,一阶互补滤波思想我就不介绍了,其实就是一个权重的问题,你更相信哪一时刻的值?不懂的自行百度。 void DEVICE_INFO::TX_updata() { //使用一阶
[单片机]
51单片机学习笔记:利用ADC0804模数转换采集电压
电位器调节待检测电压值,在数码管上显示出来, 代码大多从书上搬过来的,书上例5.3.1要求前3个数码管显示AD转换后的8位数字量(即0~255) 我这里让前4个数码管显示具体电压值,比如1.352 C代码 #include reg52.h #include MY51.H void initSMG() //数码管初始化信息 { //上电时,都为高电平 P0=0xff; wela=open; P0=0xff; wela=lock; P0=0; dula=open; P0=0; dula=lock; } vo
[单片机]
51单片机学习笔记:利用<font color='red'>ADC</font>0804<font color='red'>模数转换</font>器<font color='red'>采集</font>电压
【STM32】HAL库 STM32CubeMX教程八---定时器输入捕获
前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6/ STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: PWM工作原理 STM32CubeMX创建PWM例程 HAL库定时器PWM函数库 PWM创建呼吸灯 什么是PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非
[单片机]
【STM32】HAL库 <font color='red'>STM32CubeMX</font>教程八---定时器输入捕获
玩转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时,就是从该起始地址运行
[单片机]
玩转<font color='red'>STM32CubeMX</font> | STM32内部FLASH
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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