OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 957|回复: 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分不够我再可以给。

回复

使用道具 举报

  离线 

0

主题

2

帖子

0

精华

新手上路

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

使用道具 举报

  离线 

512

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

  离线 

1

主题

2

帖子

0

精华

新手上路

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

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

使用道具 举报

  离线 

10

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

  离线 

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2016-1-31
在线时间
35 小时
发表于 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!
回复

使用道具 举报

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

本版积分规则




关闭

报名原子哥新品发布会&粉丝见面会上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-10-22 09:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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