以<<STM32H7 开发指南(HAL 库版)>>为导引学习

ADC性能参数

STM32H743xx 系列有 3 个 ADC,都可以独立工作,
其中 ADC1 和 ADC2 还可以组成双重模式(提高采样率)。
STM32H743 的 ADC 分辨率高达 16 位,
每个 ADC 具有多达 20 个的采集通道,
这些通道的 A/D 转换可以单次、连续、扫描或间断模式执行。
ADC 的结果可以左对齐或右对齐方式存储在 32 位数据寄存器中。
STM32H743 的 ADC 最大的转换速率为 4.5Mhz,也就是转换时间为 0.22us(12 位分辨率时),不要让 ADC 的时钟超过 36M,否则将导致结果准确度下降。

单端、差分、伪差分输入区别

寄存器

1.ADC 通用控制寄存器(ADCx_COMMON_CCR,x=12 或3)

用于设置 ADC 时钟的预分频系数
由于 ADC 的输入时钟频率不能大于 36M

2.ADC 控制寄存器

  1. BOOST 位,用于设置是否使用 BOOST 模式。当 BOOST=0 时,ADC 转换时钟必须小于20Mhz;当 BOOST=1 时,ADC 转换时钟必须大于 20Mhz。我们设置的 32M 的 ADC 转换时钟,
    因此该位必须设置为 1。
  2. ADCALLIN 位,用于设置线性 ADC 校准。设置该位为 1,可以设置 ADC 的校准模式为线
    性校准。
  3. ADEN 位,用于使能 ADC 转换器。需要设置该位为 1,ADC 才可以正常工作。
  4. ADSTART 位,用于启动 ADC 规则通道的转换序列。当使用硬件触发时(EXTEN[1:0]!=0),
    设置该位为 1,必须在相应的硬件触发事件产生时,才会启动 ADC 转换。而当不使用硬件触发
    时(EXTEN[1:0]=0),设置该位为 1 则可以立即启动 ADC 转换。
  5. ADCAL 位,用与控制/读取 ADC 校准状态。设置该位为 1 时,可以启动 ADC 校准,等校
    准完成以后,硬件会自动清零该位。因此在设置改位为 1 以后,通过判断该位是否变为 0,即
    可判断校准是否完成。

ADC 配置寄存器(ADCx_CFGR)

  1. RES[2:0]位,用于设置 ADC 转换的分辨率:0,16 位;1,14 位;2,12 位;3,10 位;4,8 位;其他值:保留。本章我们使用 16 位分辨率,因此设置这 3 个位全 0 即可。
  2. EXTEN[1:0]位,用于设置规则通道的外部触发方式和极性。本章我们使用软件触发,因此
    设置 EXTEN[1:0]=00,即禁止外部触发即可。
  3. OVRMOD 位,用于设置是否使能覆写功能。当设置该位为 0 时,如果上一次转换的数据
    未及时读取,新的转换结果将被丢弃;当设置该位为 1 时,如果上一次转换的数据未及时读取,
    将会被新的结果覆盖。本章,我们设置该位为 1。
  4. CONT 位,用于设置转换模式。当 CONT=0 时,表示单次转换模式;当 CONT=1 时,表
    示连续转换模式。本章,我们设置该位为 0。

1.ADC 配置寄存器 2(ADCx_CFGR2)

  1. OSR[9:0]位,用于设置 ADC 的过采样率。OSR[9:0]=0~1023,表示 1x~1024x 过采样。本
    章,我们不使用过采样,设置 OSR[9:0]=0 即可。
  2. LSHIFT[3:0]位,用于设置输出结果的左移位数,0~15 表示左移 0~15 位。本章不使用左右
    (数据右对齐),因此设置 LSHIFT[3:0]=0 即可。

2.ADC 规则序列寄存器 1(ADCx_SQR1)

3.ADC 采样时间寄存器 2

用于设置 ADC 通道 10~19 的采样时间。对于每个要转换的通道,采样时间建议
尽量长一点,以获得较高的准确度,但是这样会降低 ADC 的转换速率。ADC 的转换时间可以
由以下公式计算:
Tcovn=采样时间+7.5 个周期
其中:Tcovn 为总转换时间,采样时间是根据每个通道的 SMP 位的设置来决定的。例如,
当 ADCCLK=32Mhz 的时候,并设置 8.5 个周期的采样时间,则得到:Tcovn=8.5+7.5=16 个周
期=0.5us。

4.ADC 通道预选寄存器(ADCx_PCSEL)

该寄存器用于控制 ADC 具体某个输入通道和对应 IO 的连接,相当于在 ADC 输入和 IO 之间,加了一个开关,想要正常使用某个通道,则必须设置对应的 PCSELy 位为 1(y=0~19),否则无法得到对应 IO 口的正常电压。注意:在 STM32H7 之前的的其他 STM32 芯片上面,是没有的,该寄存器的存在,有利于隔离 ADC 和 IO 的隔离。
举个简单的例子,在 STM32H7 上面,即便是 ADC 通道对应的 IO 口,只要不使用 ADC
功能(PCSEL 不设置为 1),那么该 IO 口就可以兼容 5V,但是在 STM32H7 之前的其他 STM32
芯片上面,ADC 所在的 IO 口,都不能做 5V 兼容。

5.ADC 规则序列数据寄存器(ADCx_DR)

规则序列中的AD转化结果都将被存在这个寄存器里面,我们读取该寄存器,即可得到ADC
转换后的结果,

6.ADC 中断与状态寄存器(ADCx_ISR)

这里我们仅介绍将要用到的是 EOC 位,我们通过判断该位来决定是否此次规则通道的 AD
转换已经完成,如果该位位 1,则表示转换完成了,就可以从 ADCx_DR 中读取转换结果,否
则等待转换完成。

