微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STM求助,关于ADC实在是没能力解决了

STM求助,关于ADC实在是没能力解决了

时间:10-02 整理:3721RD 点击:
发现一个问题
STM32
ADC采样,同一个通道,同一个基准,就是什么都没有改变但是采集的数值不一样
下图为实验数据


第一次采集的会比后面几次采集的数据略大一点

主函数代码:

  1. while(1)
  2.         {
  3.                
  4.                 ad=0;
  5.                 for(i=0;i<50;i++)
  6.                 {
  7.                         ad+=Get_adc();
  8.                 }
  9.                 ad=ad/50;
  10.                 printf("----第1次=%d",ad);
  11.                
  12.                 ad=0;
  13.                 for(i=0;i<50;i++)
  14.                 {
  15.                         ad+=Get_adc();
  16.                 }
  17.                 ad=ad/50;
  18.                 printf("----第2次=%d",ad);

复制代码

初始化代码:

  1. void ADC_Configarition(void)
  2. {
  3.         ADC_InitTypeDef ADC_Inttstructure;
  4.        
  5.         ADC_Inttstructure.ADC_Mode=ADC_Mode_Independent;//独立模式
  6.         ADC_Inttstructure.ADC_ScanConvMode =DISABLE;
  7.         ADC_Inttstructure.ADC_ContinuousConvMode=DISABLE;//采集模式单次
  8.         ADC_Inttstructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
  9.         ADC_Inttstructure.ADC_DataAlign=ADC_DataAlign_Right;//右对齐
  10.         ADC_Inttstructure.ADC_NbrOfChannel=1;//转换通道数目
  11.        
  12.         ADC_Init(ADC1,&ADC_Inttstructure);//初始化

复制代码



你可以把数据变成8位的,我总觉得32的ADC只是有着12位的称号

基准电压有点跳动是正常的,值也没差多少,做一个均值滤波就好了啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top