1. ADC概述(STM32F4xx系列)

  • 3 个 ADC

    • 可分别独立使用
    • 也可使用双重/三重模式(提高采样率)
  • 2 个通道组
    • 规则通道:相当于正常运行的程序
    • 注入通道:相当于中断(可以打断规则通道的转换)
  • 转换模式分为
    • 单次、连续、扫描、间断模式
  • 位数
    • 12位模拟数字转换器
    • 结果左对齐或右对齐,存在16位数据寄存器中

2. 规则通道 & 单次转换模式

过程

转换结束时:

  • 转换结果将被存在 ADC_DR 寄存器中
  • EOC(转换结束)标志将被置位
  • 如果设置了 EOCIE,则会产生中断

要配置哪些

是否用扫描模式,分辨率,对齐方式,外部触发使能设置,开始转换,输入时钟分频,多重模式选择,采样时间

用到的寄存器

1)ADC控制寄存器(ADC_CR1 和 ADC_CR2)

ADC_CR1

  • ADC_CR1 的 SCAN 位

    • 该位用于设置扫描模式
    • 如果设置为 1,则 使用扫描模式,如果为 0,则关闭扫描模式。
    • 由软件设置和清除
    • 在扫描模式下,由 ADC_SQRx或 ADC_JSQRx 寄存器选中的通道被转换。
    • 如果设置了 EOCIE 或 JEOCIE,只在最后一个通道转换完毕后才会产生EOC 或 JEOC 中断。
  • ADC_CR1[25:24]

    用于设置 ADC 的分辨率

ADC_CR2

  • ADON 位用于开关 AD 转换器
  • CONT 位用于设置是否进行连续转换,我们使用单次转换,所以 CONT 位必须为 0。
  • ALIGN 用于设置数据对齐,我们使用右对齐,该位设置为 0。
  • EXTEN[1:0]用于规则通道的外部触发使能设置,我们这里使用的是软件触发,即不使用外部触发
  • SWSTART 位用于开始规则通道的转换,我们每次转换(单次转换模式下)都需要向该位写
    1。

    2)ADC 通用控制寄存器(ADC_CCR)

  • TSVREFE 位是内部温度传感器和 Vrefint 通道使能位,内部温度传感器我们将在下一章介绍,这里我们直接设置为 0
  • ADCPRE[1:0]用于设置 ADC 输入时钟分频
    • 00~11 分别对应 2/4/6/8 分频
    • STM32F4 的 ADC 最大工作频率是 36Mhz, 而 ADC 时钟(ADCCLK)来自 APB2,APB2 频率一般是 84Mhz,所以我们一般设置 ADCPRE=01, 即 4 分频,这样得到 ADCCLK 频率为 21Mhz,不超过36的最大频率。
  • MULTI[4:0]用于多重 ADC 模式选择,本章我们仅用了 ADC1(独立模式),并没用到多重 ADC 模式,所以设置这 5 个位为 0 即可。

    3) ADC 采样时间寄存器(ADC_SMPR1 和 ADC_SMPR2)

  • 这两个寄存器 用于设置通道 0~18 的采样时间
  • 每个通道占用 3 个位。
  • 对于每个要转换的通道,采样时间建议尽量长一点
    • 以获得较高的准确度
    • 但是这样会降 低 ADC 的转换速率。
    • ADC 的转换时间可以由以下公式计算
    • Tcovn=采样时间+12 个周期 , 其中:
      • Tcovn 为总转换时间
      • 采样时间是根据每个通道的 SMP 位的设置来决定的
      • 例如, 当 ADCCLK=21Mhz 的时候,并设置 3 个周期的采样时间,则得到Tcovn=3+12=15 个周期 =0.71us。

        4)ADC 规则序列寄存器(ADC_SQR1~3)

        5)ADC 规则数据寄存器(ADC_DR)

  • 规则序列中的 AD 转化结果都将被存 在这个寄存器里面
  • 而注入通道的转换结果被保存在 ADC_JDRx 里面
  • 该寄存器的数据可以通过 ADC_CR2 的 ALIGN 位设置左对齐还是 右对齐。

    6)ADC 状态寄存器(ADC_SR)

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

STM32F40x系列ADC外部通道和引脚对应关系