步骤

1)开启 PA 口时钟和 ADC1 时钟,设置 PA5 为模拟输入。
2)初始化 ADC,设置 ADC 时钟分频系数,分辨率,模式,扫描方式,对齐方式等信息。
3)开启 AD 转换器。
4)配置通道,读取通道 ADC 值。
5) 这里还需要说明一下 ADC 的参考电压,阿波罗 STM32H7 开发板使用的是 STM32H743IIT6,该芯片只有 Vref+参考电压引脚,Vref+的输入范围为:1.8~VDDA。阿波罗 STM32H7 开发板通过 P5 端口,来设置 Vref+的参考电压,默认的我们是通过跳线帽将 ref+接到 3.3V,参考电压就是 3.3V。如果大家想自己设置其他参考电压,将你的参考电压接在 Vref+上就 OK 了(注意要共地)。本章我们的参考电压设置的是 3.3V。

例子

STM32学习笔记之ADC转换(stm32F1)

在线视频教程

在线视频

视频笔记

  1. 分辨率: 电压等分,2的多少次方
  2. 虚短虚断[百度]
  3. 2分频–就是频率除以2
  4. 注入通道无法连续转换
  5. 单次转换:只转换一次, 连续转换:多次单次转换合在一起,扫描模式:一组通道按顺序循环转换
  6. EOC中断:转换完成启动中断

程序编写步骤

  1. HALLIB文件添加 stm32h7xx_hal.adc.c 和stm32h7xx_hal.adc_ex.c,编译

STM32H7学习继续(STM32H7系列9) ADC相关推荐

  1. 深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子

    深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子 作者:寒小阳  时间:2016年1月.  出处:http://blog.csdn.net/han_xiaoyang/article/de ...

  2. 【跃迁之路】【578天】程序员高效学习方法论探索系列(实验阶段335-2018.09.06)...

    [跃迁之路][578天]程序员高效学习方法论探索系列(实验阶段335-2018.09.06) @(跃迁之路)专栏 [跃迁之路]奖励金计划正式开始 从2018.7.1起,[跃迁之路]奖励金计划正式起航, ...

  3. Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  4. 深度学习与计算机视觉系列(8)_神经网络训练与注意点

    深度学习与计算机视觉系列(8)_神经网络训练与注意点 作者:寒小阳  时间:2016年1月.  出处:http://blog.csdn.net/han_xiaoyang/article/details ...

  5. 深度学习与计算机视觉系列(4)_最优化与随机梯度下降\数据预处理,正则化与损失函数

    1. 引言 上一节深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器中提到两个对图像识别至关重要的概念: 用于把原始像素信息映射到不同类别得分的得分函数/score function 用 ...

  6. Deep Learning(深度学习)学习笔记整理系列之(二)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  7. Deep Learning(深度学习)学习笔记整理系列之(八)

     Deep Learning(深度学习)学习笔记整理系列之(八) 分类: Deep Learning 机器学习 Linux驱动2013-04-10 11:4257652人阅读评论(25)收藏举报 ...

  8. 深度学习与计算机视觉系列(10)_细说卷积神经网络

    转载自: 深度学习与计算机视觉系列(10)_细说卷积神经网络 - 龙心尘 - 博客频道 - CSDN.NET http://blog.csdn.net/longxinchen_ml/article/d ...

  9. 深度学习与计算机视觉系列(1)_基础介绍

    转载自: 深度学习与计算机视觉系列(1)_基础介绍 - 龙心尘 - 博客频道 - CSDN.NET http://blog.csdn.net/longxinchen_ml/article/detail ...

最新文章

  1. mysql数据库且字 语句是什么,MySQL(数据库)基本操作
  2. Python模拟实现multipart/form-data格式上传图片文件
  3. H.264 RTPpayload 格式------ H.264 视频 RTP 负载格式
  4. axios学习笔记(一):学习HTTP相关的技术知识点
  5. 一代神机落幕!苹果把iPhone 6 Plus列为过时产品,网友吵翻了...
  6. java安装选择哪个可选功能_java章节习题及期末考试题答案.doc
  7. php rc4对称加密函数,PHP实现的简单对称加密与解密方法实例小结
  8. python怎么用for循环找出最大值_从“for in”循环中获取最小值和最大值
  9. 学校实训 电力巡检系统管理平台
  10. Specification同时实现模糊查询、排序、分页
  11. iso 开发学习--简易音乐播放器(基于iPhone4s屏幕尺寸)
  12. VOT Toolkit工具配置和使用--Python版本
  13. 几个国外广告联盟介绍
  14. 量化研究数据来源汇总
  15. 快递查询APP隐私条款
  16. 转行做软件编程开发的经历
  17. 倍福plc的型号_EL9186——plc倍福模块+EL9100型号EL9010
  18. zdm各命令的功能和作用_利用ZDM菜单管线设计工具绘制管线步骤
  19. 赛门铁克通配符SSL证书,一张通配型证书实现全站加密
  20. 在Ubuntu系统安装配置OpenSfM软件用来实现三维重建

热门文章

  1. 简易火锅店点餐结算小程序
  2. 什么是Receptive Field
  3. arduino nano引脚号_ARDUINO 脚号的命名规则
  4. 百度AI文字识别需要注意的点
  5. 怎么设置计算机开机顺序,教你设置电脑开机程序启动顺序的详细教程
  6. HTTP超文本传输协议详解
  7. OpenCvSharp N幅图片叠加成一张图片
  8. MOS管开关速度相关参数
  9. win10自带的框选截图快捷键
  10. matlab dsb调制,幅度调制(AM、DSB、SSB、VSB)