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

2023-10-26

一 单通道采样
参考资料:

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

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

这里写图片描述

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

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

我的收获
1 引脚初始化的时候需要注意
这里写图片描述

每一个ADC通道都对应一个GPIO引脚,看图中的ADC123_IN10,表示这个引脚(PC0)可以配置为ADC1的通道10,或者是ADC2的通道10,或者是ADC3的通道10,这个地方非常重要,涉及到后面ADC初始化时函数的调用。

比如当我们使能ADC时,我们调用的函数是

ADC_Cmd();

如果我们使用的是ADC1,那么上面函数的写法就应该是

ADC_Cmd(ADC1,ENABLE);

相应的如果是ADC2,那么上面函数的写法就是

ADC_Cmd(ADC2,ENABLE);

另外需要注意的是,我们这里的ADC使用了DMA,所以如果你使用的是ADC1,那么对应的DMA就应该是DMA1的通道1

这里写图片描述

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

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

DMA_Init(DMA1_Channel1);

这就是初始化DMA1的通道1

相应的

DMA_Cmd(DMA1_Channel1,ENABLE);

就是使能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;
ADC_InitStructure.ADC_ScanConvMode=ENABLE;

结构体的这个成员主要是用来设置ADC的扫描模式,我们使用通道8和通道10,当然要允许ADC进行通道的扫描

ADC_InitStructure.ADC_NbrOfChannel=2;

这个结构体成员是用来表明要转换的通道数目,这里我们使用通道8和通道10两个通道,那么这个值必然是2。

ADC_RegularChannelConfig();

这是一个非常重要的函数
这里写图片描述

这是从《stm32库函数使用手册》中截到的图,关于函数具体参数的使用可以去看该手册。

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

这里写图片描述

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

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

现在发现还是不能用复制粘贴功能,所以具体的程序需要到我的资源里下载

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32的ADC采样与多通道ADC采样 的相关文章

随机推荐

  • nginx 反向代理常用配置

    全部代理 location 设置跨域 add header Access Control Allow Origin add header Access Control Allow Methods GET POST OPTIONS add h
  • TS2559: Type ‘{ children: string; }‘ has no properties in common with type ‘IntrinsicAttributes & Fi

    Type children string key string is not assignable to type IntrinsicAttributes FilterTagPropsType Property children does
  • 锁与事务的关系

    在并发场景下 我们往往需要在事务方法中加锁来应对并发 如下 下面以 ReentrantLock 为例子 public final static ReentrantLock MY LOCK new ReentrantLock Transact
  • ubuntu安装ssh无法连接解决日志(已解决,可连接)

    原文链接http bbs chinaunix net thread 3585704 1 1 html 网上有很多介绍在Ubuntu下开启SSH服务的文章 但大多数介绍的方法测试后都不太理想 均不能实现远程登录到Ubuntu上 最后分析原因是
  • SpringBoot项目配置全局处理异常

    1 自定义异常 自定义异常 public class RRException extends RuntimeException private static final long serialVersionUID 1L private St
  • k8s学习

    主节点配置一定要好 K8S学习之路 1 介绍 1 1单机部署 1 2 虚拟化部署 类似window上安装多个linux虚拟机 在虚拟机中部署程序 使得程序之间不会互相影响 1 3 容器化部署 共享了操作系统 保证每个系统拥有自己的文件系统
  • MySQL-binlog2sql:非主从关系实现数据的【数据同步+数据恢复+数据追踪】

    文章目录 MySQL binlog2sql 非主从实时同步 恢复误删数据 1 引 1 介绍 2 功能 3 针对3种场景 4 脚本汇总说明 2 先决条件 1 安装 MySQL 2 修改 MySQL 配置 3 安装 binlog2sql 1 解
  • yii2 mysql设置时区

    第一步 修改配置文件 common config db php 注 8 00为北京时间 Asia Shanghai common config main php 第二步 修改vendor yiisoft yii2 db Connection
  • 抓取网站中的视频

    最近想从别人家的网站宣传片上提取一些素材 借鉴一下 之前也没有弄过 但是我的思路就是从网页的缓存中查找播放完后缓存的视频 然后失败了 然后又想到了网页打开源代码 然后查找到网页源代码饮用的视频的路径 然后找到视频 然后 再次失败 网上找了好
  • css基础———清除浮动的一些方法及区别

    为什么要清楚浮动 地址 http blog csdn net qwe502763576 article details 78811658 清除浮动方法概览 这里例举四种常见的清除浮动方式 方式一 使用overflow属性来清除浮动 ovh
  • 论文阅读

    简介 paper https arxiv org abs 1911 11907 github https github com huawei noah ghostnet Ghostnet CVPR2020 是华为提出的一种轻量级网络 结构类
  • WSL安装

    WSL安装教程 WSL简介 Windows Subsystem for Linux 简称WSL 是一个在Windows10上能够运行原生Linux二进制可执行文件 ELF格式 的兼容层 它是有微软与Canonical公司合作开发 其目标正是
  • 模糊查询与带参数跳转

    一 模糊查询 使用
  • 方法重写(override)原则

    方法的重写 override 两同两小一大原则 1 方法名相同 参数类型相同 2 子类返回类型小于等于父类方法返回类型 3 子类抛出异常小于等于父类方法抛出异常 4 子类访问权限大于等于父类方法访问权限
  • oracle RAC ORA-03113 错误解决

    好久 没有更新博客 太懒了 这咋换工作呢 1 错误现象 数据库 客户端连接不正常 频繁报 ORA 03113 错误 oracle 文档中对这个错误这样解释 ORA 03113 错误就是说连接到数据库的网络中断了 有些错误由于频繁出现 原因复
  • res_company_white_url.py 详解

    res company white url py 主要作用是 在数据库中建立一个表 存放白名单的URL 当我们读取文件时 先判断Referer是否在白名单中 如果不在则自动转到一个图片文件 防止盗链 接下来我们看一下主要代码 class C
  • unexpected keyword argument 'renderer'-DjangoUeditor

    今天在集成DjangoUeditor按照官方的Github集成之后 本以为就可以看到后台了没想到直接报错 render got an unexpected keyword argument renderer 报错93行 boundfield
  • 【QT】——06_带参数的信号(笔记)

    信号重载 说明 信号是可以重载的 相同的名字不同的参数 在发射信号的时候给值 emit musicSignal 100 音乐菜单 主窗口 h 创建一个带参的槽来处理信号 注意槽的参数要与信号一致 void dealMusic2 int QS
  • 《Hadoop学习笔记系列》二.Hadoop分布式文件系统 HDFS

    0 Hadoop分布式文件系统 HDFS HDFS以流式数据访问模式来存储超大文件 运行与商用硬件集群上 1 流式数据访问 HDFS的构建思路 一次写入 多次读取是最高效的访问模式 2 Block数据块 HDFS基本读写单位 类似于磁盘的页
  • STM32的ADC采样与多通道ADC采样

    一 单通道采样 参考资料 STM32库开发实战指南 刘火良 杨森著 原理性质的东西还是少讲 因为上面那本书里面讲解的很详细了 直接来看硬件电路图 这里使用的是3362电位器 10K 即用STM32来测量PB0和GND两端的电压 这样的电路设