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

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, 下载次数: 374)

最佳答案

查看完整内容

楼主,我帮你用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, 下载次数: 147, 下载积分: 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版