STM32F407 ADC 个人笔记的更多相关文章

  1. STM32F407 ADC DMA 采样实验

    转载:http://home.eeworld.com.cn/my/space-uid-361439-blogid-239703.html STM32F407ADC采样实验 热度 1已有 5472 次阅 ...

  2. STM32F407+STemwin学习笔记之STemwin移植补充Touch

    原文地址:http://www.cnblogs.com/NickQ/p/8857213.html 环境:keil5.20  STM32F407ZGT6  LCD(320*240)  STemwin:S ...

  3. STM32F407+STemwin学习笔记之STemwin移植

    原文链接:http://www.cnblogs.com/NickQ/p/8748011.html 环境:keil5.20  STM32F407ZGT6  LCD(320*240)  STemwin:S ...

  4. STM32F407 SPI 个人笔记

    概述 SPI ,Serial Peripheral interface,串行外围设备接口 全双工,同步的通信总线,四根线 主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器 ...

  5. STM32F407 I2C 个人笔记

    源代码;https://github.com/YuQiao0303/STM32F407-Examples/tree/master/24.IIC 概述 I2C (IIC, Inter-Integrate ...

  6. STM32F407 DAC 个人笔记

    DAC框图 VDDA:模拟电源输入 VSSAL:模拟电源接地输入 Vref+:正模拟参考电压输入 -------------- DORx:输入数字寄存器 DAC_OUT:模拟输出通道 DAC_OUT1 ...

  7. STM32 ADC 测电压

    1. STM32F103 ADC 本例使用STM32F103芯片的PA1引脚测试模拟输入的电压值. 查看文档<STM32F103X.pdf>第31页,引脚定义图: 得知PA1使用ADC1的 ...

  8. DSP28377S - ADC学习编程笔记

    DSP28377S -  ADC学习编程笔记 彭会锋 2016-08-04  20:19:52 1 ADC类型导致的配置区别 F28377S的ADC类型是Type 4类型,我的理解是不同类型的ADC采 ...

  9. stm32寄存器版学习笔记07 ADC

    STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...

随机推荐

  1. React-redux及异步获取数据20分钟快速入门

    一, 写在前面 1. 前面我写过一个vuex10分钟入门 传送门 2. React-redux网上有好多文档,又臭又长,明明很简单的问题,硬是让新人更晕了~, 我写这个文章的目的是让新人在20分钟之内 ...

  2. CF1059B Forgery

    思路: 若某个位置是‘.’,说明不能在周围的8个位置下笔.在所有可以下笔的位置填充一次,看能否“包含”需要的图案即可. 实现: #include <iostream> using name ...

  3. codeforces727C(交互)

    题意 $n$个数,初始时不知道他们的值. 每次可以询问两个数的和,在$n$次询问内确定他们的值 $n \leqslant 5000$ Sol 首先询问出$1, 2$,$1, 3$,$2, 3$ 解个方 ...

  4. MD5 介绍

    MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权费用. MD5功能: 输入任意 ...

  5. C# for循环的嵌套 作用域

    for() {   循环体可以套无数个for循环 } 比如:for() { for() { for() {... ...这里面可以镶嵌无数个for循环} } } 也可以这样 for() { for() ...

  6. Block中__block实现原理

    三.Block中__block实现原理 我们继续研究一下__block实现原理. 1.普通非对象的变量 先来看看普通变量的情况. #import <Foundation/Foundation.h ...

  7. HDU 6166 Senior Pan(多校第九场 二进制分组最短路)

    题意:给出n个点和m条有向边(有向边!!!!我还以为是无向查了半天),然后给出K个点,问这k个点中最近的两点的距离 思路:比赛时以为有询问,就直接丢了,然后这题感觉思路很棒,加入把所有点分成起点和终点 ...

  8. Shell脚本中时间处理

    Shell脚本中时间处理 1.脚本内容 #!/bin/bash #环境变量 #设置环境变量和sql文件格式相符 source /etc/profileexport LD_LIBRARY_PATH=&q ...

  9. ios 检查内存泄露

    简介 在IPhone程式开发中,记忆体泄漏(内存泄漏)是个很容易发生的情况,因为IPhone必须自行作记忆体管理.现在的开发者,大多习惯用的.NET或Java的等有垃圾回收机制的开发语言来作开发,因此 ...

  10. 长链剖分优化dp三例题

    首先,重链剖分我们有所认识,在dsu on tree和数据结构维护链时我们都用过他的性质. 在这里,我们要介绍一种新的剖分方式,我们求出这个点到子树中的最长链长,这个链长最终从哪个儿子更新而来,那个儿 ...