1. AD单次转换+软件启动

  • 通过程序启动AD,AD采集一次,我们就去读一次。这种情况,建议开启AD转换完成中断,在中断中读出AD值并做处理。

  • 初始化的时候,启动一次。然后在主循环里,每隔一秒启动一次。

  • 在中断回调函数里,进行相关处理:

  • 电脑输出如下:

2. 连续转换+软件启动

  • 在方法1的基础上做调整,从单次转换,变成连续转换。也就是说,只需要开启一次,它就能一直转换,直到程序让它停止。

    优点是省去了频繁开启中断的麻烦;缺点是需要频繁进入中断去读AD值。

  • 初始化的时候开启AD即可,后面无需再频繁开启。

  • 在中断中进行处理,当AD转换次数达到1000次的时候,停止转换。

注意事项:函数HAL_ADC_Stop_IT(&hadc1) 需要在中断内调用,中断外调用不起作用。

3. 连续转换+DMA+手动启动

  • 在方法2的基础上,引入DMA这个东西。不得不说,DMA真的是很方便,省去了很多手动操作的麻烦。可以直接把指定数量的AD转换值存入数组里,可以单次存入,也可以循环覆盖。
  • 在方法2里面,每次转换完成,需要我们手动去读一下AD值;启动DMA之后,完全省掉了这个过程,只需要等待1000个值全部转换完成之后触发一个中断即可。
  • 初始化阶段,开启DMA传输:
  • 传输完成之后产生一个中断:
  • 这时候看数组里面的值:

4.连续转换+DMA+定时器+手动启动

  • 方法4是在方法3的基础上稍微做了一些调整,主要面向的需求是:固定时间间隔的AD采样。比如说,每隔0.1秒,需要连续采样100次。

通常的做法是,使用定时器做一个定时中断,在定时中断里,调用函数:

HAL_ADC_Start_DMA(&hadc1,(uint32_t *)ad_value,1000); //启动,同时开启中断

方法和原理都比较简单,就不细说了。

5. 连续转换+DMA+定时器触发

  • 方法5是对方法4里面的需求的实现过程进行了优化。STM32的定时器可以自动触发AD转换,省去了手动启动的麻烦。例如STM32的TIM1,TIM2,TIM3和TIM4,以及外部中断,都可以做为启动AD转换的触发源。

以TIM3做为触发源为例,如下:

  • DMA这里要开启循环模式:
  • TIM3的配置如下,这里实现了一个1ms的定时,也就是说每隔1ms自动触发一次AD转换:

  • 主函数里代码如下:
  • 然后,中断里做一下处理即可:

【STM32技巧】ADC模拟量采集的几种用法相关推荐

  1. STM32之ADC(模拟量-数字量的转化)

    当外设的引脚是模拟量时,需要用到ADC,比如引脚的电压在0-3.3V之间,如果采用普通的方式,只能判断该引脚有没有电压,而不能判断具体是多少V,所以这个时候就可以利用ADC将引脚的电压转换为数字量,通 ...

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

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

  3. Arduino初初教程7——模拟量采集

    2019独角兽企业重金招聘Python工程师标准>>> 模拟量采集需要用到模拟量器件,这里主要指一些随着环境变化输出电压值随之变化的器件,如火焰传感器.部分温度传感器.可调电阻等等 ...

  4. PLC模拟量采集在工业自动化控制中的应用

    在复杂的工业现场中,往往需要对温度.电压.电流.压力等等模拟量进行数据采集,可以借助PLC进行控制采集,但目前市场各种PLC模拟量采集模块十分多,不同的厂家不同的PLC都有自己独特的模拟量采集模块,而 ...

  5. PLC模拟量采集算法数学基础(线性传感器)

    模拟量采集库如何设计,具体算法代码请参看下面这篇博文: PLC模拟量输入 模拟量转换FC:S_ITR_RXXW_BOSS的博客-CSDN博客_s_itr模拟量采集.工业现场应用特别广泛.大部分传感器的 ...

  6. 模拟量采集软件虚拟精度提升方案

    模拟量采集软件虚拟精度提升方案 AI的数据采集精度是AI采集的重要指标,一般来说控制器的AI精度会有一个指标,比如)0.5%,这个精度是标定精度,实际AI通过高一个等级的测量系统如0.1%测量后,经过 ...

  7. Arduino UNO模拟量采集

    Arduino UNO模拟量采集 环境准备 打开arduino开发环境 观察输出结果 环境准备 准备一个滑动变阻器,Arduino uno 板一块,接线图如下: 打开arduino开发环境 编写程序代 ...

  8. 树莓派拓展模拟量采集(AD)功能

    1.前言 树莓派自身不带有模拟量采集功能(A/D)功能,当需要AD功能时,常通过IIC外接一个A/D模块来实现,如8位A/D芯片PCA9685.本文首先简要介绍PCA9685特性,然后基于树莓派的Bc ...

  9. Arduino最便宜的模拟量采集

    对于大多数人而言,利用Arduino和传感器采集环境数据已经不是问题了,但是,如何控制成本问题呢? 今天我将带大家做一个最最简单的模拟值采集电路,当然这种电路早就有了,我只是引用而已. 大家常见的传感 ...

最新文章

  1. Kong APIGW — 基本操作
  2. linux开启kafka消费者命令,Linux kafka常用命令
  3. boost::regex模块用于测试特定于语言环境的表达式的帮助程序类
  4. 小汤学编程之JAVA基础day11——集合框架:List/Set/Map集合、Collections集合工具类、泛型、TreeMap和TreeSet
  5. 杠上百度?今日头条也做起搜索来了 | 畅言
  6. netty5、3 和socket
  7. ZOJ-1010 奇偶剪枝
  8. mysql建表语句转oracle_MYSQL事务他快你慢,都是你自己惹的祸
  9. python 图片对比文件夹_Python挑选文件夹里宽大于300图片的方法
  10. 历届奥斯卡获奖影片(1971-2014年)
  11. 团队作业7——第二次项目冲刺(Beta版本)
  12. 尔雅通识课题库【1】
  13. 链表-双向循环链表【C语言】
  14. 从零搭建一个vue项目
  15. 基于虚拟打印的PDF文档归档探索
  16. uniAPP 自定义页面导航烂 - 搜索 APP有效
  17. rn+android+sdk,RN与Android原生交互
  18. IntelliJ IDEA设置显示内存指示器的几种方法
  19. CVPR 2022 | 微软提出MiniViT:极致压缩视觉Transformer
  20. 测试颜色度的软件是什么情况,分光测色仪的测色应用以及注意事项

热门文章

  1. 前端生成二维码qrcode.js,并下载
  2. CAN通信标准帧和扩展帧介绍
  3. 二三层报头及IP分片详解
  4. 自学FPGA:Verilog基本语法规则(一)
  5. Web前端——HTML中的列表、表格、表单
  6. 广东计算机考试只能在学校报名吗,广东省计算机等级考试报名考点名单
  7. 免费App开发解决方案 一键生成App
  8. 2022年安全员-A证考题及在线模拟考试
  9. 物流设计大赛优秀作品_第四届广东省大学生物流设计大赛之五邑大学校园选拔赛通知...
  10. 机器学习笔记(机器学习很难么???那必然难啊!!!)