zoukankan      html  css  js  c++  java
  • STM32F103之ADC学习记录

    1、问题

    1)10位ADC的误差是多少?

    首先要分清分辨率与精度的区别。

    10cm的尺子,有100个等分刻度,则该尺子的分辨率为1mm。

    但不能说这把尺子的精度是1mm。

    在冬天,尺子会热胀冷缩,依然有100格刻度,每格刻度代表1mm,但每格刻度与真实的1mm是不同的,精度在变化。

    实际上,10位的ADC将会把基准电压分成1024份,分辨率为:基准电压/1024。

     

    2)ADC的采样频率是多少?

    芯片开发手册上转换时间公式为:

    例子中,采样频率为1MHz。

     

    3)STM32F103这款芯片有多少个ADC采集通道?

    芯片内有3个ADC控制器:ADC1、ADC2、ADC3,每个ADC控制器有16个通道,另外还有两个内部通道,一个测量内部温度,一个测量参考电压。

     一个ADC控制器每个时刻只能测一个通道,测完可以切换到另一个通道。

    4)ADC以什么为参考电压?

    上述表格说明了参考正电压与参考负电压。

    5)ADC测量电压的范围是多少?

    ADC模块中有一个模拟看门狗,通过程序可以设置上下阈值。

    (6)规则通道与注入通道

     注入通道类似中断。

    //===============阅读开发手册笔记====================//

    11 模拟到数字转换器(ADC)

    11.1 ADC介绍

    12位ADC是逐次逼近的模数转换器。

    芯片有18路测量通道。

    其中16路可以单独测量信号,2路测量内部信号。

    模数转换器可以应用在单一、连续、扫描以及不连续模式下。

    ADC测量转换的结果存放在一个左对齐或右对齐的16位寄存器里。

    当输入电压在用户定义的阈值外,模拟看门狗能够允许程序检测到。

    ADC的输入时钟是由PCLK2时钟除以一个预分频系数得到的,

    频率不能超过14MHz。

    11.2 ADC主要特征

    12位的精度。

    在转换结束时,输入转换结束时,模拟看门狗事件时都会触发中断。

    离散或连续模式。

    扫描模式自动转换通道0到通道n。

    自校准。

    数据对齐与内部数据一致性。

    通道到通道编程采样时间。

    常规转换还是注入转换,都是外部触发选项。

    不连续模式。

    双重模式。

    ADC的转换时间。

    ADC供电范围:2.4 - 3.6V。

    ADC电压输入范围:VREF-  ≤ VIN ≤ VREF+ 。
    在常规通道转换时,DMA请求产生。

    注意:如果允许的话,VREF-要与VSSA绑定。

    11.3 ADC功能描述

    ADC模块图

     

     

     

     

     注意:ADC3与ADC1和ADC2不同的触发条件。

    11.3.1 ADC开关控制

    可以通过在ADC_CR2寄存器中设置ADON位来启动ADC。

    当ADON位第一次被置1的时候,它从电源关闭模式唤醒ADC。

    在ADC上升时间后,ADON位被软件再一次置位后,转换开始。

    转换可以被停止,并且清除ADON位后,ADC会进入关机模式。

    11.3.2 ADC时钟

    时钟控制器提供的ADCCLK时钟与PCLK2(APB2时钟)是同步的。

    RCC控制器有一个专门用于ADC时钟的可编程预调器。

    11.3.3 通道选择

    有16个多路复用通道。

    可以将转换组织在两个组中:常规和注入。

    组由一系列转换组成,任何通道任何顺序都可以转换。

    例如:可以用如下顺序进行转换:Ch3, Ch8, Ch2, Ch2, Ch0, Ch2, Ch2, Ch15。

    常规组由最多16个转换组成。

    常规通道和他们在转换次序的顺序必须在ADC_SQRx寄存器中设置。

    常规组转换的总数必须在ADC_SQR1寄存器里设置L[3:0]位。

    注入组由最多四个转换组成。

    注入通道和它们在转换中的次序必须在ADC_JSQR寄存器中选择。

    在注入组中转换的总数必须在ADC_JSQR寄存器的L[1:0]位写。

    如果在转换的过程中修改了ADC_SQRx或者ADC_JSAQR寄存器,

    当前的转换会被重置,一个新的开始脉冲被发送给ADC,去转换新选择的组。

    温度传感器内部通道

    温度传感器与ADCx_IN16通道相连,并且内部参考电压VREFINT与ADCx_IN17相连。

    可以选择这两个内部通道,将其转换为注入通道或常规通道。

    传感器和VREFINT只能在主ADC1外设上使用。

    11.3.4 单次转换模式

    在单次转换模式下,ADC进行一次转换。

    启动这种模式的条件:当CONT位是0,设置ADC_CR2寄存器的ADON位或者通过外部的触发。

    一旦选定通道的转换完成:

    如果是常规通道转换:

    转换的数据就存储在16位的ADC_DR寄存器里。

    结束转换标志位(EOC)会被设置。

    如果EOCIE被设置了,会产生一个中断。

    如果是注入通道转换:

    转换的数据会被存储在16位的ADC_DRJ1寄存器内。

    内部转换完成(JEOC)标志会被设置。

    如果JEOCIE标志设置了,会产生一个中断。

    然后ADC就会停止。

    11.3.5 连续转换模式

    在连续转换的模式下,ADC在一次转换完成后立即进行下一次转换。

    这种模式可以由外部触发器启动,也可以通过设置ADC_CR2寄存器的ADON位来启动,这些都是在CONT位为1的情况下。

    在每一次转换后:

    如果是常规通道转换:

    转换的数据会被存储在16位的ADC_DR寄存器里。

    转换结束(EOC)标志会被设置。

    如果EOCIE被设置,会产生一个中断。

    如果是注入通道转换:

    转换数据会被存储在16位的ADC_DRJ1寄存器里。

    注入转换结束(JEOC)标志会被设置。

    如果JEOCIE位被设置,会产生一个中断。

    11.3.6 时序图

    在ADC进行精确转换之前需要一段稳定的时间(tSTAB)。

    ADC开始转换后经历14个时钟周期,EOC标志位会被置位,

    16位的ADC数据寄存器就包含了转换的结果。

    11.3.7 模拟看门狗

    如果模拟转换电压高于最高阈值或低于最低阈值,AWD模拟看门狗状态位会被设置。

    这些阈值是可以通过编程改变的,在ADC_HTR和ADC_LTR寄存器里。

    在ADC_CR1寄存器里通过使用AWDIE位可以使能中断。

    阈值与ADC_CR2寄存器里的ALIGN位无关。

    对比是在对齐之前完成的。

    设置ADC_CR1寄存器可以使能一个或多个的看门狗通道。

     

     

    11.3.8 扫描模式

    该模式用于扫描一组模拟通道。

    扫描模式可以通过设置ADC_CR1寄存器中的SCAN位来启动。

    一旦这位被设置了,

    11.3.9 注入通道管理

    11.3.10 不连续模式

     

    11.4 校准

    11.5 数据转换

    11.6 采样时间

    11.7 以外触发的方式转换

    11.8 DMA请求

    11.9 双ADC模式

    11.10 温度传感器

    11.11 ADC中断

    11.12 ADC寄存器

  • 相关阅读:
    Java设计模式——单例模式
    Java设计模式——工厂模式
    多线程
    Collection集合
    内部类
    多态
    接口
    面向对象(2)
    数组
    面向对象(1)
  • 原文地址:https://www.cnblogs.com/QQ2962269558/p/12305476.html
Copyright © 2011-2022 走看看