stm32 adc 连续和扫描_技术分享 | STM32多个ADC模块同时采样转换的应用示例

在STM32家族里,多数系列芯片内含2到3个ADC模块,有的甚至更多,比方G4系列可以有5个ADC模块。其中,通道数因不同的系列或型号多少不等,几个到几十个的都有。有时,我们可能需要多个ADC模块同时工作,比方3个ADC模块同时采样转换。这时如果芯片内含有3个ADC模块,并支持同时采样转换就很方便。STM32家族里的STM32F4系列、STM32F7等其它系列都含有3个ADC模块,并支持同时AD采样转换。

这里就3个ADC模块同时进行采样转换应用,做个简单实现演示,以供有需要的用户参考。

此时3个ADC模块会建立主从关系。以STM32F4芯片为例。内部大致框架如下:

7e0da262819a82abfd75987d53e8643f.png

采样转换时按如下图示操作,每次对属于3个AD模块的3个通道进行AD转换。如果多组的话,依次扫描进行。

80100896a8a122a6a061aa825c940aa0.png

各通道转换结束时产生DMA请求,DMA按照ADC1、ADC2、ADC3的顺序依次将数据取走,然后放到指定的内存空间。

好,大致原理就介绍这么多。更多细节还是请阅读STM32参考手册的ADC相关章节。

这里在ADC1/ADC2/ADC3三个模块各选择2各通道,它们的通道号及相关输入连接如下:

【注:ADC模块的参考电压也选用VDD.下面实验基于STM32F407 DISCOVERY板来进行。】

7733884e79535c9692edc2b9efb1fa8c.png

另外,我这里使用STM32的TIM3的更新事件触发ADC转换。

01
  • 使用STM32CubeMx图形化配置工具完成基本配置

1.1    RCC/SYS等必需配置项目【略】

1.2    对ADC进行配置。

  1.2.1       对ADC1及相关DMA进行配置。

b2b68efb4d68307b12be2910e7b12f95.png

8cf6ee90a4de014d576caa91b0fd392b.png

1.3  对TIM3进行配置。

对TIM3的配置比较简单,安排你需要的时基参数,选择合适的触发输出即可。ADC转换靠它定期触发。

320a4919121c02498568856d3d2017ef.png

上面配置中,DMA传输中断默认使能了,至于其它,你根据需要选择使能。

02基于上面的CubeMx配置生成C代码工程。03

添加用户代码

3.1为DMA传输准备一个内存数组,用来存放转换结果。

__IO uint32_t ADC_Result[6];

3.2 添加启动ADC3/ADC2/ADC1以及TIM3的相关代码。

bf469dc498fd9f01a6a08121bb47a1a5.png

04

编译、运行、验证。

结果如下,结果是正确的。到此整个演示过程完毕。

06d74fb0d5b245f7a8200df9bd2e772c.png

看到这里,是不是觉得很简单呢。只要你愿意对STM32手册做认真阅读把把握相关原理,你也可以轻松实现。不过,或许有人对结果产生了疑问,DMA搬到数组的数据怎么是前面连续3个00,后面连续3个0xfff而不是00,fff,00,fff,00,fff呢?不妨结合上面的介绍和参考手册自行思考下,相信你可以找到答案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云原生/低代码/数据科学/计算等方向内容整理志愿者招募了!

持续招募内容整理志愿者!云原生、数据科学、AI、低代码、计算等方向,有意愿的小伙伴,欢迎识别二维码提前报名哦。我们将持续为爱学习、有时间的小伙伴,提供多重福利!要求:1. 你需要具备一定学术背景&#x…

sin级数展开c语言,三角函数sin的泰勒级数展开

