单片机
返回首页

stm32 双adc 采集问题 dma数据有一个没有 adc2为0

2016-07-27 来源:eefocus

配置那些就不说了,我这里是同步规则采样,共4通道:

 

[cpp] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. /* Regular ChannelÉèÖòɼ¯Ë³ÐòºÍʱ¼ä.ÉèÖóÉË«adcºó,dmaÓÃ32bit´«Êä,µÍ16bitÊÇadc1ͨµÀ,¸ß16bitÊÇadc2ͨµÀ */  
  2.     ADC_RegularChannelConfig(ADC1, CH0_ADL1,   1, ADC_SampleTime_13Cycles5);//0  
  3.     ADC_RegularChannelConfig(ADC1, CH1_ADL2,    2, ADC_SampleTime_13Cycles5);// 2  
  4.     ADC_RegularChannelConfig(ADC1, CH8_ADR1, 3, ADC_SampleTime_13Cycles5);// 4  
  5.     ADC_RegularChannelConfig(ADC1, CH9_ADR2,   4, ADC_SampleTime_13Cycles5);//6  
  6.   
  7.   
  8.     /* Regular Channel */  
  9. ADC_RegularChannelConfig(ADC2, CH9_ADR2,1, ADC_SampleTime_13Cycles5);// 1  
  10. ADC_RegularChannelConfig(ADC2, CH8_ADR1,  2, ADC_SampleTime_13Cycles5);// 3  
  11.     ADC_RegularChannelConfig(ADC2, CH1_ADL2,    3, ADC_SampleTime_13Cycles5);//5  
  12.     ADC_RegularChannelConfig(ADC2, CH0_ADL1, 4, ADC_SampleTime_13Cycles5);//7  


 

使用的是ac连续采样,dma连续搬运模式。注意点如下:

1、数组要定义为u32的,例如u32 buf[4],不要定义为u16 buf[8],经过测试,如果使用 u16 buf[8] 最后一个16bit buf[7]会为0,不知道为什么。

2、adc2有2种方式可以启动,一种是:

ADC_ExternalTrigConvCmd(ADC2,ENABLE);   /*adc2¹æÔòͨµÀÍⲿ´¥·¢ */

另一种是:

ADC_SoftwareStartConvCmd(ADC2,ENABLE);

这2种方法会带来一个不同的结果,细分析如下:

如上所述转换序列,正常情况是buf32[0] & 0xFFFF与(buf32[3]>>0xFFFF)是同一组数据,拿buf16[8]来说就是buf16[0]、buf[7]是一组数据,可是改变adc2的触发方式有什么区别呢?

================使用buf16[8] + ADC_SoftwareStartConvCmd(ADC2,ENABLE);方式===============

此组合可以得到正确的数组对应方式,即dma搬来的数据与我们预期的是对应的。但是buf16[7]=0

 

================使用buf16[8] + ADC_ExternalTrigConvCmd(ADC2,ENABLE);方式===============

此组合不可以得到正确的数组对应方式,即dma搬来的数据与我们预期的是不对应的。而且buf16[7]=0

 

================使用buf32[4] + ADC_SoftwareStartConvCmd(ADC2,ENABLE);方式===============

此组合不可以得到正确的数组对应方式,即dma搬来的数据与我们预期的是不对应的。

================使用buf32[4] + ADC_ExternalTrigConvCmd(ADC2,ENABLE);方式===============

此组合可以得到正确的数组对应方式,即dma搬来的数据与我们预期的是对应的。


好,这就是我的调试心得,大家避免注意下就好了。

这里有一个单ADC同步规则+同步注入的例子:http://www.csdn123.com/html/itweb/20130801/33722_33714_33696.htm。

貌似单个ADC好用,两个的同步注入有问题????

 

===========继续补充20160419================

之前的注入通道数据有问题,把他的采样率该慢点就可以了,视自己情况而定,慢慢调试吧!

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 用数字电路CD4069制作的万能遥控轻触开关

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

    相关电子头条文章