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);
  }

 

posted @ 2019-08-29 14:37  菜芽caiya  阅读(1203)  评论(0编辑  收藏  举报