STM32G0系列ADC扫描序列模式解读-程序员宅基地

技术标签: stm32  人工智能  物联网  嵌入式  单片机  

有人在使用STM32G0芯片的ADC模块时,往往因为扫描模式的理解不到位或选择不当导致些问题。这里就该话题做点简单分享介绍,不妨以一个实例展开。

 

现在共用到ADC1模块的4ADC通道,即1个片内Vrefint通道和其它三个外部通道CH8,CH10,CH17。下面测试代码中使用DMA传输,定时器触发ADC.

它们的硬件连接情况如下,其中VRefint为内部参考电压,其电压值大概1.2V样子。

对于STM32G0系列,ADC扫描模式可以有两种,分别是不完全配置序列模式和完全配置序列模式。我们先看看不完全配置序列模式。

 

不完全配置序列模式

在该模式下,ADC_CFGR1寄存器中的CHESELRMOD位必须被清零。

被转换通道的扫描顺序按照ADC通道固有序号的大小顺序依次进行,扫描方向可以软件配置为向前【forward】或后退【backward】。任何ADC通道都可以配置进该序列中,总的序列长度由寄存器ADC_CHSELR中被置位的CHSELx个数决定,最多可配置18个通道。

我们以上面提到的CH8、CH10、CH17和VRefint通道【它对应ADC通道CH13为例,若将上述4个通道配置为不完全序列模式,只需将ADC_CHSELR寄存器中的CHSELx相应位进行置1即可。如下图所示:

若选择forward扫描模式,则按通道号从小到大的顺序依次实施转换,生成对应于CH8CH10CH13CH17的结果。使用STM32CubeMx的配置如下:

既然扫描按默认通道号大小顺序进行,自然就无须RANK顺序的配置了。

编译运行后可以看到结果,我在内存里放了两组数据以便比较观察。

从结果来看跟实际情况是一致的,转换结果依次来自CH8/CH10/CH13/CH17。其中那个149x数值来自对内部Vrefint的转换结果。

 

那么,对于同样的ADC通道及硬件连接,若采用完全配置序列模式会怎么样呢? 

完全配置序列模式

在该模式下,ADC_CFGR1寄存器中的CHESELRMOD位必须被置1。

全序列可支持的通道数最多8个,扫描顺序不是依照硬件约定的通道号来安排,而是依据ADC_CHSELR寄存器中的从SQ1[3:0]到SQ8[3:0]所选择的通道顺序进行,即按照我们在CubeMX或代码中配置的RANK顺序进行,不再涉及扫描方向forward/backward的配置,并且只有通道0 到 通道14可以被选择!

还有,当SQn[3:0]里的赋值等于0b1111,即0x0f时则该通道选择域以及后续SQn的通道选择无效。比方说,假设SQ3[3:0]的数据为0b1111,则表示从SQ3[3:0]开始直到SQ8[3:0]的通道选择无效。由于SQn[3:0]才4位,所有它也没法选择高于14的有效通道号。【请特别注意这些特性!】

  

看到这里,我们不禁想到前面预先安排的4个通道中的有个CH17,显然不适合这种模式。如果被错误地强行使用该模式,基于CubeMx配置和现有Cube库所产生的代码运行结果会怎么样呢?

先用CubeMX进行配置:

4个通道的扫描顺序配置如下,相比前面多了RANK顺序配置。

先撇开CH17合法性不谈,不难看出这里跟前面的扫描顺序配置有点不一样,这里的配置为我们提供了更多的自主性及便利性,转换扫描并不固定于通道号的顺序,具体由SQn[3:0]的配置选择决定。我这里让SQ1选择CH8,SQ2选择CH10,SQ3选择CH17,SQ4选择CH13,分别对应配置中的RANK1、RANK2、RANK3、RANK4顺序。

编译运行查看结果:

前面说过,CH17硬件上是接地的,显然此时对应于CH17的转换值【绿色箭头所指】跟实际情况完全不符,其它三个倒是跟实际情况吻合。409x对应CH8接VDD,0对应CH10接GND,149x对应内部vrefint。

 

我尝试将CH17接到VDD,转换结果还是跟实际情况还是完全不相符。

 

结合上面的介绍,我们知道对于完全配置序列模式不能选用高于通道14的通道号。我们不妨通过寄存器进一步看看,当我们错误地强行使用CH17时在现有库代码的情况下,对应的SQ3[3:0]真正的值是多少?到底选择了什么通道?还是CH17吗?

 

在调试环境下,打开通道选择寄存器,可以看到下面结果:

