打印
[技术问答]

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

[复制链接]
3303|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Q80351951|  楼主 | 2019-12-17 17:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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
根据你的提问来看,你找到的问题和提问没有丝毫的关系。。。

你咋知道没关系?

使用特权

评论回复
5
yzjyh| | 2019-12-24 15:46 | 只看该作者
Q80351951 发表于 2019-12-17 18:08
自己解决了,P36影响的。

具体点,能否分享下

使用特权

评论回复
6
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,说超了不行。

使用特权

评论回复
7
smartpower| | 2020-2-11 23:43 | 只看该作者
本帖最后由 smartpower 于 2020-2-11 23:48 编辑

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

使用特权

评论回复
8
smartpower| | 2020-2-11 23:45 | 只看该作者
本帖最后由 smartpower 于 2020-2-11 23:47 编辑

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

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

使用特权

评论回复
9
东风压倒西风| | 2020-2-18 15:52 | 只看该作者
Q80351951 发表于 2019-12-18 23:06
你咋知道没关系?

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

使用特权

评论回复
10
机器人罗伯特| | 2020-2-18 15:56 | 只看该作者
是不是自己的基准源不准?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

254

帖子

5

粉丝