你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
laishipeng 提问时间:2017-6-23 18:59 /
  1. 很是郁闷,试过多种方法,但是不管怎么改,读出来的都是409X的,百思不得其解,求助下,希望坛友给支支招,感激不尽!!
复制代码



收藏 评论14 发布时间:2017-6-23 18:59

举报

14个回答
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;//ADCA0_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接了没有?通道是否选择正确?
fafa1 回答时间: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的电源也是正常的,估计是软件配置上有问题,就是找不出哪里问题,,
laishipeng 回答时间:2017-6-26 15:05:36
KCL 发表于 2017-6-24 08:15
輸入是高電位,是否空載? 用三用電表對下就知道了

输入到那个pin的电压什么的都正常
laishipeng 回答时间:2017-6-26 15:09:01
QQ截图20170626150431.jpg
PA1就是检测 ADC 通道1的pin
laishipeng 回答时间:2017-6-26 16:40:13
PA1就是ADC 通道1检测的pin
QQ截图20170626150431.jpg
向日葵下避风的猫 回答时间:2017-8-15 10:24:09
楼主你问题解决了没?我现在的情况和你一样也是一直4096求告知啊
五哥1 回答时间:2017-8-15 15:02:36
真是百思不得其姐呀

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版