从上面通道选择寄存器不难看出,除了SQ3外,其它三个配置都是正确的,跟我们预设的通道是一致的。但是,SQ3被错误地配置为CH1了,也就是说上面看到的所谓CH17的转换结果都是来自CH1.难怪不论怎么改变CH17的外部连接时,SQ3选择通道所对应的转换结果没有相应变化,跟CH17的管脚电压也没啥关系。

 

看到这里有人可能会想,如果我们在前面规划ADC通道时把CH1同时规划进来、硬件上恰好也接地,这时就可能发生误判!这种巧合性的误判,有时可能给我们的调试带来极大隐患而一会半会又找不到原因。当然,具体会发生些什么要因具体应用而定。这里只是简单提醒下,就此打住。

总之,这点在STM32G0 ADC应用中是个很容易出错的地方,将本不该用在完全配置序列模式的通道被错误地强行使用,虽有转换结果,而转换结果却来自别的通道,往往为此觉得问题诡异、不可思议而备受折腾。

 

最后,稍微小结下。对于STM32G0系列的ADC模块来说,其ADC通道在被转换时涉及到转换序列配置问题,这里有两种转换序列配置模式,即不完全配置序列模式和完全配置序列模式。

 

所谓不完全配置序列模式,在进行多个通道AD转换时,转换顺序由各通道自身的硬件序列号和扫描方向决定,其中硬件序列号即CHn在数据手册里已经明确定义,扫描方向通过寄存器配置。整个转换序列可支持的通道数多达18个,没有被排除在外的通道。

 

而完全配置序列模式呢,在进行多个通道AD转换时,转换顺序由通道选择寄存器中通道选择域SQn[3:0]来决定,即按照SQ1,SQ2.。。。。SQ7,SQ8的顺序,而且SQn[3:0]只能选择CH0到CH14的通道,整个序列最多支持8个通道。显然,CH15~CH18不能使用该模式。

 

说到这里,或许有人会问,如果只使用1个ADC通道,还有这个转换序列模式的选择问题吗?你把1个通道看成一个特殊的转换序列来理解就知道有没有这个模式选择问题了。

 

芯片设计人员在此提供了两种转换序列模式,本意旨在让我们能在实际应用中可以根据实际需求灵活选择,然而,往往由于开发人员的惯性思维和无视手册导致在这个地方遇上点麻烦或困惑。在此分享之,祝君好运!

 

======================

往期话题阅读链接【点击即可阅读】:

1、基于STM32CubeIDE的变量查看话题

2、提高SPI时钟时通信异常的案例分享

3、PCB板边缘的敏感线为何容易ESD干扰

4、STM32 DMA双缓冲模式应用示例

5、多个定时器同步输出的主从配置示例

              

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38106263/article/details/108787087

智能推荐

稀疏编码的数学基础与理论分析-程序员宅基地

文章浏览阅读290次,点赞8次,收藏10次。1.背景介绍稀疏编码是一种用于处理稀疏数据的编码技术,其主要应用于信息传输、存储和处理等领域。稀疏数据是指数据中大部分元素为零或近似于零的数据,例如文本、图像、音频、视频等。稀疏编码的核心思想是将稀疏数据表示为非零元素和它们对应的位置信息,从而减少存储空间和计算复杂度。稀疏编码的研究起源于1990年代,随着大数据时代的到来,稀疏编码技术的应用范围和影响力不断扩大。目前,稀疏编码已经成为计算...

EasyGBS国标流媒体服务器GB28181国标方案安装使用文档-程序员宅基地

文章浏览阅读217次。EasyGBS - GB28181 国标方案安装使用文档下载安装包下载,正式使用需商业授权, 功能一致在线演示在线API架构图EasySIPCMSSIP 中心信令服务, 单节点, 自带一个 Redis Server, 随 EasySIPCMS 自启动, 不需要手动运行EasySIPSMSSIP 流媒体服务, 根..._easygbs-windows-2.6.0-23042316使用文档

【Web】记录巅峰极客2023 BabyURL题目复现——Jackson原生链_原生jackson 反序列化链子-程序员宅基地

文章浏览阅读1.2k次,点赞27次,收藏7次。2023巅峰极客 BabyURL之前AliyunCTF Bypassit I这题考查了这样一条链子:其实就是Jackson的原生反序列化利用今天复现的这题也是大同小异,一起来整一下。_原生jackson 反序列化链子

一文搞懂SpringCloud,详解干货,做好笔记_spring cloud-程序员宅基地