denodeno*(2*(i-1))*(2*i-1);这里可能导致double越界。你可以在每次递进时,根据上次的值乘以x*x再除以(2*(i-1))*(2*i-1)。因为xn/n! x(n-2)/(n-2) * (x*x / (n * (n-1))但是由于用了除法,所以得到的结果是近似值。另外main函数必须有返回值&#xff0c…

Maxcompute造数据-方法详解

简介: 造一点模拟数据的方法 概述 造数据在一些奇怪的场合会被用到。一般我们是先有数据才有基于数据的应用场合,但是反过来如果应用拿到另外一个场景,没有数据功能是没有方法演示的。 一般较为真实的数据,脱敏后就可以应用在功…

python计算运动会某个参赛选手的得分。数据保存在文件中_成绩计算电脑程序的使用说明...

成绩计算电脑程序的使用说明为了计算成绩,特制作这个电脑程序,说明如下:一、开发软件:Python二、使用说明:在电脑D盘根目录下建立两个excel文件,一个是1.xlsx,另一个是2.xlsx其中,1.…

android 创建文件夹_Android 动画小记

精简介绍Android中的动画,主要介绍用法。动画种类包括了:补间动画、逐帧动画、属性动画,前两者统称为视图动画。补间动画包括了平移、旋转、缩放和透明度四种,每种动画支持xml和代码设置。另外还有一种组合动画,就是将…

命题公式的主合取范式C语言,命题公式主范式的自动生成与形式输出.pdf

收稿日期 2006 04 19 作者简介 张会凌 1954 男 甘肃成县人 甘肃联合大学数学与信息学院副教授 主要从事微分几何与计算机方面 的研究 文章编号 1672 691X 2006 05 0049 04 命题公式主范式的自动生成与形式输出 张会凌 甘肃联合大学 数学与信息学院 甘肃 兰州 730000 摘 要 在文…

2021金蝶全球创见者大会成功举办, 500强企业共话EBC数字战斗力

11月27日,由金蝶主办的“2021全球创见者大会”成功举办。大会以“用数字战斗力,向管理要效益”为主题,求索不确定时代,EBC如何帮助500强及中小企业拥抱数字战斗力,构建企业韧性。 据了解,金蝶全球创见者大…

使用管控策略,设定多账号组织全局访问边界

简介: 企业上云多账号架构中,如何做到从上到下管理的同时,处理好员工的权限边界问题? 由多账号上云模式说起 多账号上云模式的产生 我们的企业客户上云,一般都是从尝试部署少量业务开始,然后逐步将更多业…

使用MaxCompute LOAD命令批量导入OSS数据最佳实践—STS方式LOAD开启KMS加密OSS数据

简介: MaxCompute使用load overwrite或load into命令将外部存储的数据(如:oss)导入到MaxCompute前的授权操作。 MaxCompute使用load overwrite或load into命令将外部存储的数据(如:oss)导入到M…

mamcache登录、_gomemcache首页、文档和下载 - memcache客户端库 - Go语言中文网 - Golang中文社区...

**安装**使用 go get$ go get github.com/bradfitz/gomemcache/memcache此命令后gomemcache即可使用。它的来源将是:$GOPATH/src/github.com/bradfitz/gomemcache/memcache**示例**import ("github.com/bradfitz/gomemcache/memcache")func main() {mc : …

pca降维的基本思想_R语言进行PCA分析

点击上方「蓝字」关注我写在前面前面我们知道了降维分析学习了PCoA分析今天学习PCA分析...PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征…

c语言线性分类回归库 台湾,最全的线性回归算法库总结—— scikit-learn篇

原标题:最全的线性回归算法库总结—— scikit-learn篇本文建议收藏后食用更加美味scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库的使用做一个总结,重点讲述这些线性回归算法库的…

吉麦新能源与联想签订战略合作协议,共同拥抱智能网联汽车升维时代

11月25日,吉麦新能源汽车与联想战略合作签约仪式成功举行,双方正式建立战略合作伙伴关系。未来,双方将在车联网、云解决方案及服务、IT基础架构产品服务、智慧工厂服务领域开展深入合作,合力推动新能源造车数智化转型,…

供应链商品域DDD实践

简介: DDD是一套方法论,实践能否成功,不仅仅是个技术问题,更是执行贯彻实施的问题。本文将就DDD的基本概念和DDD的实施进行分享。 作者 | 侧帽 来源 | 阿里技术公众号 前言 供应链商品域DDD实践时间不长,在实践过程也…

wps编号无法继续_wps怎么自动编号【解决步骤】

我们在使用电脑工作的过程中时常会遇到各种奇奇怪怪的问题,比如最近就有不少用户来问小编关于wps怎么自动编号的问题,于是小编就在网上查了一下wps怎么自动编号的解决方法,其实wps怎么自动编号操作起来很容易只需要1:打开一个wps文…

c语言EOF0x99,C语言选择题99道.doc

C语言选择题99道1.有以下程序int f1(int x,int y){ return x>y?x:y; }int f2(int x,int y){ return x>y?y:x; }main(){int a4,b3,c5,d,e,f; df1(a,b); df1(d,c); ef2(a,b); ef2(e,c); fabc-d-e; printf("%d,%d,%d\n",d,f,e);}执行后输出的结果是______。 A&a…

20岁,Universal GIS拥抱新生的GIS信创

近20年来,在快速发展的IT新技术和国家应用需求的双轮驱动下,我国GIS技术和产业得到了飞速发展,GIS软件应用范围从几个行业深入到了数字中国建设中的数字经济、数字政务、数字社会、数字生态建设的几乎所有行业和领域。GIS软件已成为国家治理体…

php与python缺点_php和python的比较

hon 的应用现在越来越多了,想多了解点 pygtk 和 django 的东西,但只 有一些 php 和 C 的基础, 而 python 的语法还是比较独特的。 接触 python 半年多,总结一点和 php 的比较以及优缺点。 首先, python 的性能一直比较…

如何用Netty写一个高性能的分布式服务框架?

byte[] -->堆外内存 / 堆外内存--> byte[] -->java对象。 优化:省去 byte[] 环节,直接 读/写 堆外内存,这需要扩展对应的序列化框架。 String 编码/解码优化。 Varint 优化:多次 writeByte 合并为 writeShort/writeInt/w…

css x轴不滚动_css – 固定div,动态内容不滚动

我有一个固定的div与动态加载的li元素.现在我希望div-content在有超过9个li元素和滚动条时滚动:这就是它的样子:此时固定div继续在页脚上,内容无法滚动.这是所有div的css:#fixed-div {position: fixed;width: 30%;margin-top:290px;padding-t…