OpenEdv-开源电子网

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

ADC转换顺序

[复制链接]

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-3
在线时间
0 小时
发表于 2013-6-25 16:39:35 | 显示全部楼层 |阅读模式
我用通道0转换滑动变阻器,用通道16转换内部温度传感器,但是得到的结果不是交替输出,而是乱的,请教下。





我这是哪里错了啊,大师们。程序在附件里



 

main.c

1.67 KB, 下载次数: 127

ADC.C

2.69 KB, 下载次数: 194

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

使用道具 举报

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-6-25 16:41:12 | 显示全部楼层
1.4的是内部温度传感器,0.0的是滑动变阻器
dd
回复 支持 反对

使用道具 举报

105

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1386
金钱
1386
注册时间
2012-10-23
在线时间
97 小时
发表于 2013-6-25 17:35:49 | 显示全部楼层
get_adc_data函数错了.不能这样用。因为你开启了连续转换的。
回复 支持 反对

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2013-6-25 18:39:31 | 显示全部楼层
你看下你怎么配置的,代码一般我们都不看,如果你连续采集的话,需要设置一个buffer,或者使用DMA进行传输。
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复 支持 反对

使用道具 举报

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-6-25 22:37:13 | 显示全部楼层
回复【3楼】miaoguoqiang:
---------------------------------
请教大师,该用哪个函数呢?望你明示啊
dd
回复 支持 反对

使用道具 举报

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-6-25 22:38:26 | 显示全部楼层
回复【4楼】ST-FAE-SALE:

你看下你怎么配置的,代码一般我们都不看,如果你连续采集的话,需要设置一个buffer,或者使用DMA进行传输。

---------------------------------配置应该是好的啊,不然不会转换出来的
dd
回复 支持 反对

使用道具 举报

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-6-25 22:40:00 | 显示全部楼层
回复【3楼】miaoguoqiang:

get_adc_data函数错了.不能这样用。因为你开启了连续转换的。

---------------------------------
那用哪个函数啊,大师,你明示下啊,搞了老久,还是不开窍这脑壳
dd
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2012-6-5
在线时间
2 小时
发表于 2013-6-26 10:27:32 | 显示全部楼层
楼上的意思可能是你设置的是连续转换模式,两个通道连续转换,如果前一次的转换值还没读出来可能就被后一次的值覆盖了。

而Get_adc_data()函数读一次ADC值之后在执行其他语句时(会有耗时),ADC可能已经完成了一次或者多次转换了,等再次进入Get_adc_data()函数时,已经不知道经历了几次ADC转换了,所以打印出来的ADC值是无规则的。
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2012-6-5
在线时间
2 小时
发表于 2013-6-26 10:40:43 | 显示全部楼层
又重新看了下Get_adc_data()函数中的代码,楼主把EOC标志清除了之后才读的ADC值,EOC清除之后ADC就进入下一次转换了,这时读出来的值貌似是不稳定的。

楼主试试把软件清除EOC那一行删了,因为读ADC时硬件会自动清EOC的。
回复 支持 反对

使用道具 举报

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-6-26 11:42:29 | 显示全部楼层
回复【9楼】ringcoolh:

又重新看了下Get_adc_data()函数中的代码,楼主把EOC标志清除了之后才读的ADC值,EOC清除之后ADC就进入下一次转换了,这时读出来的值貌似是不稳定的。
楼主试试把软件清除EOC那一行删了,因为读ADC时硬件会自动清EOC的。

---------------------------------
这条删掉一样的,没有变化。
dd
回复 支持 反对

使用道具 举报

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-6-26 11:52:37 | 显示全部楼层
我觉得这个说的貌似有点道理。我修改采样周期加大采样时间


,只有温度传感器的数据发出来。


我做个表格。就在那里查询数据转换就存入,然后表格装满,再发送出来。这样试一试。32的AD真是难搞,花样多的很
dd
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2012-6-5
在线时间
2 小时
发表于 2013-6-26 13:35:13 | 显示全部楼层
ADC配置里面把转换模式设置为单次,ENABLE改为DISABLE试一下吧

 "ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//模数转换是连续还是单次模式"
回复 支持 反对

使用道具 举报

105

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1386
金钱
1386
注册时间
2012-10-23
在线时间
97 小时
发表于 2013-6-26 14:08:57 | 显示全部楼层
回复【7楼】冷面狼:
---------------------------------
SCANCONVMODE要DISABLE
回复 支持 反对

使用道具 举报

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-6-26 16:06:46 | 显示全部楼层
回复【13楼】miaoguoqiang:

回复【7楼】冷面狼:
---------------------------------
SCANCONVMODE要DISABLE

---------------------------------
这样也不对啊,大师
dd
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 10:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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