zoukankan      html  css  js  c++  java
  • STM32F407 ADC 个人笔记

    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外部通道和引脚对应关系

  • 相关阅读:
    本博客主题的相关配置(2021年)
    vscode侧边栏隐藏不需要的文件
    虎扑,豆瓣等用css屏蔽广告代码
    代替pandownload的百度网盘下载软件
    网络请求的超时原因
    OkHttp3系列(三)okhttp3-fast-spring-boot-starter
    OkHttp3系列(二)MockWebServer使用
    OkHttp3系列(一)初识OkHttp3
    为什么要使用短链接
    Google Guava之简化异常和错误的传播与检查
  • 原文地址:https://www.cnblogs.com/YuQiao0303/p/10094731.html
Copyright © 2011-2022 走看看