文章浏览阅读734次,点赞9次,收藏7次。微服务架构简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独立运行的项目。这么多小服务,如何管理他们?(服务治理 注册中心[服务注册 发现 剔除])这么多小服务,他们之间如何通讯?这么多小服务,客户端怎么访问他们?(网关)这么多小服务,一旦出现问题了,应该如何自处理?(容错)这么多小服务,一旦出现问题了,应该如何排错?(链路追踪)对于上面的问题,是任何一个微服务设计者都不能绕过去的,因此大部分的微服务产品都针对每一个问题提供了相应的组件来解决它们。_spring cloud

Js实现图片点击切换与轮播-程序员宅基地

文章浏览阅读5.9k次,点赞6次,收藏20次。Js实现图片点击切换与轮播图片点击切换<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/ja..._点击图片进行轮播图切换

tensorflow-gpu版本安装教程(过程详细)_tensorflow gpu版本安装-程序员宅基地

文章浏览阅读10w+次,点赞245次,收藏1.5k次。在开始安装前,如果你的电脑装过tensorflow,请先把他们卸载干净,包括依赖的包(tensorflow-estimator、tensorboard、tensorflow、keras-applications、keras-preprocessing),不然后续安装了tensorflow-gpu可能会出现找不到cuda的问题。cuda、cudnn。..._tensorflow gpu版本安装

随便推点

物联网时代 权限滥用漏洞的攻击及防御-程序员宅基地

文章浏览阅读243次。0x00 简介权限滥用漏洞一般归类于逻辑问题,是指服务端功能开放过多或权限限制不严格,导致攻击者可以通过直接或间接调用的方式达到攻击效果。随着物联网时代的到来,这种漏洞已经屡见不鲜,各种漏洞组合利用也是千奇百怪、五花八门,这里总结漏洞是为了更好地应对和预防,如有不妥之处还请业内人士多多指教。0x01 背景2014年4月,在比特币飞涨的时代某网站曾经..._使用物联网漏洞的使用者

Visual Odometry and Depth Calculation--Epipolar Geometry--Direct Method--PnP_normalized plane coordinates-程序员宅基地

文章浏览阅读786次。A. Epipolar geometry and triangulationThe epipolar geometry mainly adopts the feature point method, such as SIFT, SURF and ORB, etc. to obtain the feature points corresponding to two frames of images. As shown in Figure 1, let the first image be ​ and th_normalized plane coordinates

开放信息抽取(OIE)系统(三)-- 第二代开放信息抽取系统(人工规则, rule-based, 先抽取关系)_语义角色增强的关系抽取-程序员宅基地

文章浏览阅读708次,点赞2次,收藏3次。开放信息抽取(OIE)系统(三)-- 第二代开放信息抽取系统(人工规则, rule-based, 先关系再实体)一.第二代开放信息抽取系统背景​ 第一代开放信息抽取系统(Open Information Extraction, OIE, learning-based, 自学习, 先抽取实体)通常抽取大量冗余信息,为了消除这些冗余信息,诞生了第二代开放信息抽取系统。二.第二代开放信息抽取系统历史第二代开放信息抽取系统着眼于解决第一代系统的三大问题: 大量非信息性提取(即省略关键信息的提取)、_语义角色增强的关系抽取

10个顶尖响应式HTML5网页_html欢迎页面-程序员宅基地

文章浏览阅读1.1w次,点赞6次,收藏51次。快速完成网页设计,10个顶尖响应式HTML5网页模板助你一臂之力为了寻找一个优质的网页模板,网页设计师和开发者往往可能会花上大半天的时间。不过幸运的是,现在的网页设计师和开发人员已经开始共享HTML5,Bootstrap和CSS3中的免费网页模板资源。鉴于网站模板的灵活性和强大的功能,现在广大设计师和开发者对html5网站的实际需求日益增长。为了造福大众,Mockplus的小伙伴整理了2018年最..._html欢迎页面

计算机二级 考试科目,2018全国计算机等级考试调整,一、二级都增加了考试科目...-程序员宅基地

文章浏览阅读282次。原标题:2018全国计算机等级考试调整,一、二级都增加了考试科目全国计算机等级考试将于9月15-17日举行。在备考的最后冲刺阶段,小编为大家整理了今年新公布的全国计算机等级考试调整方案,希望对备考的小伙伴有所帮助,快随小编往下看吧!从2018年3月开始,全国计算机等级考试实施2018版考试大纲,并按新体系开考各个考试级别。具体调整内容如下:一、考试级别及科目1.一级新增“网络安全素质教育”科目(代..._计算机二级增报科目什么意思

conan简单使用_apt install conan-程序员宅基地

文章浏览阅读240次。conan简单使用。_apt install conan