OpenEdv-开源电子网

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

stm8s003的adc问题,比较奇怪,偶尔出现0

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-5-3
在线时间
7 小时
发表于 2017-5-5 20:45:19 | 显示全部楼层 |阅读模式
玩stm8呢,做个电流表
采样的电压,很稳定, 38mv左右
但stm8采样来的电压就不稳定了,经常出现0和较大偏差
stm8的adc是10位

有了解的坛友么,啥原因呢
这玩意还不如stc的adc稳定呢

0C484BD28E6358A6C467C489DC25A56A.jpg
{X69U(DUDC~FQH@DR6Z~KG0.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2017-5-5 22:36:52 | 显示全部楼层
你转换速度是不是太快了
回复 支持 反对

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6661
金钱
6661
注册时间
2016-5-29
在线时间
909 小时
发表于 2017-5-6 08:22:29 | 显示全部楼层
先不要急着下结论.我也用过他的ADC功能.没有你想像中的那么差.先看一下是不是哪里没有设置好.
回复 支持 反对

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3990
金钱
3990
注册时间
2015-11-14
在线时间
541 小时
发表于 2017-5-6 14:21:19 | 显示全部楼层
肯定是你的配置不对,我用来做电压表电流表都没有任何问题
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-5-3
在线时间
7 小时
 楼主| 发表于 2017-5-7 21:33:17 | 显示全部楼层
操作系统 发表于 2017-5-6 08:22
先不要急着下结论.我也用过他的ADC功能.没有你想像中的那么差.先看一下是不是哪里没有设置好.

配置的转换速度是最慢了,而且,这只是个测试,程序里面什么都没有,采集显示,串口发送而已,
理论上,稳压用的7805波纹不大,实际上示波器测,也没有大波文
void ADC_Init()
{
//设置PC->4 为输入 悬空输入  中断禁止
  GPIO_Init(GPIOD , GPIO_PIN_3 , GPIO_MODE_IN_FL_NO_IT);
  
  ADC1_Init(ADC1_CONVERSIONMODE_SINGLE ,   //单次转换模式
            ADC1_CHANNEL_4 ,               //配置为通道 2 采样 注意!!!
            ADC1_PRESSEL_FCPU_D18 ,        //采样速率为16M / 18
            ADC1_EXTTRIG_TIM ,             //外部触发
            DISABLE ,                      //不使能外部触发
            ADC1_ALIGN_RIGHT ,             //采样数据右对齐
            ADC1_SCHMITTTRIG_ALL ,        //施密特
            DISABLE                        //不使能施密特
            );
  
  ADC1_Cmd(ENABLE);     //启动ADC
}
u16 ADC_getData(void)
{
  u16 adcValue;
  ADC1_Cmd(ENABLE);     //启动ADC
  
  while(ADC1_GetFlagStatus(ADC1_FLAG_EOC) == RESET);  //等待转换结束
  ADC1_ClearFlag(ADC1_FLAG_EOC);  //清除转换结束标志
adcValue= ADC1_GetConversionValue();  //读取转换数据
}
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-5-3
在线时间
7 小时
 楼主| 发表于 2017-5-7 21:33:43 | 显示全部楼层
Electronic 发表于 2017-5-6 14:21
肯定是你的配置不对,我用来做电压表电流表都没有任何问题

配置的转换速度是最慢了,而且,这只是个测试,程序里面什么都没有,采集显示,串口发送而已,
理论上,稳压用的7805波纹不大,实际上示波器测,也没有大波文
void ADC_Init()
{
//设置PC->4 为输入 悬空输入  中断禁止
  GPIO_Init(GPIOD , GPIO_PIN_3 , GPIO_MODE_IN_FL_NO_IT);
  
  ADC1_Init(ADC1_CONVERSIONMODE_SINGLE ,   //单次转换模式
            ADC1_CHANNEL_4 ,               //配置为通道 2 采样 注意!!!
            ADC1_PRESSEL_FCPU_D18 ,        //采样速率为16M / 18
            ADC1_EXTTRIG_TIM ,             //外部触发
            DISABLE ,                      //不使能外部触发
            ADC1_ALIGN_RIGHT ,             //采样数据右对齐
            ADC1_SCHMITTTRIG_ALL ,        //施密特
            DISABLE                        //不使能施密特
            );
  
  ADC1_Cmd(ENABLE);     //启动ADC
}
u16 ADC_getData(void)
{
  u16 adcValue;
  ADC1_Cmd(ENABLE);     //启动ADC
  
  while(ADC1_GetFlagStatus(ADC1_FLAG_EOC) == RESET);  //等待转换结束
  ADC1_ClearFlag(ADC1_FLAG_EOC);  //清除转换结束标志
adcValue= ADC1_GetConversionValue();  //读取转换数据
}
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 00:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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