jkhmf 发表于 2016-10-17 16:59:46

请教STM8AF芯片如何读取ADC的参考电压

网上讲ADC有参考电压是1.2V,因为是内部参考没有引用,我查STM8AF5288最高0:9共10个通道,试了一下读10与11出来的值都不对比较大应该不对。不知道如何读出1.2V电压的ADC值用作参考电压。

lulugl 发表于 2016-10-18 08:52:45

应该是第7通道吧1.22V的参考电压

liu553824989 发表于 2016-10-18 08:54:01

应该是第7通道吧1.22V的参考电压,要配置的,配置好了再去读取

z258121131 发表于 2016-10-18 09:03:02

学习了,定

samhong 发表于 2016-10-18 09:45:09

查了PDF,现理解了,谢了!

zengyi703-16313 发表于 2016-10-18 11:33:59

看下参考手册

anywill 发表于 2016-10-18 11:43:20

网上搜的你试试
/* Includes ------------------------------------------------------------------*/
#include "stm8l15x.h"

u16 value;
void delay_us(u16 n);
void main(void)
{
u8 i=0;
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);
ADC_DeInit(ADC1);
ADC_Init(ADC1,ADC_ConversionMode_Single,ADC_Resolution_12Bit,ADC_Prescaler_2);
ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels,ADC_SamplingTime_384Cycles);
ADC_SamplingTimeConfig(ADC1, ADC_Group_FastChannels,ADC_SamplingTime_9Cycles);
ADC_DMACmd(ADC1, DISABLE);
/* Infinite loop */
while (1)
{
    ADC_ChannelCmd(ADC1, ADC_Channel_Vrefint,ENABLE);//选择内部基准通道
    ADC_Cmd(ADC1, ENABLE);//ADON
    ADC_VrefintCmd(ENABLE);//TSON
    delay_us(5);
    for (i=0;i<10;i++)
    {
      ADC_SoftwareStartConv(ADC1);//START
      while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==0){};//wait for EOC
      value = ADC_GetConversionValue(ADC1);
    }
    ADC_Cmd(ADC1, DISABLE);//ADON复位
    ADC_VrefintCmd(DISABLE);//TSON复位
    ADC_ChannelCmd(ADC1, ADC_Channel_Vrefint,DISABLE);//关闭通道
    delay_us(0xff);
}
}
/*****************延时us函数*******************/
void delay_us(u16 n)
{
u32 i=n*16;
while(--i){};
}

MrLi... 发表于 2016-10-18 11:58:43

支持。。。。。。。。。。。。。

无薪税绵 发表于 2016-10-18 12:34:50

没有用过ADC,帮楼主加人气。

jkhmf 发表于 2016-10-18 13:59:26

本帖最后由 jkhmf 于 2016-10-18 14:17 编辑

非常感谢各位,我确实也看了手册,但是发现STM8AF5288系列外部ADC有10路能道,分也是PB0-PB7 +上PE6与PE7是10通道。按理7通道应该不是内部的。刚刚试了一下。PB7我没有接线读出来的数是居然是21632,看上去比较像。
for( uint8_t j=0;j<Row;j++)
   {

      adc_tmp= ADC_Init_Channel(ADC2_CHANNEL_7);

   }


页: [1]
查看完整版本: 请教STM8AF芯片如何读取ADC的参考电压