zoukankan      html  css  js  c++  java
  • STM32 之ADC单次转换模式和连续转换模式

    一、背景

       在STM32中的AD的单通道采样中可以设置成单次转换模式和连续转换模式,如何理解这两个转换模式的区别,通过程序又是怎样实现的?

    二、正文

      首先理解单次转换模式,即ADC进行单次转换(单样本)的单通道X(参见图1。)并停止转换完成后。

     连续转换模式,即ADC在常规信道转换中连续地、无限地转换单信道,如下图所示。

    在STM32的ADC库函数中主要由 ADC_InitStructure.ADC_ScanConvMode = DISABLE; 来决定AD采集工作在单次转换模式(DISABLE)或者是连续转换模式(ENABLE)。而我在程序中是设置单次转换模式,按照单次转换模式的理解应该只转换一次,但运行主程序后却一直可以采集出数据。

    //设置指定ADC的规则组通道,一个序列,采样时间
    ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 ); //ADC1,ADC通道,采样时间为239.5周期

    ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能

    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束

    return ADC_GetConversionValue(ADC1); //返回最近一次ADC1规则组的转换结果

    经过看数据手册ADC的寄存器如下所示,

    发现主程序每次循环后AD采集都会进行开始转换通道的开启,即这个函数ADC_SoftwareStartConvCmd(ADC1, ENABLE); 所以是采集结束后循环一次之后又开始采集。当我把这个函数ADC_SoftwareStartConvCmd(ADC1, ENABLE); 放到ADC的初始化中就到发现只采集一次。

    另外,当我把这个函数ADC_SoftwareStartConvCmd(ADC1, ENABLE); 放到ADC的初始化中,并且把AD采集工作模式更改为连续转换模式,

    即是

    ADC_InitStructure.ADC_ContinuousConvMode =ENABLE;可在主程序中看到AD一直是连续采集的。

    以上分析在程序中可明显区分出单次和连续转换模式。

                                                                                               ----2017-2-9 深圳Aplex—Yang
  • 相关阅读:
    自定义图标集
    微软Power BI 每月功能更新系列——Power BI 9月版本功能更新全面解读
    使用Power BI中的假设参数控制表视觉中要显示的行数
    如何使用Power Query自动存储最近2年的数据
    vscode-常用快捷键
    微信小程序开发-入门到熟练(wepy-初级篇)
    vscode-函数注释插件-正则插件
    vscode 编写Markdown文件
    wepy-开发总结(功能点)
    常用git命令
  • 原文地址:https://www.cnblogs.com/yangxuli/p/6379474.html
Copyright © 2011-2022 走看看