OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5901|回复: 5

STM8L152 ADC1怎么使用内部基准

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2015-8-8
在线时间
1 小时
发表于 2018-4-9 18:39:42 | 显示全部楼层 |阅读模式
15金钱
我是初学STM8的小白,目前遇到的问题:void  ADC1_Init(void)
{
  CLK_PeripheralClockConfig (CLK_Peripheral_ADC1,ENABLE);                                     //开启ADC/USART时钟
  ADC_VrefintCmd(ENABLE);                                                                                //使能内部参考电压
  ADC_Init (ADC1,ADC_ConversionMode_Single,ADC_Resolution_12Bit,ADC_Prescaler_1);//单次转换,12位,ADC转换时钟1分频
  ADC_Cmd(ADC1,ENABLE);                                                                               //使能ADC1
  ADC_ChannelCmd (ADC1,ADC_Channel_0,ENABLE);                                             //使能通道0------PA6
}


unsigned int ADC1_getdata(void)
{  
   unsigned int adc1_value;
   ADC_SoftwareStartConv (ADC1);                 //开始ADC软件转换
   while(!ADC_GetFlagStatus (ADC1,ADC_FLAG_EOC));//等待转换结束
   ADC_ClearFlag (ADC1,ADC_FLAG_EOC);            //清除对应标志
   adc1_value=ADC_GetConversionValue (ADC1);     //获取转换值
   return adc1_value;
}


这个在初始化使能内部参考电压
ADC_VrefintCmd(ENABLE);     //使能内部参考电压
但是在实际使用时这条语句加上和屏蔽掉,对ADC转换的结果没有任何影响,这说明根本就没有使用内部参考电压。
此单片机是32脚的没有独立的vref+脚,此脚跟电源VDD是同一个脚,也就是外部参考电压是电源的3.3V。
请大神指点一下,是不是ADC还有其他地方需要设置一下才可以成功还是这个单片机内部根本就没有内部参考源。
另我想知道,假如是64个脚的单片机有独立的vref+脚,那如果使用内部的参考电压比如1.224V的,那外部引脚vref+和vref-
怎么处理? 跪谢大神,我一共就31分,如果15分不够我再可以给。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-5-11
在线时间
5 小时
发表于 2018-4-9 23:12:31 | 显示全部楼层
我也遇到同样问题,就大神指点!
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164932
金钱
164932
注册时间
2010-12-1
在线时间
2100 小时
发表于 2018-4-11 01:50:58 | 显示全部楼层
帮顶
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2015-8-8
在线时间
1 小时
 楼主| 发表于 2018-4-11 11:59:04 | 显示全部楼层

原子哥能不能指点一下!
回复

使用道具 举报

13

主题

85

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1897
金钱
1897
注册时间
2016-8-20
在线时间
238 小时
发表于 2018-4-11 17:34:01 | 显示全部楼层
我现在也在搞这个ADC,正在解决这个问题,做得板子把Vref+这个脚留出来的准备接3.0的参考电压,不知道你那个原因是不是外部引脚Vref+接上VDD或者VDDA造成的呢?我这里这个调试板子就是接到VDD上了,一旦用内部参考,读回来的值和外部参考一样
回复

使用道具 举报

0

主题

4

帖子

0

精华

高级会员

Rank: 4

积分
886
金钱
886
注册时间
2016-1-31
在线时间
162 小时
发表于 2018-6-14 08:59:31 | 显示全部楼层
CLK_PeripheralClockConfig (CLK_Peripheral_ADC1,ENABLE);                                     //开启ADC/USART时钟
ADC_Init (ADC1,ADC_ConversionMode_Single,ADC_Resolution_12Bit,ADC_Prescaler_1);//单次转换,12位,ADC转换时钟1分频
ADC_SoftwareStartConv (ADC1);                 //开始ADC软件转换
ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_24Cycles);
ADC_VrefintCmd(ENABLE);                                                                                //使能内部参考电压
ADC_ChannelCmd(ADC1,ADC_Channel_Vrefint,ENABLE);
ADC_Cmd(ADC1,ENABLE);
ADC_SoftwareStartConv (ADC1);                 //开始ADC软件转换
while(!ADC_GetFlagStatus (ADC1,ADC_FLAG_EOC));//等待转换结束
ADC_ClearFlag (ADC1,ADC_FLAG_EOC);            //清除对应标志
adc1_value=ADC_GetConversionValue (ADC1);     //获取转换值


顺序不对的话,是不行滴,Good Luck!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-17 00:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表