牛卧堂MCU技术交流

标题: 请教AD转换问题,急! [打印本页]

作者: shujianxiaoyao    时间: 2014-2-20 11:40
标题: 请教AD转换问题,急!
现在用M058S开启两路AIN0和AIN1  AD转换,只有第一路能得到转换正确的数据,第二路一直都是0,万用表测量第二路脚有1.2V的电压,但就是得不到AD值,请教各位大神如下函数有哪里需要修改的呢?
/*-----------------------------------------------------------------*/
/* 初始化IO引脚                                                    */
/*-----------------------------------------------------------------*/
void IO_Init(void)
{
     /* 设定引脚复用功能 */
     SYS->P1_MFP = SYS_MFP_P10_AIN0
                 | SYS_MFP_P11_AIN1;
     SYS->P2_MFP = SYS_MFP_P20_PWM0
                 | SYS_MFP_P21_PWM1
                 | SYS_MFP_P22_PWM2
                 | SYS_MFP_P23_PWM3;
     SYS->P3_MFP = SYS_MFP_P30_RXD0
                 | SYS_MFP_P31_TXD0;
//    | SYS_MFP_P32_INT0;
     /* 配置引脚输入输出模式 */
     P0->PMD  = 0x000045F5;
     P1->PMD  = 0x0000F7FA;
     P1->OFFD = 0x00000003;
     P2->PMD  = 0x0000FF55;
     P3->PMD  = 0x0000DFCF;
     P4->PMD  = 0x0000FFF5;
}

/*-----------------------------------------------------------------*/
/* 初始化ADC                                                       */
/*-----------------------------------------------------------------*/
void ADC_Init()
{
     /* 设定ADC控制寄存器 */
     ADC->ADCR = ADC_ADCR_DMOF_UNSIGNED_OUTPUT
               | ADC_ADCR_DIFFEN_SINGLE_END
               | ADC_ADCR_TRGCOND_LOW_LEVEL
               | ADC_ADCR_ADMD_SINGLE
               | ADC_ADCR_ADEN_CONVERTER_ENABLE;
     /* 使能模拟输入通道 */
     ADC->ADCHER = 0x03;
}

// AD转换------------------------------------------
void  Bat_volt_check(void)
{
   
   uint32_t adcbuf1, adcbuf2;
   uint32_t temp;
   
         _ADC_SET_CHANNEL(0X03);        //P1.0 P1.1
    /* clear the A/D interrupt flag for safe */
         ADC->ADSR = ADC_ADSR_ADF_Msk;
   _ADC_START_CONVERT();
      _ADC_WAIT_COVERSION_DONE();
   ADC->ADSR = ADC_ADSR_ADF_Msk;      /* clear the A/D conversion flag */
   
   adcbuf1 = _ADC_GET_CONVERSION_DATA(0);

   adcbuf2 = _ADC_GET_CONVERSION_DATA(1);

   printf("ad0 = %d\n", adcbuf1);
   printf("ad1 = %d\n", adcbuf2);



adcbuf2 一直都是0,不管接了多少伏电压都是一样,为什么呢? 这样写的函数有问题吗?


作者: chenwenbin    时间: 2014-2-20 13:23
ADC是不是设置成单次模式了,单次模式只转换使能的编号低的那个通道,还有不要设置成差分输入模式
作者: shujianxiaoyao    时间: 2014-2-20 14:12
chenwenbin 发表于 2014-2-20 13:23
ADC是不是设置成单次模式了,单次模式只转换使能的编号低的那个通道,还有不要设置成差分输入模式 ...

谢谢指点,确实是把ADC设置成单次模式了,现在改成单周期模式就可以了。




欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/) Powered by Discuz! X3.2