xys9190 发表于 2020-11-1 17:53

【九齐单片机专题】源程序讲解[3] ADC及电压测量

本帖最后由 xys9190 于 2020-11-1 21:31 编辑

62D 是一个对电压有精准控制能力的MCU ,LVD(低电压检测)、LVR(低电压复位)、ADC(电压检测)。
LVD结构图   

LVD:可通过寄存器设定目标电压,超过目标电压LVDOUT置位,否则LVDOUT复位。
LVR:可通过配置页设定低电压复位电压,当电源电压低于目标电压时就会发生复位。
ADC结构图

ADC参考电压可选VDD,4V,3V,2V
ADC输入通道可选择AIN0~AIN10
ADCCLK可选Fcpu/1,Fcpu/2,Fcpu/4,Fcpu/8,Fcpu/16
采样时间可选:1ADCCLK,2ADCCLK,4ADCCLK,8ADCCLK
ADC可选8-12位有效值


***********************************************************************
ADC配置
ADMD = C_ADC_En | C_ADC_CH_En | C_ADC_PB3 ;
ADVREFH = C_Vrefh_2V;      
ADR          = C_Ckl_Div8;      
ADCR= C_Sample_4clk | C_12BIT | C_PB3_AIN8 ;      
//ADCR = C_Sample_1clk | C_12BIT;
//PACON = C_PA0_AIN0;         
      
ADMDbits.GCHS = 1;
delay(50);                                                   // Delay 0.56ms(Instruction clock=4MHz/2T) for waiting ADC stable


//ADC采样 ,使用查询方式或者ADC的值,在使用之前有必要使用1/4进行ADC数值矫正
if(adcStp == 0)
{
       ADMD= 0x90 | C_ADC_PB3;                              // Select AIN0(PA0) pad as ADC input
      //ADMD= 0x90 | C_ADC_PA0;      
      ADMDbits.START = 1;                                        // Start a ADC conversion session
      while(ADMDbits.EOC);
      adcStp = 1;
}
else if(adcStp == 1)
{
      if(ADMDbits.EOC == 1)
      {
                adcStp = 0;
                adcCnt++;
                R_AIN0_DATA_LB += ( 0x0F & ADR);
                  R_AIN0_DATA    += ADD;
               if(adcCnt == 8)
                  {
                        adcCnt = 0;
                        R_AIN0_DATA <<= 4;                                        // R_AIN0_DATA shift left 4 bit
                        //R_AIN0_DATA_LB &= 0xF0;                              // Only get Bit7~4
                        R_AIN0_DATA += R_AIN0_DATA_LB;                // R_AIN0_DATA + R_AIN0_DATA_LB
                        R_AIN0_DATA >>=5;                                        // R_AIN0_DATA divided 8
                        adcVal = R_AIN0_DATA;                              // output val 0~1024
                        R_AIN0_DATA = 0;
                        R_AIN0_DATA_LB = 0;
                  }
      }
}

更多使用上的问题,可以加群讨论,直接加群主QQ提问。

zeshoufx 发表于 2020-11-2 08:46

谢谢分享【 ADC及电压测量 】

xys9190 发表于 2021-4-12 10:47

zeshoufx 发表于 2020-11-2 08:46
谢谢分享【 ADC及电压测量 】

交个朋友,来群里交流

yizhi1988 发表于 2021-5-24 09:32


谢谢分享【 ADC及电压测量 】,刚刚开始学习九齐单片机,刚好手上有个案子,想拿来练练手,这两天弄了好久,没有弄出来,楼主真是及时雨呀!万分感谢!!!
页: [1]
查看完整版本: 【九齐单片机专题】源程序讲解[3] ADC及电压测量