Q80351951 发表于 2019-12-17 17:15

ADC不准,非常不准,问题在哪里?

本帖最后由 Q80351951 于 2019-12-17 17:18 编辑

ADC不准,非常不准,问题在哪里?
uint8_t Adc_test(void)
{
      stc_adc_cfg_t stcAdcCfg;
      stc_adc_norm_cfg_t stcAdcNormCfg;

      DDL_ZERO_STRUCT(stcAdcCfg);
      DDL_ZERO_STRUCT(stcAdcNormCfg);

      if (Ok != Clk_SetPeripheralGate(ClkPeripheralAdcBgr, TRUE))
      {
                return Error;
      }

      Adc_Enable();
      M0P_BGR->CR_f.BGR_EN = 0x1u; //BGR必须使能
      M0P_BGR->CR_f.TS_EN = 0x0u;

      SysTick_m26_delay(3);

      stcAdcCfg.enAdcOpMode = AdcNormalMode;                  //单次采样模式
      stcAdcCfg.enAdcClkSel = AdcClkSysTDiv1;                  //PCLK
      stcAdcCfg.enAdcSampTimeSel = AdcSampTime8Clk; //4个采样时钟
      stcAdcCfg.enAdcRefVolSel = RefVolSelInBgr2p5; //RefVolSelAVDD;//参考电压:内部2.5V(avdd>3V,SPS<=200kHz)SPS速率 = ADC时钟 / (采样时钟 + 16CLK)
      stcAdcCfg.bAdcInBufEn = TRUE;                                  //电压跟随器如果使能,SPS采样速率 <=200K
      stcAdcCfg.u32AdcRegHighThd = 0u;                        //比较阈值上门限
      stcAdcCfg.u32AdcRegLowThd = 0u;                                  //比较阈值下门限
      stcAdcCfg.enAdcTrig0Sel = AdcTrigDisable;         //ADC转换自动触发设置
      stcAdcCfg.enAdcTrig1Sel = AdcTrigDisable;
      Adc_Init(&stcAdcCfg);

      stcAdcNormCfg.enAdcNormModeCh = AdcAVccDiV3Input; //通道0 P24
      stcAdcNormCfg.bAdcResultAccEn = FALSE;
      Adc_ConfigNormMode(&stcAdcCfg, &stcAdcNormCfg);

      while (1)
      {
                Adc_Start();
                while (FALSE != Adc_PollBusyState())
                        ;
                Adc_GetResult(&batt_voltage_data);
                Adc_ClrAccResult();

                batt_voltage = batt_voltage_data * 7500 / 4096; //电池电压
                Uart1_Send_str((uint8_t *)"\r\n电");
                Uart1_Send_str(uint16_to_5DEC(batt_voltage));
                Uart1_Send_str((uint8_t *)" 电da");
                Uart1_Send_str(uint16_to_5DEC(batt_voltage_data));

                SysTick_m26_delay(1000);
                Wdt_Feed(); //喂狗
      }
}

Q80351951 发表于 2019-12-17 18:08

自己解决了,P36影响的。

xyz549040622 发表于 2019-12-18 11:34

根据你的提问来看,你找到的问题和提问没有丝毫的关系。。。

Q80351951 发表于 2019-12-18 23:06

xyz549040622 发表于 2019-12-18 11:34
根据你的提问来看,你找到的问题和提问没有丝毫的关系。。。

你咋知道没关系?

yzjyh 发表于 2019-12-24 15:46

Q80351951 发表于 2019-12-17 18:08
自己解决了,P36影响的。

具体点,能否分享下

Q80351951 发表于 2020-2-11 19:50

本帖最后由 Q80351951 于 2020-2-11 19:52 编辑

yzjyh 发表于 2019-12-24 15:46
具体点,能否分享下
假若我把12V电压经过一个5K电阻链接到单片机IO,正常情况下没啥问题,并且很多其他型号厂家的我也这样用过,甚至220V交流直接电阻(500K)进入IO做过零检测也没啥问题,并且是批量的产品。但这个单片机就不行。IO电压不能超VCC,说超了不行。

smartpower 发表于 2020-2-11 23:43

本帖最后由 smartpower 于 2020-2-11 23:48 编辑

每个MCU多少还是有点差别的。

smartpower 发表于 2020-2-11 23:45

本帖最后由 smartpower 于 2020-2-11 23:47 编辑

规格书的要求如下,切勿超规格使用。

ADC输入电压 < ADC参考电压< AVCC

东风压倒西风 发表于 2020-2-18 15:52

Q80351951 发表于 2019-12-18 23:06
你咋知道没关系?

对这个对话跟帖比较奇葩。。。我也看不懂是咋回事儿。。。

机器人罗伯特 发表于 2020-2-18 15:56

是不是自己的基准源不准?
页: [1]
查看完整版本: ADC不准,非常不准,问题在哪里?