laishipeng 发表于 2017-6-23 18:59:33

stm32f030k6 的ADC读出的数据一直是4092。。

很是郁闷,试过多种方法,但是不管怎么改,读出来的都是409X的,百思不得其解,求助下,希望坛友给支支招,感激不尽!!


laishipeng 发表于 2017-6-23 19:01:34

本帖最后由 laishipeng 于 2017-6-23 19:02 编辑


void Adc_Init(void)
{
      GPIO_InitTypeDef GPIO_InitA;
      ADC_InitTypeDef ADC_InitStructure;

      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

      ADC_DeInit(ADC1);                                                
ADC_StructInit(&ADC_InitStructure);
      
      RCC_ADCCLKConfig(RCC_ADCCLK_PCLK_Div2);

      GPIO_InitA.GPIO_Pin=GPIO_Pin_1;//ADC:PA0_IN0
      GPIO_InitA.GPIO_Mode=GPIO_Mode_AN;
      GPIO_InitA.GPIO_PuPd = GPIO_PuPd_NOPULL;
      GPIO_Init(GPIOA,&GPIO_InitA);
      
      ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
      ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;      
      ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConvEdge_None;      
      ADC_InitStructure.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;
      ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;      
      ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;   
      ADC_Init(ADC1, &ADC_InitStructure);      
      
      ADC_ChannelConfig(ADC1,ADC_Channel_1,ADC_SampleTime_239_5Cycles);
      
      ADC_GetCalibrationFactor(ADC1);

      ADC_Cmd(ADC1,ENABLE);   
      
}

zhao.zhao 发表于 2017-6-23 20:27:14

    再在后面加上如下2句指令看看有没有效果
    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN)); // 等待ADC准备好
    ADC_StartOfConversion(ADC1);               // 启动转换

xmshao 发表于 2017-6-23 23:07:33

本帖最后由 xmshao 于 2017-6-23 23:08 编辑

st官方库很多现存代码基本可以直接拿来用。
觉得软件配置无误的话,再检查下硬件,尤其电源,VDDA接了没有?通道是否选择正确?

sfd123-302670 发表于 2017-6-24 07:48:32

检查检查硬件连接吧

KCL 发表于 2017-6-24 08:15:27

輸入是高電位,是否空載? 用三用電表對下就知道了

shuolang126 发表于 2017-6-26 08:59:14

是的,官方例程库,里面有相应的例程,直接就可以用,如果还出错,只能是硬件连接错误!

laishipeng 发表于 2017-6-26 15:02:25

zhao.zhao 发表于 2017-6-23 20:27
再在后面加上如下2句指令看看有没有效果
    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN)); // 等 ...

加上也没用,还是读出409X。

laishipeng 发表于 2017-6-26 15:04:31

xmshao 发表于 2017-6-23 23:07
st官方库很多现存代码基本可以直接拿来用。
觉得软件配置无误的话,再检查下硬件,尤其电源,VDDA接了没有 ...

测过,硬件上是OK的。。
到主控的那个pin的电源也是正常的,估计是软件配置上有问题,就是找不出哪里问题,,

laishipeng 发表于 2017-6-26 15:04:50

sfd123-302670 发表于 2017-6-24 07:48
检查检查硬件连接吧

测过,硬件上是OK的。。
到主控的那个pin的电源也是正常的,估计是软件配置上有问题,就是找不出哪里问题,,
页: [1] 2
查看完整版本: stm32f030k6 的ADC读出的数据一直是4092。。