发 帖  
[问答] STM32F030的ADC多通道DAM方式采样
2018-10-12 08:48:34  260 STM32 adc
收藏 0 收藏 推荐 0 推荐
分享
问题描述:
1、用ADC1的CH0、CH3、CH5共3个通道单次转换后通过DMA将数据寄存器中的转换后的值放在一个16位的数组中adc_convert_tbl[3]
转换方向是:upwoard
结果:adc_convert_tbl[0]中是ch0的数据、adc_convert_tbl[1]中是ch5中的数据、adc_convert_tbl[2]中是ch3的数据。即通道数据窜位。
将ADC_DMACmd(ADC1,ENABLE)放在ADCStartConversion()之后是正常的顺序即
adc_convert_tbl[0]中是ch0的数据、adc_convert_tbl[1]中是ch3的数据。
问:如何理解将ADC_DMACmd()放后面顺序就正确了?为什么会产生通道数据窜位?
2、在ADC的序列转换完成中断中或者DMA序列传输完成终断中改变选择的通道序列,即将原来的CH0、CH3、CH5改成CH1、CH3、CH5后,通道数据窜位,CH5跑到了adc_convert_tbl[1]中,CH3在adc_convert_tbl[2]中、而adc_convert_tbl[0]中的数据出错,正常转换后的值在20以内,但是出现了1480左右的数值。在改变通道前ADC_DMACmd(DISABLE)在改变通道后ADC_DMACmd(ENABLE)结果一样。
问:为什么会出现这种情况?是不是选定了一个转换序列后就不可以在改变转换序列?为什么转换序列的第一个数据会错误?如何解决这种问题?

静待高人指点!!
2018-10-12 08:48:34   评论 邀请回答
12个回答
这个没见过,你可以单独转化每个通道,就不会错位
2018-10-12 09:04:01 1 评论

举报

1 条评论
先使能DMA,再使能ADC就没有问题.错位的原因是ADC开启后,没有及时使能DMA,到DMA使能时ADC已经转换过若干个值,与设计产生偏差.
2018-10-12 09:20:11 评论

举报

2018-10-12 09:36:44 评论

举报

在设计的时候产生的错位, 引起的数值不对
2018-10-12 09:48:56 评论

举报

序列确定后一般不要动了
2018-10-12 09:55:05 评论

举报

曾经在stm32f10x,做过多个通道的adc,都是顺利的。今天也遇到这样的问题,即使关掉dma,并将单独转化每个通道,还是会错位?单独只用一个通道都是正确的。也加了不少延时。问题没有解决。
2018-10-12 10:05:25 评论

举报

我的问题已解决。
//  ADCx->CHSELR |= (uint32_t)ADC_Channel;
  ADCx->CHSELR = (uint32_t)ADC_Channel;        //change by dupg 150429
2018-10-12 10:11:21 评论

举报

谢谢楼主分享,今天调试stm32f030的也遇到了,现已经解决。
2018-10-12 10:30:18 评论

举报

发现先开ADC_DMACmd(ADC1,ENABLE),再设置AD采样通道
        ADC_ChannelConfig(ADC1, ADC_Channel_0 , ADC_SampleTime_28_5Cycles);
        ADC_ChannelConfig(ADC1, ADC_Channel_1 , ADC_SampleTime_28_5Cycles);
        ADC_ChannelConfig(ADC1, ADC_Channel_2 , ADC_SampleTime_28_5Cycles);
        ADC_ChannelConfig(ADC1, ADC_Channel_3 , ADC_SampleTime_28_5Cycles);
        ADC_ChannelConfig(ADC1, ADC_Channel_4 , ADC_SampleTime_28_5Cycles);
        ADC_ChannelConfig(ADC1, ADC_Channel_5 , ADC_SampleTime_28_5Cycles);       
最后开ADC_Cmd(ADC1, ENABLE);就会出现错一位;如果把ADC_DMACmd(ADC1,ENABLE),放到设置AD采样通道后面就会正常。
2018-10-12 10:38:08 评论

举报

楼主程序方便发一份吗?让菜鸟学习下,812967575@qq.com
2018-10-12 10:54:07 评论

举报

Sabrina_cc 发表于 2018-10-12 15:57
这个没见过,你可以单独转化每个通道,就不会错位

大神,问个问题
如果用PA1口作为AD输入,
那么ADC转换通道怎么选择??随意选择一个通道吗?
这两个应该没有什么关系吧??
请赐教菜鸟
2018-10-12 11:05:49 评论

举报

GPIO_Config();
ADC_Config();                                //ADC-DMA-TIM1配置顺序勿改变,避免ADC数据错位
DMA_Config();
初始化时这个顺序很重要哦!!
2018-10-12 11:14:39 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

提问题
关闭

站长推荐 上一条 /9 下一条

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

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

项目|工程师创意

招聘|求职}工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

电路设计论坛

电子元器件论坛

传感技术

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

-

EDA设计论坛

multisim论坛

PCB设计论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

Orcad论坛

-

综合技术与应用

电机控制

工程资源中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

物联网技术

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

高校联盟

深圳大学电子协会

西藏民族学院电子设计协会

西安电子科技大学西电实验室

桂林电子科技大学机电工程协会

鉴鹰电子科技协会

广东海洋大学科技创新协会

福建农林大学电子科技创新协会

湖北理工学院电子技术协会

深圳职业技术学院电子精英训练营

浙江科技学院Zuster

湘潭大学电子科技协会

青岛理工大学琴岛学院天宏开发团队

河南理工大学大学生电器开发部

广西科技大学电气信息创新协会

浙江机电职业技术学院电子制作协会

郑州大学西亚斯国际学院爱电工作室

新乡学院电子创新工作室

洛阳理工学院SmartTeam

苏州工业职业技术学院创新工作室

浙江工业大学GC315团队

杭电-微芯大学生科技创新孵化器

西安工业大学电信科协

商洛学院科技创新协会

大连民族学院创新工作室

南京信息工程大学帆木工作室

-

供求信息发布

方案交易

供需广告

芯片求购|供应发布区