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

STM8L ADC采样问题,求救啊

[复制链接]
536715119 提问时间:2018-10-19 14:05 /
芯片型号STM8L151C8T6
使用ADC,内部1.225V参考电压采样,计算电源电压。采样50次,发现数据没有规律的乱变,网上能找到的例子都试过了,甚至库函数中使用到的寄存器也都查看过了,找不到问题原因。

void ADC_Config_VCC(void)
{

  CLK_PeripheralClockConfig(CLK_Peripheral_ADC1,ENABLE);  //开启ADC1时钟

  ADC_VrefintCmd(ENABLE);   //使能内部参考电压
  ADC_Init(ADC1,ADC_ConversionMode_Single,ADC_Resolution_12Bit,ADC_Prescaler_1);   //连续转换,12位,转换时钟1分频

  ADC_ChannelCmd(ADC1,ADC_Channel_Vrefint,ENABLE);   //使能内部参考电压通道
  ADC_Cmd(ADC1,ENABLE);//ADC使能
}


void ADC_dispose(void)
{

uint8_t temp_i;
  uint16_t adc_data1[50];


ADC_Config_VCC();//ADC初始化,采样1.225V的参考电压,来反推出电源电压
  adc_data =0;
for(temp_i=0;temp_i<50;temp_i++)
  {
    ADC_SoftwareStartConv(ADC1);    //开启软件转换
    while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));    //等待转换结束
    ADC_ClearFlag(ADC1,ADC_FLAG_EOC);    //清除对应标志
    adc_data1[temp_i]=ADC_GetConversionValue(ADC1);    //获取转换值

  }

}
这是采集到的数据

采集到的数据

采集到的数据



收藏 评论4 发布时间:2018-10-19 14:05

举报

4个回答
sincomaster 回答时间:2018-10-19 14:45:15
ADC还没玩过,硬件线路是对的吗?
是不是FOR内的第一句每次都在重开启转换呢

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

七哥 回答时间:2018-10-19 15:10:50
开启AD后,稍加点延时,然后再判断转换标志。

初始化中加一条,ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);


评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

wenyangzeng 回答时间:2018-10-19 16:10:46
本帖最后由 wenyangzeng 于 2018-10-19 16:11 编辑

ADC数据格式好像没有初始化:
ADC1_ALIGN_RIGHT
robter 回答时间:2018-10-24 07:55:28
没遇到这样没有规律的结果,延时时间不够吧
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版