你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F072多通道ADC采集,两路数据相同怎么解决?

[复制链接]
左岸右岸 提问时间:2015-7-25 15:18 /
悬赏20ST金币已解决
使用STM32F072多通道ADC采集,发现想要采集的两路数据却是相同的现象,而我用单通道采集数据正常。现在将附上代码,请大家帮忙看看哪里有问题,欢迎指教,希望能解决这个问题,谢谢啦!

这是IO的配置:

配置IO口

配置IO口


配置DMA:

DMA

DMA


配置ADC:

配置ADC

配置ADC


采样函数:times为采样次数

采样

采样


最后是main函数:

main

main


应采样到的数据应为:V1=2590,V2=3031,而实际上采样到的数据V1=V2,即两次采集到的都是ADC通道的最前面的一个通道的数据,在我这里即ADC_Channel_0,不知道哪里出错?或者大家用过哪些方法能成功采集到不同通道的数据?

采样数据

采样数据

采样数据2.png



非常感谢热心的朋友们,有在帖子里给建议的,也有在群里提供帮助的,这里就不一一感谢了。
感谢@Paderboy 的热心帮助,他用cube配置了一个工程文件,经过测试,可行。现在将工程文件发上来,希望能够帮助到更多的朋友。最后再次感谢热心的朋友们!
F072RBT6.rar (2.67 MB, 下载次数: 359)

最佳答案

查看完整内容

楼主,我帮你用cube 建了个072RBT6的工程。。。写了个简单ADC DMA 程序和工程在压缩包里。。
收藏 1 评论26 发布时间:2015-7-25 15:18

举报

26个回答
Paderboy 回答时间:2015-7-25 15:18:29
本帖最后由 Paderboy 于 2015-7-26 11:32 编辑

楼主,我帮你用cube 建了个072RBT6的工程。。。写了个简单ADC DMA 程序和工程在压缩包里。。

F072RBT6

F072RBT6

F072RBT6-new.rar

下载

2.67 MB, 下载次数: 144, 下载积分: ST金币 -1

myFelix 回答时间:2015-7-25 17:46:50
2次采集到数据相同,应该 是读出的buf中的内容相同了,看是不是切换的太快了,导致buf覆盖。
左岸右岸 回答时间:2015-7-25 18:31:30
myFelix 发表于 2015-7-25 17:46
2次采集到数据相同,应该 是读出的buf中的内容相同了,看是不是切换的太快了,导致buf覆盖。 ...

感谢回复,不过加了延时也一样
nocoyou 回答时间:2015-7-25 20:16:53
本帖最后由 nocoyou 于 2015-7-25 20:27 编辑

为什么你用12位的跳变这么小,我的跳变很大
左岸右岸 回答时间:2015-7-25 20:29:04
nocoyou 发表于 2015-7-25 20:16
为什么你用12位的跳变这么小,我的跳变很大

你对比下我的程序看看?温飘?
creep 回答时间:2015-7-25 20:35:13
左岸右岸 发表于 2015-7-25 20:29
你对比下我的程序看看?温飘?

有没有参考“安臣”的那个帖子,问题解决了吗?
左岸右岸 回答时间:2015-7-25 20:39:00
creep 发表于 2015-7-25 20:35
有没有参考“安臣”的那个帖子,问题解决了吗?

我水平低,粗略看了下安臣大神的程序看得好累你有好的方法么
nocoyou 回答时间:2015-7-25 20:40:11
你是用内部晶振还是外部的?
左岸右岸 回答时间:2015-7-25 20:44:05
nocoyou 发表于 2015-7-25 20:40
你是用内部晶振还是外部的?

内部,我没去设置
creep 回答时间:2015-7-25 20:56:32
左岸右岸 发表于 2015-7-25 20:39
我水平低,粗略看了下安臣大神的程序看得好累你有好的方法么

我没有测试过,不过看到你的程序有点疑问。
1你的ADC能设置转换通道个数吗,比如下面的参数设置。 adc.jpg
2你使用DMA进行转换的内存地址设置为一个16进制的数据的地址,buffersize设置为2.因为你要转换的是2个通道,这里的内存地址是不是应该设置为2个16进制大小的数组(比如uint16_t ADCbuffer[2])的地址,转换完成后,一个通道存放在ADCbuffer[0],一个存放在ADCbuffer[1].
dma.jpg
我没测试过多通道ADC,不知道上面的的猜测对不对。这里有些例子可以参考
STM32F030 多通道ADC DMA读取问题
多通道ADC+DMA转换数据为零的疑惑
左岸右岸 回答时间:2015-7-25 21:28:46
creep 发表于 2015-7-25 20:56
我没有测试过,不过看到你的程序有点疑问。
1你的ADC能设置转换通道个数吗,比如下面的参数设置。
2你使 ...

好热心
1. STM32F072不能设置转换通道个数。
2.尝试过用数组存储的方法,不知是不是程序没写好,出现错位现象,有空再试试。
3.水平低,正在学习
阳光_~~ 回答时间:2015-7-26 03:13:51
DMA采样多通道我一直在用,而且效果很好的,采样率是30KHZ,不过我是自己配置的,你用库文件的函数我看不懂。
阳光_~~ 回答时间:2015-7-26 03:17:25
你对着文档看一下ADC1->CHSELR这个寄存器,你可能是ADC通道采样的顺序没配置好哦
左岸右岸 回答时间:2015-7-26 09:22:38
阳光_~~ 发表于 2015-7-26 03:17
你对着文档看一下ADC1->CHSELR这个寄存器,你可能是ADC通道采样的顺序没配置好哦 ...

好的,我去看看寄存器,谢谢哈
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版