zoukankan      html  css  js  c++  java
  • stm8笔记3-ad连续采样

    一:主要功能

    1,10位的分辨率

    2,单次和连续转换模式。单次转换模式,转换一次就停止转换;连续转换模式,一旦开启,一直转换。

    3,预分频可编程设置。adc时钟可由系统主时钟经分频后提供。

    4,可以选择外部中断(ASC_ETR)或者定时器触发信号(TRGO)作为A/D转换启动触发信号。不仅可以手动开启ADC转换,也可由外部中断或者TIM1的触发信号来开启。

    5,参考电压输入的两个引脚的电压范围:0V<=VREF-<=0.5V,2.7V<=VREF+<=VDDA。

    6,转换结束后可以产生中断,可以设置寄存器开启转换结束中断。

    7,数据对齐方式有左对齐和右对齐。

    二:寄存器介绍

    1,ADC控制/状态寄存器(ADC_CSR)

    2,ADC 配置寄存器 1 (ADC_CR1)

    3,ADC 配置寄存器 2 (ADC_CR2)

    4,ADC配置寄存器 3 (ADC_CR3)

    5,ADC 数据高位寄存器(ADC_DRH) ,低位类似

    6,ADC高位数据缓存寄存器(ADC_DBXRH,X=0..7 OR 0..9)

    三,连续转换配置步骤

    1,连续转换模式(寄存器ADC_CR1)

    2,通道选择(寄存器ADC_CSR)

    3,对齐方式配置(寄存器ADC_CR2)

    4,从低功耗中唤醒(寄存器ADC_CR1)

    5,AD连续转换开启(寄存器ADC_CR1)

     ad转换值读取:VADC= (unsigned int)ADC_DRL;VADC|= ADC_DRH<<8;                  //转换的值直接送入VADC

    寄存器中值不取走就会被覆盖

     四:代码

    功能:ad连续转换,也就是开启ad转换之后ad一直让他自己转换,我们在主程序里读取ad存的值就可以,超过某一电压就开启小灯,低于某一电压就关闭小灯

    代码:

      ADC_CR1=0X02;//连续转换模式
      ADC_CSR=0X06;//通道选择
      ADC_CR2|=0x08;    //默认右对齐
      ADC_CR1|=0x01;        //从低功耗中唤醒
      
      ADC_CR1|=0x02;
      ADC_CR1|=0x01;
      //ADC_CR1|=0x01;        //AD连续转换开始,不可直接写入0x03
    
    
      while(1)
      {
        VADC= (unsigned int)ADC_DRL;
        VADC|= ADC_DRH<<8;                  //转换的值直接送入VADC
        if(VADC>=0x021c)
          PG_ODR|=0X01;//小灯亮
        else
          PG_ODR&=0XFE;//小灯灭
        //delay(50000);
      }
  • 相关阅读:
    libubox组件(1)——usock
    linux 块设备驱动(五)——块设备应用层的操作
    linux 块设备驱动(四)——简单的sbull实例
    linux 块设备驱动 (三)块设备驱动开发
    linux 块设备驱动(二)——块设备数据结构
    CUDA:零拷贝主机内存
    《无法触碰》
    CUDA: 流
    CUDA: 原子操作
    CUDA:纹理内存
  • 原文地址:https://www.cnblogs.com/caiya/p/11429573.html
Copyright © 2011-2022 走看看