OpenEdv-开源电子网

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

STM8L051F3 ADC问题

[复制链接]

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-5-22
在线时间
42 小时
发表于 2016-8-3 15:00:34 | 显示全部楼层 |阅读模式
5金钱
测量AD时,在小于1V时,调试的时候,显示的值是正确的,但全速运行时显示的值就会扩大10倍,大于1V采样显示正常....例如我采量的电压是0.327V,采样时行调试的过程步进得到的是buf[0]=0x0C,buf[1]=0xCA,全速得到的是buf[0]=0x7F,buf[1]=0xFD,扩大了10倍
工作时程序:
  u16 adcx,adcx1;
  float Temp,Temp1;
  char buf[4],i;
  adcx=Get_Adc_Average(ADC_Channel_14,5);//AD测量传感器电压
GPIO_SetBits(GPIOC,GPIO_Pin_5);//关传感器  
   adcx1=Get_Adc_Average(ADC_Channel_16,5);//AD测量电池电压
  ADC_Cmd(ADC1, DISABLE);  
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1,DISABLE);

   Temp=(float)adcx*(3.304/4096);
  Temp1=(float)adcx1*(3.304/4096);
  buf[0]=(unsigned int)(Temp*10000)>>8;
  buf[1]=(unsigned int)(Temp*10000);
  buf[2]=(unsigned int)(Temp1*10000)>>8;
  buf[3]=(unsigned int)(Temp1*10000);

  Uart_Init(115200);
  GPIO_SetBits(GPIOB,GPIO_Pin_0);//控制开485发送
  GPIO_ResetBits(GPIOD,GPIO_Pin_0); //控制开485供电

for (i=0;i<4;i++)
  {  USART_SendData8(USART1,buf);
    while (USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);

  }



最佳答案

