一 单通道采样 
参考资料:

《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使用可以参考我后面上传的程序。

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

转载于:https://www.cnblogs.com/fire909090/p/8665164.html

STM32的ADC采样与多通道ADC采样相关推荐

  1. STM32多通道ADC采样获取GY-25A倾角传感器模拟输出数据

    STM32多通道ADC采样获取GY-25A倾角传感器模拟输出数据 GY-25A模块是新型的倾角传感器模块,具有X和Y两轴模拟角度输出和串口角度输出的功能.这里介绍STM32获取GY-25A模拟输出的角 ...

  2. STM32多通道ADC采样获取MCP9701模拟温度传感器温度输出数据

    STM32多通道ADC采样获取MCP9701模拟温度传感器温度输出数据 市面上常见的模拟温度传感器有TI的LM35系列,然后使用中并不简便.MCP9701是Microchip公司推出的相似的模拟温度传 ...

  3. STM32 ADC多通道规则采样和注入采样

    layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 什么是ADC? STM ...

  4. cubemx 配置多通道ADC进行ADC采样

    cubemx 配置多通道ADC进行ADC采样 AD的基础知识 AD很复杂,其实也不复杂,因为我们用的不多. AD:模拟量转换数字量(模拟信号转换数字信号). ADC:模拟量转数字量的转换器. 为什么需 ...

  5. STM32 MCO+SPI获取24位模数转换(24bit ADC)高速芯片ADS1271采样数据

    STM32 MCO+SPI获取24位模数转换(24bit ADC)高速芯片ADS1271采样数据 STM32大部分芯片只有12位的ADC采样性能,如果要实现更高精度的模数转换如24位ADC采样,则需要 ...

  6. 瑞萨e2studio(7)----ADC通过单次扫描多通道方式采样

    瑞萨e2studio.7--ADC通过单次扫描多通道方式采样 概述 视频教学 csdn课程 样品申请 硬件准备 开发板 新建工程 工程模板 保存工程路径 芯片配置 工程模板选择 时钟设置 UART配置 ...

  7. stm32 adc过采样_产生ADC误差的外部原因有哪些?

    01 前言 上篇文章中介绍了ADC自身转换产生的误差,本篇文章来介绍下外部原因导致的ADC误差. 02 ADC环境导致的误差 参考电压噪声 由于ADC输出为模拟信号电压与参考电压之比,因此模拟参考上的 ...

  8. STM32使用ADC+DMA进行多通道模拟量采集 (踩坑及傻瓜式解析)

    STM32使用ADC+DMA进行多通道模拟量采集 (踩坑及通俗解析) ​ 利用STM32的片上外设可采集多个模拟量(如传感器数值),并在嵌入式程序中使用.如果只使用了一个通道,用时令ADC转换而后读取 ...

  9. STM32——多通道ADC的DMA方式采集方法

    前言: 最近在调试STM32F205芯片ADC多通道DMA方式采集数据,总结下STM32多通道ADC的DMA方式采集的使用方法. 硬件平台:STM32F205 软件平台:keil v5 函数库:标准库 ...

最新文章

  1. 总算会用sphinx生成文档了
  2. java pashone_java – 如何使用onejar Maven插件在清单中设置附加的Class-Path条目?
  3. PLC与IC卡读卡器
  4. mysql慢查询分析
  5. Flask的多app应用,多线程如何体现
  6. 20211108 微分跟踪器
  7. TIP 2019开源论文:基于深度学习的HEVC多帧环路滤波方法
  8. 【Linux网络编程】因特网的IP协议是不可靠无连接的,那为什么当初不直接把它设计为可靠的?
  9. [Spring5]IOC容器_Bean管理注解方式_注入属性@Autowired_@Qualified_@Resource_@Value
  10. linux信号及其含义
  11. 比较两个文本中数据不同的行
  12. Spark核心类:SQLContext和DataFrame
  13. 高并发高负载系统架构-php篇
  14. Cesium 获取屏幕所在经纬度范围
  15. 抓取scrapy中文文档 第一个Scrapy项目实现
  16. LearnOpenGL 模型加载—Assimp
  17. 替代YY语音,自行搭建语音实时服务器
  18. WinRar DOS命令大全带详细参数rar/zip/7z压缩文件解密
  19. 怎样提高报表呈现的性能
  20. win7+Ubuntu双系统安装

热门文章

  1. 常用的绘图约定——提高绘图和读图的效率
  2. 我的MYSQL学习心得(4) : 数据类型
  3. java 异常捕捉 ( try catch finally ) 你真的掌握了吗?
  4. 正确认识Arrays.asList方法
  5. Machine Learning week 2 quiz: Octave Tutorial
  6. 【OpenCV3】cv::Mat的定义与初始化
  7. Docker部署微服务详解
  8. vCenter的安装与部署
  9. 微服务架构之外的选择——基于服务架构
  10. Challenge: Machine Learning Basics