[STM32F0] ADC采集三相电压电流,ADC0~ADC5只有前四个正确

[复制链接]
4543|31
 楼主| LSLDAY 发表于 2016-6-11 12:42 | 显示全部楼层 |阅读模式
我是采集6通道,ADC0~ADC5只有前四个通道正确,不管从后往前扫描还是,从前往后扫描,都是前四个(ADC0~ADC3)通道正确  ,好怪啊  ,不知道哪里错了
1.png
2.png
3.png
QQ截图20160611122345.png
 楼主| LSLDAY 发表于 2016-6-11 12:43 | 显示全部楼层
有遇到过同样问题的同学吗
 楼主| LSLDAY 发表于 2016-6-11 12:44 | 显示全部楼层
@zyj9490   能给个指点吗  朋友
 楼主| LSLDAY 发表于 2016-6-11 12:58 | 显示全部楼层
从  ADC0 扫描到 ADC5   ADC0~ADC3  正确        从  ADC5 扫描到 ADC0   ADC5~ADC2  正确      
zyj9490 发表于 2016-6-11 13:57 | 显示全部楼层
本帖最后由 zyj9490 于 2016-6-11 14:02 编辑
LSLDAY 发表于 2016-6-11 12:44
@zyj9490   能给个指点吗  朋友

dma的BUFFERSIZE不为6,应为12,或者用CUBE重新做一个项目初始化下试下。明显是DMA转移不出来数据啊。
 楼主| LSLDAY 发表于 2016-6-11 14:38 | 显示全部楼层
zyj9490 发表于 2016-6-11 13:57
dma的BUFFERSIZE不为6,应为12,或者用CUBE重新做一个项目初始化下试下。明显是DMA转移不出来数据啊。  ...

谢谢大哥的回复,问题我找到了 就在图片中的红色箭头处,后两个通的运算的中间变量忘记清0了,现在改过来就好了 。  不过你 说的那个DMA缓存数组应该为12  不是6   这是 为什么???
4.png
5.png
 楼主| LSLDAY 发表于 2016-6-11 14:39 | 显示全部楼层
zyj9490 发表于 2016-6-11 13:57
dma的BUFFERSIZE不为6,应为12,或者用CUBE重新做一个项目初始化下试下。明显是DMA转移不出来数据啊。  ...

后两个通道的计算中间变量忘记清0了,现在改过来就好了 。
zyj9490 发表于 2016-6-11 14:42 | 显示全部楼层
LSLDAY 发表于 2016-6-11 14:38
谢谢大哥的回复,问题我找到了 就在图片中的红色箭头处,后两个通的运算的中间变量忘记清0了,现在改过来 ...

你的AD是12位吗,一个通道占二个字节,不是12个字节吗。我是用CUBE生成初始代码的。
 楼主| LSLDAY 发表于 2016-6-11 18:47 | 显示全部楼层
是 12位的  ,但我的缓存数组   dma_init_structure.DMA_MemoryBaseAddr = (uint32_t)&adc_dma_tab[0];      
adc_dma_tab[]数组定义的 int16_t 型   所以dma的BUFFERSIZE 可以为6    不知道我这么认为是对还是错
 楼主| LSLDAY 发表于 2016-6-11 19:07 | 显示全部楼层
zyj9490 发表于 2016-6-11 14:42
你的AD是12位吗,一个通道占二个字节,不是12个字节吗。我是用CUBE生成初始代码的。 ...

是 12位的  ,但我的缓存数组   dma_init_structure.DMA_MemoryBaseAddr = (uint32_t)&adc_dma_tab[0];      
adc_dma_tab[]数组定义的 int16_t 型   所以dma的BUFFERSIZE 可以为6    不知道我这么认为是对还是错
zyj9490 发表于 2016-6-11 21:36 | 显示全部楼层
LSLDAY 发表于 2016-6-11 19:07
是 12位的  ,但我的缓存数组   dma_init_structure.DMA_MemoryBaseAddr = (uint32_t)&adc_dma_tab[0];   ...

你认为是对的,怎么是32位呢
robter 发表于 2016-6-12 07:23 | 显示全部楼层
很好的经验,学习了
LxiaoseI 发表于 2016-6-12 09:51 | 显示全部楼层
没采用计量芯片?
 楼主| LSLDAY 发表于 2016-6-12 11:24 | 显示全部楼层
zyj9490 发表于 2016-6-11 21:36
你认为是对的,怎么是32位呢

取 adc_dma_tab 数组的首地址强制转换为uint32_t类型  这个32位指的是地址的类型
 楼主| LSLDAY 发表于 2016-6-12 11:25 | 显示全部楼层
robter 发表于 2016-6-12 07:23
很好的经验,学习了

哪个经验
 楼主| LSLDAY 发表于 2016-6-12 11:26 | 显示全部楼层
zyj9490 发表于 2016-6-11 21:36
你认为是对的,怎么是32位呢

对了,请教一下   CUBE是什么??
 楼主| LSLDAY 发表于 2016-6-12 11:29 | 显示全部楼层
LxiaoseI 发表于 2016-6-12 09:51
没采用计量芯片?

嗯是的额
airwill 发表于 2016-6-12 11:33 | 显示全部楼层
看来只是软件里的初始化缺陷导致的, 路过, 恭喜楼主.
 楼主| LSLDAY 发表于 2016-6-12 12:02 | 显示全部楼层
airwill 发表于 2016-6-12 11:33
看来只是软件里的初始化缺陷导致的, 路过, 恭喜楼主.

谢谢
 楼主| LSLDAY 发表于 2016-6-12 12:05 | 显示全部楼层
airwill 发表于 2016-6-12 11:33
看来只是软件里的初始化缺陷导致的, 路过, 恭喜楼主.

才发现,原来竟是版主大人,多谢光临,不胜荣幸啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

288

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部