查看完整内容[请看2#楼]

你这同样是两个物理过程,AD采样和串口发送, AD采样结束的位置,是两个过程的结合部。 先分清问题的部位,是AD采样还是后面的处理、发送。 可以在AD采样结束的位置,设置断点,或者临时把数据保存一段,然后观察。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6275

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11271
金钱
11271
注册时间
2014-4-1
在线时间
1249 小时
发表于 2016-8-3 15:00:35 | 显示全部楼层

你这同样是两个物理过程,AD采样和串口发送,
AD采样结束的位置,是两个过程的结合部。
先分清问题的部位,是AD采样还是后面的处理、发送。

可以在AD采样结束的位置,设置断点,或者临时把数据保存一段,然后观察。

回复

使用道具 举报

58

主题

6275

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11271
金钱
11271
注册时间
2014-4-1
在线时间
1249 小时
发表于 2016-8-3 15:51:29 | 显示全部楼层

“步进得到的”,怎么观察的?
“全速得到的”,又是怎么观察的?

回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-5-22
在线时间
42 小时
 楼主| 发表于 2016-8-3 16:15:11 | 显示全部楼层
xuande 发表于 2016-8-3 15:51
“步进得到的”,怎么观察的?
“全速得到的”,又是怎么观察的?

在IAR调试中步进,全速直接显示在串口
回复

使用道具 举报

58

主题

6275

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11271
金钱
11271
注册时间
2014-4-1
在线时间
1249 小时
发表于 2016-8-3 16:17:03 | 显示全部楼层

调试中步进,是用仿真器观察的?

回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-5-22
在线时间
42 小时
 楼主| 发表于 2016-8-3 16:18:22 | 显示全部楼层
xuande 发表于 2016-8-3 16:17
调试中步进,是用仿真器观察的?

对啊,直接仿真观察的
回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-5-22
在线时间
42 小时
 楼主| 发表于 2016-8-3 16:43:18 | 显示全部楼层
xuande 发表于 2016-8-3 16:22
你这同样是两个物理过程,AD采样和串口发送,
AD采样结束的位置,是两个过程的结合部。
先分清问题的部 ...

发现是AD采样的问题,将断点设在AD采样的下一句,采到的值就会变大10,将断点设在AD采样再步进就显示正常
回复

使用道具 举报

58

主题

6275

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11271
金钱
11271
注册时间
2014-4-1
在线时间
1249 小时
发表于 2016-8-3 16:52:00 | 显示全部楼层

几个物理过程串联,要在结合部测试。
这决定了排查的方向。

注意学习这种排查问题的方法。

回复

使用道具 举报

58

主题

6275

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11271
金钱
11271
注册时间
2014-4-1
在线时间
1249 小时
发表于 2016-8-3 16:52:41 | 显示全部楼层

为什么乘以1w?
目测这句有问题。

回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-5-22
在线时间
42 小时
 楼主| 发表于 2016-8-3 17:02:29 | 显示全部楼层
xuande 发表于 2016-8-3 16:52
为什么乘以1w?
目测这句有问题。

精确到小数位
回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-5-22
在线时间
42 小时
 楼主| 发表于 2016-8-3 17:05:27 | 显示全部楼层
xuande 发表于 2016-8-3 16:52
为什么乘以1w?
目测这句有问题。

也试过缩小到100了,还是一样
回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-5-22
在线时间
42 小时
 楼主| 发表于 2016-8-4 16:04:50 | 显示全部楼层
xuande 发表于 2016-8-3 16:52
为什么乘以1w?
目测这句有问题。

发现是下拉电阻的问题,但是匹配起来比较麻烦
回复

使用道具 举报

58

主题

6275

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11271
金钱
11271
注册时间
2014-4-1
在线时间
1249 小时
发表于 2016-8-4 16:07:32 | 显示全部楼层
aiyy 发表于 2016-8-4 16:04
发现是下拉电阻的问题,但是匹配起来比较麻烦


哪里的下拉电阻?


回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-5-22
在线时间
42 小时
 楼主| 发表于 2016-8-4 16:55:40 | 显示全部楼层
xuande 发表于 2016-8-4 16:07
哪里的下拉电阻?

AD口那里原来是上拉的,换了下拉电阻4.7K后,测出来的值小了,再换成6.2K,0.32的值可以了,但是大于1V的测出来大了,现在就是只顾得一头,另一边就不准了
回复

使用道具 举报

58

主题

6275

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11271
金钱
11271
注册时间
2014-4-1
在线时间
1249 小时
发表于 2016-8-4 17:01:06 | 显示全部楼层
aiyy 发表于 2016-8-4 16:55
AD口那里原来是上拉的,换了下拉电阻4.7K后,测出来的值小了,再换成6.2K,0.32的值可以了,但是大于1V的 ...


根本不该有这个电阻,除非是构成分压关系。

回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-5-22
在线时间
42 小时
 楼主| 发表于 2016-8-4 17:39:10 | 显示全部楼层
xuande 发表于 2016-8-4 17:01
根本不该有这个电阻,除非是构成分压关系。

有上拉电阻和没有电阻情况一样啊
回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-5-22
在线时间
42 小时
 楼主| 发表于 2016-8-4 17:41:08 | 显示全部楼层
xuande 发表于 2016-8-4 17:01
根本不该有这个电阻,除非是构成分压关系。

网上有人说这个芯片的内部下拉有问题
回复

使用道具 举报

58

主题

6275

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11271
金钱
11271
注册时间
2014-4-1
在线时间
1249 小时
发表于 2016-8-4 20:04:36 | 显示全部楼层
aiyy 发表于 2016-8-4 17:41
网上有人说这个芯片的内部下拉有问题


这你也信。。。
那这芯片的AD纯属无用。

回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-5-22
在线时间
42 小时
 楼主| 发表于 2016-8-6 10:03:35 | 显示全部楼层
xuande 发表于 2016-8-4 20:04
这你也信。。。
那这芯片的AD纯属无用。

已经知道原因了,原来是信号源的问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-6-29 05:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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