请教STM8AF芯片如何读取ADC的参考电压
网上讲ADC有参考电压是1.2V,因为是内部参考没有引用,我查STM8AF5288最高0:9共10个通道,试了一下读10与11出来的值都不对比较大应该不对。不知道如何读出1.2V电压的ADC值用作参考电压。应该是第7通道吧1.22V的参考电压
应该是第7通道吧1.22V的参考电压,要配置的,配置好了再去读取 学习了,定 查了PDF,现理解了,谢了! 看下参考手册 网上搜的你试试
/* 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){};
}
支持。。。。。。。。。。。。。 没有用过ADC,帮楼主加人气。 本帖最后由 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]